ROBOとBluetoothで通信する(その3)

ロボとPCのBluetooth通信に成功したものの、ロボ操縦用の付属ソフトroboRemoconはBluetoothだと実用にならないので、自作した。(2011.11.12 ソフト公開)

代替ソフトの作成方針
  1. Bluetooth利用時の操作性確roboRemoconは1byteのモーションコマンド送信毎にシリアルポートを開閉するようだ。これがBluetooth経由だと非常に時間をくうため、実用的なロボ操縦は無理。これを何とかする。
  2. 通信I/FはroboRemoconと同じに
    CPUボードのTx/Rx(プラグジャック)に接続し、変数RRを介してコマンドを引渡す
    赤外線リモコンだと、ロボ側でREMOCON()命令を処理するのに約0.3秒を要し、これが歩行モーションの邪魔になっている。roboRemoconのように、操縦コマンドが変数RRに自動セットされるのが好ましい。
  3. ロボ側の状態データ受信機能
    折角の双方向通信なので、これまで試行錯誤や目視で判断していたモーションの良し悪しを、少しはデータに基づいて判断したい。
プログラミング(上記課題の解決)
  1. プログラム終了までシリアル接続を維持する。今回もERSLIBを利用させて頂き、あまり悩まずに送受信機能を実装した。
    また、画面上のリモコンボタンをクリックする隔靴掻痒のMMIに替えて、キーボード入力で操縦することにした。
  2. BluetoothモジュールとCPUボードとのインターフェイス回路を自作して解決。
  3. ROBOMICさんが公開するフリーソフトRZ1Peekにヒントを得てプログラムした。ロボからのデータ受信は是非とも実現したかったので、前に調べた複数バイト指令機能を利用し、ロボのセンサー出力値をモニターする。
できあがったソフトウェア

  • PCキーボードの矢印キー↑↓→←や数字キーが押下されたら、赤外線リモコンの矢印ボタン等と同じモーションコマンドを送信。
  • ロボのセンサーを指定すると、その出力値と実行中のモーション情報(右上も参照)を0.5秒()おきに受信してCSV形式で出力。
    ※)0.5秒間隔→0.2秒間隔に改善(修正:2011.10.31)
  • CSVをグラフにしてみた(右中)。振れの大きい箇所のモーション改良を狙っている。

元々はBluetooth用ながら、無線/有線に関係なくシリアル通信なら使える筈なので、案外役に立つかな?ということでソフト公開。(右下)(修正:2011.11.12)

ロボのセンサー値だけでなく、変数RRの「次」に宣言されている変数(下の画像では黄色表示の「STATUS」)をモニターする


モーションの進行に合わせてSTATUS値を変更するプログラム(ロボ側)にしておけば、どのモーション時のセンサー値か判る筈だが...
加速度センサー値の変動(0.2秒間隔に改善後)
(前方へ左右1歩ずつを6回繰り返し)


インターバルが0.5秒から0.2秒に改善して、使えそうな雰囲気が出てきた。
変数STATUSを棒グラフ(第2軸)で表示させるのに手間取ってしまったが、これでモーションとセンサー値の関係が判る。(修正:2011.11.5)
ソフトウェア・ダウンロード

 izakRemocon

WindowsPC用の、ROBOZAK(ROBONOVA)
操縦ソフトです。
同梱の「はじめにお読みください」
を先ず読んでください。

感想などはこちらへ

※この記事が何かのお役にたつことを願っていますが、記事内容についてのいかなる保証もしません