代替ソフトの作成方針
- Bluetooth利用時の操作性確roboRemoconは1byteのモーションコマンド送信毎にシリアルポートを開閉するようだ。これがBluetooth経由だと非常に時間をくうため、実用的なロボ操縦は無理。これを何とかする。
- 通信I/FはroboRemoconと同じに
CPUボードのTx/Rx(プラグジャック)に接続し、変数RRを介してコマンドを引渡す
赤外線リモコンだと、ロボ側でREMOCON()命令を処理するのに約0.3秒を要し、これが歩行モーションの邪魔になっている。roboRemoconのように、操縦コマンドが変数RRに自動セットされるのが好ましい。
- ロボ側の状態データ受信機能
折角の双方向通信なので、これまで試行錯誤や目視で判断していたモーションの良し悪しを、少しはデータに基づいて判断したい。
プログラミング(上記課題の解決)
- プログラム終了までシリアル接続を維持する。今回もERSLIBを利用させて頂き、あまり悩まずに送受信機能を実装した。
また、画面上のリモコンボタンをクリックする隔靴掻痒のMMIに替えて、キーボード入力で操縦することにした。
- BluetoothモジュールとCPUボードとのインターフェイス回路を自作して解決。
- ROBOMICさんが公開するフリーソフトRZ1Peekにヒントを得てプログラムした。ロボからのデータ受信は是非とも実現したかったので、前に調べた複数バイト指令機能を利用し、ロボのセンサー出力値をモニターする。
できあがったソフトウェア
- PCキーボードの矢印キー↑↓→←や数字キーが押下されたら、赤外線リモコンの矢印ボタン等と同じモーションコマンドを送信。
- ロボのセンサーを指定すると、その出力値と実行中のモーション情報(右上も参照)を0.5秒(※)おきに受信してCSV形式で出力。
※)0.5秒間隔→0.2秒間隔に改善(修正:2011.10.31)
- CSVをグラフにしてみた(右中)。振れの大きい箇所のモーション改良を狙っている。
元々はBluetooth用ながら、無線/有線に関係なくシリアル通信なら使える筈なので、案外役に立つかな?ということでソフト公開。(右下)(修正:2011.11.12)
|
ロボのセンサー値だけでなく、変数RRの「次」に宣言されている変数(下の画像では黄色表示の「STATUS」)をモニターする

モーションの進行に合わせてSTATUS値を変更するプログラム(ロボ側)にしておけば、どのモーション時のセンサー値か判る筈だが...
|