ロビのサーボログを取得してみた
2014年9月14日
2014年9月17日改訂
サーボ位置を記録できないか調べてみました。
ロビの初回起動時に性格.LOGにロビの性格が出力されるのでファイル出力はできそうです。
まずこのファイルを出力している所を調べてみました。
000初期性格決定2.RM4というプログラムに性格ファイル書き込みというブロックがありここで書かれています。
<fwrite filename=" 性格.LOG" adr="0x0ff0"/>が書込みの命令のようです。
file名は出力されるファイル名で0x0ff0というのは書き込むメモリのアドレスだと思います。
しかし肝心の書込むバイト数がみあたりません。
おそらく書込むファイルのバイト数分、書込まれるのだと思います。
という事は書込みたいバイト数で予めこのファイルは作っておく必要がありそうです。
サーボの位置の読込みはロビの姿勢を調べるため各プログラムでやっています。
これは初期化プログラムですが右ビザをが曲がっているかどうかを調べるためサーボID4の位置情報を読み込んでいます。
アドレス0x0d86がサーボID4の位置情報になります。
同様に左ヒザが曲がっているか調べるためにID9の位置情報を調べている所があります。
アドレス0x0d90がサーボID9の位置情報になります。
これらの事からアドレス0x0d80がサーボID1の位置情報で各サーボ2バイトづつだという事が推測できます。
ロビではサーボID1とサーボID22以降は使っていませんが一応ID1から64個分位置情報を取るようにしました。
このプログラムをどうやって動かすかですが、ログを採るのに近い言葉で「写真撮るよ」という話しかけでこのプログラムを動かす事にしました。
この話しかけで最初に「074OK9.RM4」が動き次に「481格好良く撮ってね9.RM4」が動きます。
074OK9.RM4はロビにオーケーと言わせるプログラムでこれはそのまま生かして481格好良く撮ってね9.RM4をログ採取プログラムに差し替えました。
ロビにポーズをとらせるためサーボのトルクをオフにする必要があります。
そのためサーボのトルクをオフにするプログラムを作成しました。
このプログラムは「準備はいい?」という話しかけで動く「070いいよ9.RM4」を差し替えました。
まず「準備はいい?」という話しかけでサーボのトルクをオフにして手足が自由に動くようにしておいてポーズを作って「写真撮るよ」でサーボログを採ります。
採取したサーボログでその時のポーズを再生するプログラムを作成しました。
「なんでやねん」という話しかけで動く「545えへ9.RM4」をポーズ再生プログラムに差し替えました。
このプログラムは「ちがうだろ」という話しかけでも動きます。
サーボログをこのプログラムに反映させるにはパソコンでロビ設定ファイルエディタに読込ませる必要があります。
ロビのSDカードをパソコンで読める状態しておいて「ログ読込み」ボタンでサーボログを読込みます。
上のダイアログに対して「はい」を答えるとSDカードの「545えへ9.RM4」が書き換えられて「なんでやねん」でログに採取したポーズをロビにやらせる事ができます。
サーボログを使って原点補正値を修正する事ができます。
ポーズデータを採る方法で「準備はいい?」という話しかけでサーボのトルクをオフにして手足が自由に動くようにしておいて実際にロビの手足を動かして原点位置を調整して「写真撮るよ」でサーボログを採ります。
今度は上のダイアログに対して「いいえ」を答えるとサーボログの値が表示されます。
この値をそのまま原点補正値とすれば手で調整した角度に原点が補正されます。
なおサーボログの値を全てそのまま使って設定ファイルを書き換えても良い訳ですが、調整する必要がないサーボの補整値まで書き換えてしまうのでサーボログでの直接変更は禁止しています。
今回使ったプログラムは全てロビ設定ファイルエディタに含まれています。
最新版のロビ設定ファイルエディタではポーズプログラムの出力機能とログ採取プログラムは提供されていません。
ポーズプログラムの出力機能とログ採取プログラムはロビモーションエディタで提供されています。
実際にロビを動かしている動画です。
ポーズを再生するプログラムですが何で「なんでやねん」なのかは突っ込まないでください。
本当は「はいポーズ」でやらせたかったのですがこの認識語はどこからも呼ばれていません。
また無理矢理、認識語をこれに変えたのですがロビが反応してくれませんでした。
認識語に登録されていないのか認識できなかったので採用を止めたのかは定かではありません。
なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。
また必ずオリジナルのSDカードのバックアップは取っておいてください。
問題があったらオリジナルのSDカードに戻してください。
ポーズプログラムを変更して目と口のLEDの色とポーズする時間を変更する事ができます。
サーボ制御のメモリの65〜67番目の数字が左目の色で68〜70番目の数字が右目の色を表します。
71番目の数字は口の色ですが口は赤しかないようで数字はLEDの明るさを表します。
0x00ffが一番明るく0x0000が消灯します。
目の色は3つの数字の組み合わせで色が決まります。
一番目の数字が赤で二番目の数字が緑で三番目の数字は青の明るさを表します。
すなわち24ビットのRGB(0xrrggbb)に対応します。
3つの数字が全て0x00ffは白を表しますが3色のLEDで色を表すので完全な白にはなりません。
ロビのLEDの明るさの最高は50のようです。
従ってこれ以上の値は同じ明るさになります。
ロビモーションエディタではRGBの色を5で割った値を出力しています。
ポーズする時間は0.02秒単位でWAITのデータとして指定しています。
現在は500が指定されているので10秒間ポーズします。
上の例では目をピンクに点灯して口を消して5秒間ポーズをします。
なおロビ設定ファイルエディタでこのプログラムを読み込む時にポーズデータのバイト位置をチェックしているのでポーズデータの位置が変わらないよう注意してください。
目次に戻る