リモート接続によるステータス取得
2015年1月12日
2015年1月26日改訂


 USBケーブルでロビとパソコンをつないでリモート接続を行う事でパソコンからロビを操作する事ができます。
 これまではパソコンからロビのSDカードにデータを書込んでそれをロビのプログラムが読み込んで処理を行ってきました。

 逆にロビがSDカードにロビがデータを書込んでそれをパソコンのプログラムで読み込む事はうまく行っていませんでした。
 Windowsのディスクからの読み込み処理でキャッシングしているため更新された最新のデータが読み込まれないためです。
 このためUSB接続をしたままサーボログを採取した時は最新のデータを読むために一度USBケーブルを抜く必要がありました。

 今回、キャッシュデータではなく直接ディスクデータを読み取る方法が見つかりましたのでこれを使っていろいろな事をやってみました。

 まずロビのセンサーの値をリアルタイムで読み取ってみます。



 ロビの本体でセンサーの値をログファイルに定期的に書込むプログラムを走らせておきます。
 ロビのセンサーの値は0x0e00〜0x0e14でこのデータをログファイルに書込みます。
 また音声認識のデータは0x0e5cでこの値も書き込まれます。

 パソコンのプログラムでこの値を定期的に読み込みデータを表示します。
 ロビを傾けたり目の前に手をかざすとこれらの値が変化します。

 本プログラムのこちらのリンクからダウンロードする事ができます。

  RBSensor_100.zip

 適当なフォルダーに展開してください。
 ロビプログラムフォルダーの中をロビSDカードに入れてください。
 なおロビのメインプログラムを変えたくない場合はセンターテスト.RM4を適当なプログラム(1\070いいよ9.RM4)と置き換えてください。
 音声認識(準備はいい)でプログラムが起動します。
 なお本プログラムの終了は音声認識でできませんのでロビの電源を切るかロビボイスプレイヤーのリモート接続で適当な認識語を送信してください。

 メインプログラムを置き換えた場合は本プログラムのチェックボックスでロビプログラムの起動と終了ができます。



 次に音声認識のデータを読み取ってこの値に対応した動きをするプログラムを作成してみます。
 読み取った値をロビボイスプレイヤーのデータファイルと照合して音声のテキストデータとを音声認識のデータを読み取ってこの値に対応した動きをするプログラムを作成してみます。



 読み取った値を音声認識番号に表示すると同時にその音声のテキストも表示します。
 またその音声に関連する画像を予め用意しておいて対応する画像があれば表示します。

 「再生」ボタンでロビボイスプレイヤーで再生する音声ファイルを再生します。
 「全面表示」ボタンで関連画像をディスプレィ全体に表示します。
 キーボードからESCキーを押すと元の画面に戻ります。

 音声認識のデータをログファイルに書き込むためにロビの初期化プログラムを改造しています。

 同様にロビがしゃべるデータもログファイルに書き込んで関連画像を表示する様にしました。
 このためにロビの音声発声プログラムの終了時にその音声の値をログファイルに書き込んでいます。



 0x0f0には認識語かロビの音声かの種別を表すもので認識語は1、ロビの音声は2を書き込んでいます。
 パソコンのプログラムではこの値を見てどちらの音声か判断しています。

 0x0f2には音声のIDを表す値を書き込んでいます。
 認識語の場合、ロビのプログラムで使われている認識語番号と一致しています。
 ロビの音声はロビの発声プログラムの番号と一致するもので音声ファイルもこの番号が使われています。


 実際にこのプログラムを動かした動画です。

     

 ロビモーションエディタもバージョンアップでこの機能に対応しました。
 パソコン操作でサーボログにサーボ位置の情報を書き込んでそれを直接読込めます。
 これによりリアルタイムでロビのモーションがキャプチャーできるようになりました。

 なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。
 必ずオリジナルのSDカードのバックアップは取っておいてください。
 問題があったらオリジナルのSDカードに戻してください。

 特にUSB接続を行うにはロビのマイコンボードの改造が必要になってきます。
 マイコンボードの改造を行うとディアゴスティーニの無償保証が受けられなくなりますので注意してください。

目次に戻る