ちょっとすごいロガー(Ninja Scan Lite)リンク
”ちょっとすごいロガー”はとても小さい動き計測のためのロガーです。3軸加速度、3軸ジャイロ、3軸地磁気、気圧高度計、GPS受信機のデータをSDカードに保存したり、USBを通してPCと通信したり、(ファームウェアを改造すれば)シリアル通信で他の機器と(例えば無線機など)通信できるオープンソースハードウェアな計測器です。センサの数は多く、でも機能はログを取るだけに絞ったものです。
3つ目のが今回の作ったものの置き場です。
作ったもの
ちょっとすごいロガー(NinjaScanLite)の開発で、一般販売するにあたって、黒い画面でコマンドをガシガシ打ち込んで使えおらぁ!っていうオラオラ系も味がありますが、ゆるふわな感じも大事です。
なので、ちょっとすごいロガーのGUIフロントエンドをC#で作りました。一般公開して、広く使ってもらえるようにしようとしています。exeファイルは後日公開予定。
上にも貼っていますが、開発状況は以下で。
https://github.com/ina111/NinjaScan_GUI
機能
- ちょっとすごいロガーのUSBから出力されるバイナリデータ(Sylphideプロトコル)のストリームをパースする機能
- youtube動画のようにリアルタイムで値をグラフで出力する機能
- SDカードに保存されているLOG.DATというバイナリファイル(Sylphideフォーマット)をCSV形式に変換
- (GPSから得られる位置情報をGoogleEarth上に表示)
Visual Studio2013だとExpressでもNugetが使えるようになっていて、ライブラリが楽に管理できるので、捗ります。
使っているもの
- Sylphideフォーマット :転送や保存のデータ量の圧縮のためにセンサデータはASCIIのような読みやすい形式ではなく、バイナリデータにしてあります。なので、デコードする必要があります。C#にはBinaryStreamというクラスがあるので、Sylphideフォーマットにしたがってクラスを作ってパースしています。Sylphideフォーマットを使っているHPA NaviやTiny Featherなどとはセンサの違いなどのため、完全な互換性はありません。
- Math.net Numerics :数値計算とか行列計算のライブラリ。補間とか色々便利。Nugetから。
- ZedGraph :グラフライブラリ。timerのイベントでグラフを再描写してリアルタイムグラフにしている。Nugetで入れました。
- OpenTK :(未実装)OpenGLのC#のフレームワーク。姿勢の表示とかやろうかと。Nugetにもあるが、HPからダウンロードしないと使えませんでした。
- GoogleEarthAPI :GoogleEarthAPIはJavaScriptなので、やりたい命令を関数として書いたJavaScriptが入っているhtmlファイルを用意して、C#から下記のようにするとJavaScriptの中の関数が実行されるので、カメラ動かしたりできます。
webBrowser1.Document.InvokeScript("js_func", args);
計測器、ロガーはとにかく足回りの整備です。これを使った色々が出てきてくれるとやりがいがあるなぁ。