センサー データのストリーミング
センサーの制御とデータの取得
この例では、モバイル デバイス センサーを制御し、それらからデータを収集するための単純なワークフローを示します。
この例では、MATLAB® Mobile™ をモバイル デバイスにインストールして設定し、MathWorks Cloud に接続済みであると仮定します。それを行っていない場合は、お使いのデバイスへの MATLAB Mobile のインストールを参照してください。
モバイル デバイス上で MATLAB Mobile を起動します。
指示があった場合は、クラウドにサインインします。
[センサー] 画面でトグル スイッチを使用して、データの送信元のセンサーをオンにします。
センサーの設定で、[ストリーム先] をタップしてから [MATLAB] を選択します。
センサー データを取得する場所にデバイスを配置します。
MATLAB で、
mobiledev
オブジェクトm
を作成します。m = mobiledev
m = mobiledev with properties: Connected: 1 Available Cameras: {'back' 'front'} Logging: 0 InitialTimestamp: '' AccelerationSensorEnabled: 1 AngularVelocitySensorEnabled: 1 MagneticSensorEnabled: 1 OrientationSensorEnabled: 1 PositionSensorEnabled: 1 Supported functions
この画面で、
1
の値は有効またはオン、0
は無効またはオフを意味します。この例では、デバイスとクラウドが接続していて、すべてのセンサーが有効 ([センサー] 画面) であるものの、データはまだログ記録されていないことが確認できます。このデバイスには 5 つすべてのセンサーが含まれていますが、お使いのデバイスはそうではない場合があります。お使いのデバイスに特定のセンサーが含まれていない場合、そのセンサーには常に0
が表示されます。ログ記録されているデータがまだないため、タイムスタンプは空です。InitialTimestamp
は、mobiledev
が受信した最初のデータ点のタイムスタンプです。すべてのセンサーのその他すべてのタイムスタンプは、InitialTimestamp
を基準とします。Logging
プロパティを設定して、選択したセンサーからのデータのログ記録を開始します。m.Logging = 1
この操作により、選択したすべてのセンサーからのデータ送信が始まります。デバイス上の MATLAB Mobile で [開始] ボタンをタップして送信を開始することもできます。
データのログ記録を開始したら、関数
disp
を使用してmobiledev
オブジェクトを確認します。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
この画面で、デバイスとクラウドが接続していて、データのログ記録中であることが確認できます。また、
InitialTimestamp
プロパティの値とセンサーの値が表示され、オブジェクトを作成した時点の測定値が示されていることも確認できます。データをログ記録している間に、センサーの読み取り値のプロパティを使用して、任意のセンサーの現在の値を表示することができます。
Acceleration
、AngularVelocity
、Orientation
、MagneticField
の各プロパティは、それぞれのセンサーの現在の読み取り値を表示します。位置センサーがログ記録している場合は、Latitude
、Longitude
、HorizontalAccuracy
、Altitude
、Course
、Speed
の各プロパティを使用して、個々の位置の読み取り値を取得できます。たとえば、オブジェクト
m
から加速度センサーの読み取り値を取得するには、以下のようにします。m.Acceleration
ans = 0.6945 -0.2579 9.9338
位置センサーから経度の読み取り値を取得するには、以下のようにします。
m.Longitude
ans = -71.3517
センサーのオンとオフは MATLAB のセンサー制御プロパティを使用して切り替えることができます。制御プロパティを使用することは、MATLAB Mobile でセンサー ボタンを切り替えることと同じです。制御プロパティにはそれぞれ 2 つの値があります。オンまたは有効の場合は
1
、オフまたは無効の場合は0
です。たとえば、MATLAB から加速度センサーをオフにするには、以下のようにします。m.AccelerationSensorEnabled = 0
加速度センサーをオンに戻すには、以下のようにします。
m.AccelerationSensorEnabled = 1
センサー データのログ記録を停止します。
m.Logging = 0
手順 7 で示したように、センサー読み取り値のプロパティを使用して、データをログ記録中にセンサーの現在の値を取得することができます。すべての読み取り値のログ全体を表示する場合は、ログ関数を使用します。これらの関数は、データをログ記録中、または停止後に使用できます。センサー タイプごとにログ関数が 1 つずつあります。たとえば、
accellog
は、加速度センサーからのログ記録された加速度データを返します。ログ記録された加速度データをオブジェクト
m
から取得するには、ログ記録された加速度データを変数a
に、タイムスタンプをt
に代入します。[a, t] = accellog(m);
これで、データのプロットや、その他のデータ処理を行うことができます。
セッションが完了したら、オブジェクトを削除します。
clear m