« Bluetoothによるシリアル通信のワイヤレス化 | トップページ | AnalogDiscovery買いました »

Scilabによるデータの可視化

ロボットづくりにおいて、ロボットが持つデータを人間にとってわかりやすい形で表示できることは大切だと私は考えています。
なぜなら、ロボットのソフトウェア修正やパラメータ調整を素早く済ませられるからです。
さて今回は、ロボットが持つデータをScilabでグラフ化するコードを公開します。
シリアル通信経由でロボットからScilabにデータを送り、グラフを表示します。
まず環境を整えるために、Windowsマシンに、Scilab 32bit版をインストールした後、以下のサイトを参考にして"Serial Communication Toolbox"をインストールしてください。
2ca9dd5aacada6363a2643f8df1bd38b_2図1 ATOMSでSerial Communication Toolboxをインストール

ロボットとPCは、以下のようにRS232-Cによるシリアル通信で接続してください。

_15_011
図2 PCとロボットの接続
ロボット側のソフトは省略しますが、以下の設定でロボットがPCへ向けてテキストを送信できるようにしておいてください。
--------
ボーレート:19200bps
パリティ:none
データビット:8bit
ストップビット:1bit
フロー制御:none
--------
ポート番号は仮にCOM4としていますが、環境にあわせてOpenSerial.sce(後述)の1行目の数字を変更してください。

今回公開するソフトは次の流れで動作します。
 1.Scilab側でデータ受信待ちを開始
 2.ロボット側からデータを送信
 3.タイムアウト設定の5秒経過後、受信したデータを画面にグラフで表示
Scilab側からの制御は一切なしで、ロボット側から一方通行でデータ送信します。
データの形式は、以下のカンマで区切った数値(CSV)形式とします。データの個数は仮に100個とします。
"x1,x2,x3 … x99,x100"
ここでx[n] (n=1,2,…100)はテキストで表された100個の数値です。
例:"10,51,344,543,423,533,62,45,345 … 24,898,32"
Scilabのコードを以下に示します。
コートは3つにわかれています。右クリックして"対象をファイルに保存"を選びコードをダウンロードしてください。
     シリアルシリアルポートを開きます。タイムアウトは5秒に設定してあります。
     シリアルポートを閉じます。
GetGraph.sce
     シリアルポートからデータを受信してグラフを表示します。
3つのファイルをダウンロードしたら、Scilabを起動し
アプリケーション(A)→SciNotes
からSciNotesを起動します。そしてSciNotesから上記3つのファイルを開きます。
0922b1e38fa26e7428cc3c74ca8b8b2a図3 ScilabのSciNotesでSCEファイルを開く

シリアルポートを開くために、OpenSerial.sceのタブを選択してから
D6108260df637b3a162aa9db5e7976f3 を押して、コードを実行してください。

その後、GetGraph.sceも同様に実行し、マイコン側からデータの受信を開始します。
GetGraph.sceを実行したら、手動で5秒以内にマイコン側からPC側へ、データを送信してください。
受信タイムアウト後に、自動的に新しいウィンドウを開き、受信したデータのグラフが表示されます。
下記の例はモータの電流制御のステップ応答を見ています。縦軸は電流[mA]、横軸は時間[0.1ms]を示しています。
1c1a6fa26f13e386461da6f46941dd5f
図4 グラフの表示


最後にCloseSerial.sceを実行して、ポートを閉じるのを忘れないでください。
以上。

-----以下、詳細説明-----
■実験環境は以下です。
Windows7 Ultimate 64bit
Scilab 5.4.0 32bit
Scilabは64bit版よりも32bitの方が、私の用途では安定しているので、32bitを利用します。
■一歩進んだプログラム
今回のプログラムでは、ロボット側とPC側は同期が取れていませんが、METEORAでは
Scilabとロボット側のソフトを工夫することで
・任意長のデータ受信
・タイムアウトなし+バッファ装備の高速通信
・エラー検出
・グラフのリアルタイム更新
・Scilab側からロボット側へのコマンド送信
をサポートしています。
コードが複雑すぎるので、今回は掲載を見送りました。
■Scilabのグラフ
縦軸・横軸に名前をつけたり、表示する値の範囲を変えたり、線の種類を変えたりと、多彩な設定をScilabはサポートしています。
また3Dグラフのプロットも可能です。
日本語の資料も多いですし、Scilab本体のヘルプも充実しているので、ぜひ挑戦されてはいかがでしょうか。

|

« Bluetoothによるシリアル通信のワイヤレス化 | トップページ | AnalogDiscovery買いました »

ロボット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1213530/48548515

この記事へのトラックバック一覧です: Scilabによるデータの可視化:

« Bluetoothによるシリアル通信のワイヤレス化 | トップページ | AnalogDiscovery買いました »