ドルフィンシステム移転完了しました。

【見える化】RSSI値と位置情報と動画を同期して表示する方法

こんにちはドルフィンシステム福島です。
先週は出張のためメールニュースをお休みいたしましたが、昨日、無事帰って参りました。

出張では「ドローン+USRP+高精度位置情報(RTK)」を駆使した実験を行い、面白いデータを取得することが出来ました!
こちらの内容は別途調整の上、日を改めてご紹介したいと思います。

複数のデータを並べて時系列で表示、分析する

複数のデータを並べて時系列で表示、分析するという用途に便利なアプリが、NIの「DIAdem」です。
このDIAdemを使用すると、「収録したRSSI値と位置情報をマップ上にプロットし、さらに動画も同期して表示する」というデータのマッシュアップがクリックしていくだけで出来てしまうのです。

まるで夢のようではありませんか。

今日は長くなりますが、一回ですべてをご説明します。




DIAdemの評価版ダウンロードはこちら。

GPSデータ(NMEA)をDIAdemで読み込む

まずDIAdemを起動します(今回使用したバージョンは2018です)。
起動した画面にはPCのドライブやフォルダツリーが表示されており、ここから開くデータを選択します。

データを開くと、ウィンドウ右側のデータポータルに読み込まれます。MATLABで言うところのワークスペースと同じように読み込んだデータを見ることが出来ます。

起動時にはダミーのデータが読み込まれています。



まずデータポータルにあるデフォルトのデータを削除します。(クリックしてDeleteキー)


ここに収録したGPSデータ(NMEAファイル。拡張子は.nmeaにしておく)をD&Dします。

するとGPSのデータとして読み込まれました。

どのようなデータが読み込まれたか確認してみましょう。
「Elevation」をクリックすると、下側に最大値・最小値が表示されます。「長さ(データの個数)」が1597という事が分かります。また最下段にプレビューグラフも表示されます。

ウィンドウ左端の「VIEW」をクリックすると、上側に何も表示されていないグラフエリア、下側にExcelのようなテーブルが表示されます。テーブルには、NMEAファイルから読み込んだ値が表示されています。

GPSデータの位置情報をマップに表示する

では次にこのNMEAの位置情報をマップに表示してみます。
データポータルの"GPS NMEA Data"を選択してから、ウィンドウ左側の「ANALYSIS」をクリックし、「チャンネル関数」→「数値チャンネルの生成」をクリックします。

開始値 : 1
終了値 : 1597 (データの個数)
値の数 : 1597
としてOKボタンを押します。

すると「LinearGenerated」という1~1597までインクリメントしたデータが作成されます。
(連番のデータが後々必要になるので作成しました)


次に下側のテーブルエリアを右クリックして、表示形式→マップを選択して、テーブルからマップに表示を変更します。
で、マップを右クリックして「表示」を選択。

走行ルート同期 : LinearGenerated
経度 : Longitude
緯度 : Latitude
カラーチャンネル : Elevation
を選択してOKボタンを押します。

するとマップが更新され、軌跡が表示されます。
軌跡の色は、上記で設定したElevationなので高度が色で表現されています。カラーチャンネルをElevationではなくSpeedを選択すると移動速度が色分けされて表示させることが出来ます。

次にデータポータルにある「Elevation」をグラフエリアにドラッグ&ドロップすると、高度のグラフが表示されます。
この状態でウィンドウ上側の再生ボタンを押すと、 まるで動画のように刻々と位置を表すマーカーが移動していき、同時に上側のグラフにも現在の値が表示されます。

RSSI値も読み込む

GPSデータ(NMEA)とRSSIのデータファイルが分かれている場合でもDIAdemなら簡単に同時に表示させることが出来ます。

今回説明に使用するRSSIデータは、Excelで以下の様にしてランダム値を作成しCSVに出力します。

これをデータポータルにドラッグ&ドロップすると、読み込まれます。

データポータルのRSSIをグラフエリアにドラッグ&ドロップすると、先ほど表示したElevationとRSSIが一緒に表示できました。

ちなみにグラフは、上図のように一つのY軸で表示することも出来ますし、下図のようにグラフを分けて表示することも出来ます。

マップを右クリック→表示→カラーチャンネル→RSSI
とすると、地図の軌跡の色がRSSIになります。

こんな感じですね。先ほどはElevationで色分けしていましたがRSSIに変更するのも簡単です。(ランダムなRSSIなので急激に変化していますが・・・)

データの個数を調整する

GPSデータ(NMEA)は、デフォルトでは1秒間に1つの位置情報が記録されます。1Hzですね。
でも例えばRSSIの更新タイミングが違い位置情報とRSSIの個数が違う場合はどうしたら良いでしょうか?

ウィンドウ左側の「ANALYSIS」をクリックし、「チャンネル関数」→「リサンプリング」をクリックします。
入力チャンネル X : LinearGenerated
入力チャンネル Y : RSSI
として「計算」ボタンを押すと、RSSIの配列をリサンプリングしてLinearGeneratedと同じサンプル数に拡張もしくは縮小してくれます。
これでデータ個数を合わせることが出来ます。



リサンプルデータは、元のRSSIデータと別の配列に作成されるので安心です。
またDIAdemはオンメモリで操作を行うので、元のファイルも変更されません。


データの先頭を合わせる

上記の説明ではGPSデータ(NMEA)とRSSIデータは同期しているものとして扱いました。
つまりRSSIデータの最初の値はGPSデータ最初の位置の時のRSSIである、という前提です。
データの頭を揃える方法もDIAdem上で行うことも出来ますが、事前にデータファイルの先頭は揃えておいた方が良いでしょう。

動画も読み込む

GPSデータやRSSIと同時に動作も録画しておくと、同期して再生することが出来ます。
ウィンドウ下側のマップを右クリック→新規領域→ビデオを選ぶと、ビデオ選択ダイアログが表示されますので、表示する動画ファイルを選択します。

すると以下の様に、グラフ・マップ・動画の3つが同期して再生することが出来ます!
簡単ですね!




動画とデータの頭出しは、ビデオ→右クリック→表示、で表示されるダイアログで設定できます。
ビデオの開始が遅い場合は、開始時間に120等とすると120秒遅いものとして再生されます。
またGPSデータ(NMEA)が10Hzの場合は、フレームレートを1/10にします。
下図では、29.99fpsになっていますが、1/10なので2.99fpsにするとNMEAと同じスピードで同期して再生されます。



高速に再生する

デフォルトではリアルタイム(一つのデータを1秒として再生)しますが、高速に再生する場合はツールバーのカーソルパラメータで、速度を変更します。
以下なら10倍速で再生します。


まとめ

今回の記事をご覧になってDIAdemを使うシーンが頭に思い浮かびましたでしょうか?

今回は「位置情報、RSSI、動画」の同期再生をご紹介しましたが、DIAdemにはもっと便利な機能もあります。
3Dモデリングの表示機能もありますので、アンテナパターンを表示することも出来るでしょう。
またロードしたデータをFFTやフィルタを欠けることも出来ますし、リポート機能で作成したグラフのリポート作成も出来ます。

一番簡単で分かりやすい使い方は「大量のデータのグラフ表示」です。

Excelで大量のデータのグラフを表示させると描画が重くて止まったようになりますよね?

DIAdemではそのようなことはありません。
これだけでも購入する価値はあります。

ドルフィンシステムでは、信号処理の実装技術やSDR意外にもDIAdemのようなツールを使いながら効率的に開発を行っています。




コメント