Main Content

使用 MATLAB 对象属性流式传输传感器数据

此示例说明如何通过 WiFi 或蜂窝连接将移动设备数据流式传输到在 MathWorks® Cloud 上或您的计算机上运行的 MATLAB®。要与移动设备通信并从传感器采集数据,您需要在 MATLAB 中创建 mobiledev 对象。在创建该对象之前,您无法记录传感器数据。

启用传感器数据流式传输

如果出现提示,请登录到您的 MathWorks Cloud。

  1. 将设备放置在您要采集传感器数据的位置。

  2. 在 MATLAB 中,创建一个 mobiledev 对象 m

    m = mobiledev
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 0
                InitialTimestamp: ''
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Supported functions

    在创建该对象时显示的画面中:

    • 0 - 表示未启用、关闭或传感器在此设备上不可用。

    • 1 - 表示启用或打开。

    在此示例中,您可以看到设备和 mobiledev 对象已连接,但传感器未启用(所有传感器值均为 0),数据尚未记录(InitialTimestamp 属性为空)。如果您的设备没有某个传感器,则在显示的内容中,该传感器始终为 0

    InitialTimestampmobiledev 收到的第一个数据点的时间戳。所有传感器的所有其他时间戳都与 InitialTimestamp 相关。

  3. 启用一个或多个传感器。

    m.MagneticSensorEnabled=1

    如果您正在使用位置传感器,请在设备的“设置”中打开 MATLAB 的位置访问。

  4. 通过启用 mobiledev 对象的 Logging 属性,您可以开始记录来自选定传感器的数据。

    m.Logging = 1

    该操作开始传输来自所有选定传感器的数据。

    开始记录数据后,请等 1 秒钟以便系统进行数据采集,然后查看对象以了解最新的传感器值。

    pause(1)
    m
    mobiledev with properties:
    
                       Connected: 1
               Available Cameras: {'back' 'front'}
                         Logging: 1
                InitialTimestamp: '06-08-2014 13:45:56.529'
    
       AccelerationSensorEnabled: 1
    AngularVelocitySensorEnabled: 1
           MagneticSensorEnabled: 1
        OrientationSensorEnabled: 1
           PositionSensorEnabled: 1
    
    Current Sensor Values:
                    Acceleration: [0.27 0.23 -10.19]  (m/s^2)
                 AngularVelocity: [-0.22 0.07 0.06]   (rad/s)
                   MagneticField: [3.56 1.56 -48.19]  (microtesla)
                     Orientation: [85.91 -27.1 0.35]  (degrees)
    
           Position Data: 
                        Latitude: 41.29  (degrees)
                       Longitude: -72.35  (degrees)
                           Speed: 25  (m/s)
                          Course: 83.6  (degrees)
                        Altitude: 200.1  (m)
              HorizontalAccuracy: 9.0  (m)
  5. 在显示的内容中,您可以看到设备和 Cloud 已连接,现在正在记录数据。此外,还会显示 InitialTimestamp 属性值和传感器值,指示创建对象时的当前测量值。

  6. 使用 mobiledev 属性控制设备传感器采集。

  7. 要停止流式传输传感器数据,请重置 Logging 属性或删除 mobiledev 对象。

    clear m

控制传感器采集

MATLABMobile™ 包含一些属性,可用于显示当前传感器值,启用或禁用传感器,打开和关闭日志记录,设置采样率以及显示连接和日志记录状态。

您可以对 mobiledev 对象使用以下属性。

属性描述和值
Connected

在 MATLAB 中显示 MATLABMobilemobiledev 对象之间的连接状态。只读。值包括:0 表示未连接,1 表示已连接。要显示 mobiledev 对象 m 的连接状态,请输入以下命令:

m.Connected

Logging

显示和控制从设备到 MATLAB 的数据传输的状态。值包括 0 表示不记录,1 表示记录。要显示 mobiledev 对象 m 的日志记录状态,请输入以下命令:

m.Logging

要打开或关闭日志记录,请使用以下命令:

m.Logging = 1m.Logging = 0

InitialTimestamp

第一个数据点从设备传输到 mobiledev 对象的时间,以毫秒为单位,采用 dd-mm-yyyy HH:MM:SS.FFF 格式。要显示 mobiledev 对象 m 的初始时间戳,请使用以下命令:

m.InitialTimestamp

SampleRate

从您的设备采集数据的采样率,以赫兹为单位。该值是双精度值,且必须介于 0 到 100 赫兹之间。默认采样率为 10 赫兹。除设置具体的数值外,您还可以使用字符向量值 'high''medium''low',其对应的值如下:

high:100 赫兹

medium:10 赫兹

low:1 赫兹

Acceleration

XYZ 坐标中的当前加速度读数,单位为 m/s^2(米/平方秒)。

加速度是根据 XYZ 轴定义的。如果将设备正面朝上放置在桌子上,正 X 轴从设备右侧伸出,正 Y 轴从顶端伸出,正 Z 轴从设备正面向上伸出。这与设备的方向无关。

AngularVelocity

XYZ 旋转的当前角速度读数,以弧度/秒为单位。

角速度是根据 XYZ 轴以及标准右手螺旋矢量法定义的。如果将设备正面朝上放置在桌子上,正 X 轴从设备右侧伸出,正 Y 轴从顶端伸出,正 Z 轴从设备正面向上伸出。这与设备的方向无关。

Orientation

