ロビをパソコンから動かしてみた
2014年9月29日


 ロビのマイコンボードの基板にUSB端子がある事は結構前からよく知られています。
 そのうち付けようと思っていたのですがつい後回しにしていました。

 最近ロビのプログラムを頻繁に書き変えているためしょっちゅうSDカードの抜き差しを行っています。
 馴れてしまえばこれ自体はそんなに面倒ではないのですがちょっとやってみたい事があったので今回、重い腰を上げてやってみました。

 この改造記事はいろいろな所で書かれているのでここでは詳細は特に記事にしていません。
 本当はかっこよくUSBミニコネクタで普通のコンピュータ機器のようにしたかったのですがあいにく部品がなく(はType-Bはあったのですがちょっとデカくなるので)余ったUSBケーブルを直付けにしました。
 そのうちなんかの部品と一緒に発注してちゃんとコネクタ接続にするつもりです。

 ボードのハンダ付け自体はそれほど難しくないのですが。
 最近老眼が進み0.1インチピッチ?だとかなりきびしいものがあります。

 ボードを外すにはロビの腰から下を分解する必要があり。
 結構面倒臭いものがあります。
 まぁここでもロビのメンテナンス性のない設計には手を焼きます。

 なるべくケーブルを外さずにと思って作業したのですが結局とんでもない事態になりケーブルを全部外す事になりました。
 ある事件が起こってしまい作業も丸一日かかってしまい(記事後半参照)



 最初VCCとデータ(+)を間違えてつながりませんでした。(あいかわらずあわて者です。ちゃんと確認せんと)
 つなぎ変えたりしたのでリード線の色はメチャクチャですが無事接続できてパソコンからとSDカードが読めるようになりました。



 今回USB接続した一番の理由はロビを動かしながらパソコンからSDカードの内容を読み書きできるか実験をしたかったからです。
 これができればファイル渡しでロビとパソコンが通信できる事になります。

 そういえば昔ネットワークのプロトコルやシリアル通信がなかったころはこのファイル渡しの通信が結構使われていました。
 私は最近でも安直にやる場合は結構使ったりしています。

 ロビのSDカードのファイルの読み書きをするにはロビを動かしている時もUSB接続していなければいけませんがUSB接続をしながらロビを起動するとちゃんと起動できないようです。
 ロビを起動する時は切断しておいて起動後に改めて接続し直す必要があるようです。

 まずはロビモーションエディタのログ再生プログラムを少しいじったものをロビで動かしておきます。
 このプログラムはサーボログの通りにロビのサーボを周期的に連続して動かすものでサーボログの内容が変化しないとロビもそのままの姿勢をキープします。

 予めロビモーションエディタに含まれるキャプチャープログラムで原点ポーズ、左手上げポーズ、右手上げポーズの3つのサーボログを採取しておきます。
 これをパソコンからロビのSDカードにコピーします。



 3種類のログファイルをランダムにコピーするるとそのサーボログ通りにロビが動いてくれました。
 ロビのプログラムがサーボログを読んでいる時に書き換えたらロビのプログラムが暴走してしまうかも知れないと思っていましたが何回かやってみたのですが大丈夫なようです。

 次の実験はロボゼロの旗上げで作ったプログラムをちょっと改造してSDカードのサーボログをパソコンのプログラムで直接書き変える実験をやってみました。



 スライダーの上下に合わせて方の縦方向のサーボの位置を変化させるものです。
 手を一番下にした時と一番上にした時のサーボの値をサーボログから求めてスライダーの位置から計算しています。

 この時はスライダーの変化をリアルタイムでロビが処理できるかどうか分からなかったので「送信」ボタンでログファイルを書き変えるようにしています。
 スライダーの位置通りロビは手を動かしてくれました。
 この後の実験でわかったのですがスライダーの動きを拾ってリアルタイムにロビを動かしても大丈夫なようです。

 このプログラムではサーボの移動速度もログファイルでロビのプログラムに渡すようにしています。
 打ち込んだ数字通りのスピードで動いてくれました。

 最後の実験は少しデモ的要素を取り入れてWebカメラでとらえた映像を画像解析して両手の動きを検出してその通りにロビを動かそうというものです。
 基本的には先ほどの実験と同じでスライダーの値の代わりに画像解析した手の位置の高さを使っています。



 今回はもう少しリアルタイムに動くようにサーボログの読み取り間隔を0.4秒にしています。
 またロビにWEBカメラを付けてみるでロビスタンドに付けたWebカメラを使っているので少し下がケラれてしまいました。




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

     

 動画の説明文でサーボのデータファイルをロビのSDカードに転送とありますが正しくはデータをSDカードのファイルに直接書いています。

 予想していたより結構リアルタイムで動いてくれていると思います。
 どこまでログファイルの読み込みのインターバルを短くできるかの実験は行っていませんが実用的?な速さだと思います。

 今回は画像解析といっても単に動体の両端部分を両手の位置にしただけで認識精度は決して高いとはいえません。
 KINECTなどを使って本格的にモーションプチャーしたものをロビにまねさせる事も可能だと思います。

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

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


 USBの改造作業を行った所、音声が出力されないようになりました。
 今の所、他にUSBの改造に伴う音声回路への影響は報告されていないようで因果関係は不明です。

 以前やったネックフレームの交換の際にスピーカーのコネクターを結構抜き差ししていたので、最初はコネクターの接続不良を疑いましたが、直接ボードにスピーカーをつないでも同じでした。
 スピーカー自体も他のソースから持ってくるとちゃんと鳴るので生きているようです。

 そんなこんなで丸一日潰してしまい、リモート操作の実験が遅れてしまいました。

 ボードを外したり付けたりを繰り返していたので最初のUSB接続が断線してしまいました。
 4本ともハンダ付けし直すはめになりました。
 おかげでリード線の色は標準USBの配色(赤黒緑白)になりました。

 今回行った実験はロビが喋らなくてもできたのですが、ロビが喋ってくれないとちゃんと命令を受け付けたかどうか分からないので結構不便です。

 とりあえずディアゴスティーニのサポートセンターに相談した所、有償でマイコンボードを送ってくれるという事になったのですが、在庫がないらしく3週間以上待たなければなりません。
 前回は頚椎損傷で運動系の事はできませんでしたが今回は喋らないので文化系の事ができなくなってしまいました。

目次に戻る