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 が表示されます。

    InitialTimestamp は、mobiledev が受信した最初のデータ点のタイムスタンプです。すべてのセンサーのその他すべてのタイムスタンプは、InitialTimestamp を基準とします。

  3. 1 つ以上のセンサーを有効にします。

    m.MagneticSensorEnabled=1

    位置センサーを使用している場合は、デバイスの [設定] で MATLAB の位置情報へのアクセスをオンにします。

  4. mobiledev オブジェクトの Logging プロパティを有効にすることにより、選択したセンサーからのデータのログ記録を開始できます。

    m.Logging = 1

    この操作により、選択したすべてのセンサーからのデータ送信が始まります。

    データのログ記録を開始後は、オブジェクトの現在の値が画面に表示されます。

    disp(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)
                                                                     
    Supported functions
  5. この画面で、デバイスとクラウドが接続していて、データのログ記録中であることが確認できます。さらに、InitialTimestamp プロパティの値とセンサーの値が表示され、オブジェクトを作成した時点の測定値が示されます。

  6. mobiledev プロパティを使用してデバイス センサーの収集を制御します。

  7. センサー データのストリーミングを停止するには、Logging プロパティをリセットするか、mobiledev オブジェクトを削除します。

    clear m

センサーの収集の制御

MATLAB Mobile™ には、現在のセンサー値の表示、センサーの有効と無効の切り替え、ログのオンとオフの切り替え、サンプル レートの設定、および接続ステータスとログのステータスの表示を行うプロパティがあります。

以下のプロパティを mobiledev オブジェクトと共に使用できます。

プロパティ説明と値
Connected

MATLAB Mobile と MATLAB の mobiledev オブジェクトとの間の接続ステータスを表示します。読み取り専用です。使用可能な値は、0 (接続なし) と 1 (接続あり) です。mobiledev オブジェクト m の接続のステータスを表示するには、以下のように指定します。

m.Connected

Logging

デバイスから MATLAB へのデータ転送のステータスを表示および制御します。使用可能な値は 0 (ログなし) と 1 (ログあり) です。mobiledev オブジェクト m のログのステータスを表示するには、以下のように指定します。

m.Logging

ログのオンとオフを切り替えるには、以下のようにします。

m.Logging = 1 または m.Logging = 0

InitialTimestamp

最初のデータ点がデバイスから mobiledev オブジェクトへ転送された時間 (ミリ秒単位、dd-mm-yyyy HH:MM:SS.FFF 形式)。mobiledev オブジェクト m の初期タイムスタンプを表示するには、以下のようにします。

m.InitialTimestamp

SampleRate

デバイスからの取得のサンプル レート (Hz 単位)。値は double で、0 ~ 100 Hz の範囲でなければなりません。既定のサンプル レートは 10 Hz です。特定の数値を設定する他に、文字ベクトル値 'high''medium'、および 'low' を使用することもできます。それぞれの値は以下のとおりです。

high 100 Hz

medium 10 Hz

low 1 Hz

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 プロパティは読み取り専用であり、MATLABMobile と MATLAB の mobiledev オブジェクトとの間の接続ステータスを表示します。使用可能な値は、0 (接続なし) と 1 (接続あり) です。

mobiledev オブジェクト m の接続のステータスを表示するには、以下のように指定します。

m.Connected

Logging プロパティは、デバイスから MATLAB へのデータ転送のステータスを表示します。使用可能な値は 0 (ログなし) と 1 (ログあり) です。

mobiledev オブジェクト m のログのステータスを表示するには、以下のようにします。

m.Logging

Logging プロパティも、ログを有効または無効にするために使用します。選択したセンサーからのデータのログ記録を開始するには、このプロパティを有効にします。

m.Logging = 1

この操作により、選択したすべてのセンサーからのデータ送信が始まります。MATLAB Mobile[開始] ボタンをタップして送信を開始することもできます。

選択したセンサーからのデータのログ記録を停止するには、Logging プロパティを無効にします。

m.Logging = 0

この操作により、選択したすべてのセンサーからのデータの送信が停止します。MATLAB Mobile[停止] ボタンをタップして送信を停止することもできます。

センサー読み取り値のプロパティ

センサー読み取り値のプロパティを使用して、センサーの現在の読み取り値を表示します。ログ記録されているどのセンサーに関しても、現在の読み取り値をいつでも表示できます。AccelerationAngularVelocityOrientationMagneticField の各プロパティは、それぞれのセンサーの現在の読み取り値を表示します。位置センサーがログ記録している場合は、LatitudeLongitudeSpeedCourseAltitudeHorizontalAccuracy の各プロパティを使用して、個々の位置の読み取り値を取得できます。

センサーから現在の値を取得するには、<objectname>.<propertyname> を使用します。たとえば、オブジェクト m から加速度の読み取り値を取得するには、以下のようにします。

m.Acceleration

位置センサーから経度の読み取り値を取得するには、以下のようにします。

m.Longitude

デバイスを基準とした X 軸、Y 軸、Z 軸を示す図については、デバイスの向きを参照してください。

センサー制御プロパティ

MATLAB Mobile には、センサーを制御するための 5 つのプロパティがあります。MATLAB Mobile でセンサー ボタンを選択するか、選択解除することによって同じアクションを実行することもできます。制御プロパティにはそれぞれ 2 つの値があります。オンまたは有効の場合は 1、オフまたは無効の場合は 0 です。

たとえば、加速度センサーをオンにするには、以下のようにします。

m.AccelerationSensorEnabled = 1

加速度センサーをオフにするには、以下のように指定します。

m.AccelerationSensorEnabled = 0

サンプル レート プロパティ

このプロパティは、デバイスからのデータ取得のサンプル レート (Hz 単位) です。値は double で、0 ~ 100 Hz の範囲の正の数値でなければなりません。既定のサンプル レートは 10 Hz です。

特定の数値を設定する他に、文字ベクトル値 'high''medium' および 'low' を使用することもできます。これらの設定では以下の値を使用します。

  • high – 100 Hz

  • medium – 10 Hz

  • low – 1 Hz

サンプル レートは、データのログ記録を開始後でも変更できます。たとえば、mobiledev オブジェクト m に関してサンプル レートを特定の値 (Hz 単位) に変更するには、以下のようにします。

m.SampleRate = 100

サンプル レートをいずれかの文字ベクトル値に変更するには、以下のようにします。

m.SampleRate = 'low'

R2016a 以降は、文字ベクトル値を使用するか、数値を指定することができます。

関連するトピック