当前方向读数的 XYZ 坐标分量,即方位、俯仰和滚转分量,单位为度。

方向是根据 XYZ 轴定义的。如果将设备正面朝上放置在桌子上,正 X 轴从设备右侧伸出,正 Y 轴从顶端伸出,正 Z 轴从设备正面向上伸出。这与设备的方向无关。

方位是正 Y 轴和磁场北向之间的角度,其范围在 -180 度和 180 度之间。

正向滚转定义为当设备平放在平面上时正 Z 轴向正 X 轴方向倾斜,其范围在 -180 度和 180 度之间。

正向俯仰定义为当设备平放在平面上时正 Z 轴向正 Y 轴方向倾斜,其范围在 -90 度和 90 度之间。

MagneticField

XYZ 坐标中的当前磁场读数,以微特斯拉为单位。

磁场是根据 XYZ 轴定义的。如果将设备正面朝上放置在桌子上,正 X 轴从设备右侧伸出,正 Y 轴从顶端伸出,正 Z 轴从设备正面向上伸出。这与设备的方向无关。

Latitude

相对于赤道的当前纬度读数,以度为单位,正值表示赤道以北的纬度。

Longitude

相对于零子午线的当前经度读数,以度为单位,正值表示子午线以东的经度。

HorizontalAccuracy

当前水平精度,定义为围绕经纬度点的圆环半径,以米为单位。

Altitude

高出海平面的当前海拔海拔读数,以米为单位。

Course

相对于正北方向的当前航向读数,以度为单位。

Speed

当前速度读数,单位为 m/s(米/秒)。

AccelerationSensorEnabled

打开或关闭加速度传感器。

要打开或关闭传感器,请使用以下命令:

m.AccelerationSensorEnabled = 1

m.AccelerationSensorEnabled = 0

AngularVelocitySensorEnabled

打开或关闭角速度传感器。

要打开或关闭传感器,请使用以下命令:

m.AngularVelocitySensorEnabled = 1

m.AngularVelocitySensorEnabled = 0

MagneticSensorEnabled

打开或关闭磁场传感器。

要打开或关闭传感器,请使用以下命令:

m.MagneticSensorEnabled = 1

m.MagneticSensorEnabled = 0

OrientationSensorEnabled

打开或关闭方向传感器。

要打开或关闭传感器,请使用以下命令:

m.OrientationSensorEnabled = 1

m.OrientationSensorEnabled = 0

PositionSensorEnabled

打开或关闭位置传感器。

要打开或关闭传感器,请使用以下命令:

m.PositionSensorEnabled = 1

m.PositionSensorEnabled = 0

对象属性

Connected 属性是只读的,在 MATLAB 中显示 MATLAB Mobilemobiledev 对象之间的连接状态。值包括:0 表示未连接,1 表示已连接。

要显示 mobiledev 对象 m 的连接状态,请使用以下命令:

m.Connected

Logging 属性显示从设备到 MATLAB 的数据传输状态。值包括 0 表示不记录,1 表示记录。

要显示日志记录的状态,请对 mobiledev 对象 m 使用以下命令:

m.Logging

Logging 属性还可用于启用和禁用日志记录。要开始记录选定传感器的数据,请启用该属性。

m.Logging = 1

该操作开始传输来自所有选定传感器的数据。您也可以点击 MATLABMobile 中的开始按钮开始传输。

通过禁用 Logging 属性,您可以停止记录来自选定传感器的数据。

m.Logging = 0

此操作将停止传输来自所有选定传感器的数据。您也可以点击 MATLABMobile 中的停止按钮停止传输。

传感器读数属性

使用传感器读数属性显示传感器的当前读数。您可以随时显示正在记录的任何传感器的当前读数。AccelerationAngularVelocityOrientationMagneticField 属性分别显示其传感器的当前读数。如果位置传感器正在记录数据,您可以使用 LatitudeLongitudeSpeedCourseAltitudeHorizontalAccuracy 属性获取单个位置读数。

要从传感器获取当前值,请使用 <objectname>.<propertyname>。例如,要获取对象 m 的加速度读数,请使用以下命令:

m.Acceleration

要从位置传感器获取经度读数,请使用以下命令:

m.Longitude

请参阅设备方向,查看 XYZ 轴相对于设备的方位图。

传感器控制属性

MATLABMobile 有五个用于控制传感器的属性。您可以通过选择或取消选择 MATLABMobile 中的传感器按钮来执行相同的操作。每个控制属性包含两个值:1 表示打开或已启用,0 表示关闭或已禁用。

例如,要打开加速度传感器,请使用以下命令:

m.AccelerationSensorEnabled = 1

要关闭加速度传感器,请使用以下命令:

m.AccelerationSensorEnabled = 0

采样率属性

该属性是从您的设备采集数据的采样率,单位为赫兹。该值是双精度值,且必须是介于 0 到 100 赫兹范围内的正数。默认采样率为 10 赫兹。

除设置具体的数值外,您还可以使用字符向量值 'high''medium''low'。这些设置使用以下值:

  • high:100 赫兹

  • medium:10 赫兹

  • low:1 赫兹

即使在开始记录数据后,您也可以更改采样率。例如,要将 mobiledev 对象 m 的采样率更改为特定的值(以赫兹为单位),请使用以下命令:

m.SampleRate = 100

要将采样率更改为字符向量值之一,请使用以下命令:

m.SampleRate = 'low'

从 R2016a 开始,您可以使用字符向量值或指定数值。

相关主题