上半身だけのロボゼロで遊んでみる
2011年11月1日
2011年11月23日改訂


 デアゴスティーニの週刊ロボゼロをやっています。
 全号70号の折り返しを過ぎてちょうど上半身が全て出来上がったところですが相変わらず関節となるサーボモータとフレームを組み立てるだけで動かす事はできません。



 動かすには付属の制御ボードが必要ですが配布されるのはもっと先になる予定です。
 それまで待っていればよいのですが本番の勉強を兼ねて現時点でどんな事ができるか調べてみました。
 ロボゼロで使われているサーボモータ(RS306MD)を調べるとコマンド制御ができる賢いサーボだという事が分かりました。
 フタバといえばかつてラジコンのサーボで有名でしたが(私も少し飛行機をカジッた事があります)、その頃のサーボをイメージしていましたが40年以上経っている訳でこの世界もすごい事になっていました。(浦島太郎状態です)

 シリアル制御できるので37号付属のシリアルケーブルで直接PCにつなげるかも知れないと思いましたが、このサーボ5V駆動でPCのCOMポート(12V)には直接つなぐ事はできないようです。
 ネットでいろいろ調べるとUSBインターフェイスでシリアル制御ができるボードが市販されているようです。
 この中で5V出力のものを選べばロボゼロのサーボを制御できそうです。

 RS306MDで実績のあるFT232RL(SWITCH SCIENCE)というのを購入しました。
 ボードといってもLSIがひとつ載っているだけなので1,500円位です。



 FT232RL(変換ボード)とRS306MD(サーボ)は3本のジャンパー線で接続します。  ジャンパー線は変換ボードと同じ所で購入できます。
 FT232RLの出力は6PのコネクタですがこのうちのGND,5V,TXD(GNDと5Vの間はひとつ空きます)を使います。今回購入したボードは5Vの所に3V3とプリントされていましたがこれは5Vの誤りだという事です。
 RS306MDの入力は3Pのコネクタですが黒いリード線をGNDと真ん中の赤いリード線を5Vに端の赤いリード線をTXD(写真では黄色のジャンパー線)と接続します。



 FT232RLとPCはデジカメ接続などで使う標準のUSBケーブル(ミニB5Pin)で接続できます
 今回Windows7で行ったのですがボードのドライバーはPCに接続すると自動的にインストールされるようです。



 次に動作テストを行う訳ですが、RS306MDに対してCOMポートを介して制御コマンドを送信する必要があります。
 COMポートへデータ送信にはハイパーターミナルを良く使っていましたがWindows7では提供されていないようです。
 昔はハイパーターミナルを良く使いましたがモデムがなくなった今はほとんど使われないのでしょうね。
 そこでRS30xPacketUtilというRS30Xタイプのサーボ専用の便利なソフトがあるので今回はそれを使わせて頂きました。
 使用に当たってのポイントは以下の通りです。

 Serual Port:にFT232RLのCOMポートを設定してConnectボタンを押します。
 FT232RLのCOMポートはコントロールパネルのデバイスマネージャで確認できます。



 Baud Rate:はRS306MDの工場出荷時の115200なのでそのままで構いません

 まず左画面のCommand:からトルクONを選択して右画面のSendボタンを押します。
 これを行わないと動作しないようです。

 左画面のCommand:から目標位置を選択して右画面のSendボタンを押します。
 これでサーボが0度の位置に動くはずです。
 続けて任意の角度に動かしたい場合はData:に角度×10を入力しておきます。
 データは2バイトの16進数で指定する必要がるので-45度の場合"3E FE"と入力する。
 Dec:に-450と入力しておいてHex→ボタンでSint16に表示されるのでこの値をそのままData:にコピーアンドペーストで写しても構いません。
 これでサーボが-45度の位置に動きます。



 ロボゼロに旗上げゲームをやらせます。
 ただ旗を上下上げさせるだけなら芸がないので、音声認識を使って言葉でロボゼロを動かします。
 音声認識は10年くらい前に一度仕事でやったくらいでそれ以来、ずっと遠ざかっていました。10年経っているのでさぞすごい事になっているのではと思ったのですが...(マイクロソフト標準)

 Windows7にはMicrosoft 音声認識エンジン 8.0が標準搭載されているようです。
 ちなみにWindows XPでは音声認識はオプション機能でMicrosoft Speech SDK 5.1というのをインストールしなければいけませんがこのJapanese Recognizer v5.1という認識エンジン、はっきり言ってこれは使い物にならないくらいの認識率でした。(という事で少しは進歩しいている?)

 音声認識はコントロールパネルの音声認識で行います。  マイクをPCに接続してマイクのセットアップを行います。



 セットアップではチューニングを行うため意味不明の文章を読み上げなければいけません。(誰かいると恥ずかしいですが)
 これで音声認識はできると思います。
 試しにWordやモメ帳を開いておいて音声認識の開始(コントロールパネル音声認識)すると喋った言葉がタイプされていくはずです。
 しかし認識率はいまいちで、長い文章を正しくは認識してくれませんが今回は単語を認識するだけなので少しくらい精度が悪くても大丈夫です。



 今回専用のプログラムを作ってみました。
 COMポートは前述にあるデバイスマネージャーで表示されたSerial Portに設定します。



 ロボゼロの右手に旗(アシェト、パイレーツオブカリビアンの創刊号付属)を持たせます。
 動かすのは肩(一番上)のサーボです。  旗を上げた時は-90度、下げた時は0度の位置が丁度良いようです。
 ちなみに左手の場合は旗を上げた時は90度となります。(位置は設定ファイルで変更できます)
 プログラムを起動してマイクに向かって喋ると音声認識で文字に変換して画面に表示します。

 ロボゼロのサーボをPCに接続しておくと喋った命令に従って動作してくれます。
 なおチェックボックスをマウスでクリックすると喋らなくても旗を上下します。(サーボの動作チェック用)

 「黒上げて」と命令すると旗を上げてくれるはずです。
 なかなかちゃんと「黒」と認識してくれないので似たような言葉でも反応するようにしました。
 黒だと苦労や空路もOKとします。  また「旗」と言っても反応するようにしています。
 こうしておけば黒以外の色で命令してもロボゼロは無視します。



 実際にロボゼロに命令して動かした動画です。(命令している音声は後から処理しています)

     

 私の活舌が悪いのか最初はあまり言う事を聞いてくれませんでした。(言う事を聞かないのでつい声を荒げてしまいました)  まぁ何回かやっている内に言う事を聞いてくれるようになりました。
 PC(と自分)に音声認識のトレーニングをさせたり、もっと高度な認識エンジンを使えば認識率が上げられると思いますが、まぁ少し位言う事を聞いてくれない方がロボットらしなくていいかも知れません。



 同じようにもうひとつインターフェイスボードを買って左のサーボも接続して旗を二本持たせれば、ちゃんとした旗上げゲームができるのですが、付属の制御ボードが提供されればできますので今回はこれまでとします。
 サーボIDを変更すればインターフェイスボードは一枚で済むことが分かりました詳しくはこちらの記事をご覧ください。(今回のプログラムもバージョンアップしています)

目次に戻る