ロビにダンスをさせてみた
2014年9月25日
ロビモーションエディタでロビのモーションプログラムを作るサーボログの採取プログラムを改良してみました。
今まではサーボログを採る時にロビのポーズをさせるためにサーボのトルクを完全にオフにしていました。
そのため立たせたままでポーズをさせることができませんでした。
今回はサーボのトルクを弱めて手で動かせるようにしています。
サーボにある程度トルクをかけていますのでサーボログの採取中でもロビは自立する事ができます。
と簡単に言ってはみたもののこのモーションキャプチャープログラム結構大変で、手で動かしたキャプチャーポーズをそのまま保持する処理が結構めんどくさいです。
現在のサーボの位置情報はサーボログにも書き込んでいますがアドレス0x0d80からのデータを読み取ればいいのですが、その値通りにサーボを動かすには原点オフセットの値を引かなければなりません。
原点オフセットの値はロビ設定ファイルエディタでも読み書きしているアドレス0x1000からの値です。
これを現在のサーボポジョンから減算してサーボの制御アドレス(これはロビのプログラムの至る所で使われている)0x0a00からに書き込めばいい訳です。
その時ついでにサーボトルクを通常100の値を1にしてセットします。
1だとフルトルクの1%なのでもっとトルクが弱いかと思っていましたが結構トルクがかかっています。
ちなみに0にすると完全脱力します。
もっとスマートな方法があるかも知れませんが今回のキャプチャープログラムでは地道にこの計算を行っています。
なお多少なりともロビのサーボにトルクがかかっているのを手で動かす訳ですからサーボへの負荷をかける事になります。
本キャプチャープログラムを使うのはあくまでも自己責任という事でお願いします。
今回はその機能を使ってロビのダンスプログラムを作成してみました。
以前ロビの足ができた時に足だけ動かしてダンスをさせてみました。
その時はパソコンを使って動かしていましたが今回はロビのプログラムで動く自律型です。
まずロビにポーズをさせてサーボログを採取します。
今回は腰を左右に動かす単純なプログラムです。
腰だけではつまらないので顔と手も動かします。
今回改良したサーボログのキャプチャープログラムも「準備はいい?」とロビに話しかけると動きます。
今まではサーボログをキャプチャーするプログラムは分かれていましたが今回はこのプログラムでキャプチャーもします。
また全てのポーズのサーボログが撮り終えたらこのプログラムを終了して元の状態に戻す事もできます。
キャプチャープログラムが動き出すとロビの顔を正面に向けます。
これはロビの顔が正面を向いていない場合が多いためで顔以外はそのままの姿勢で開始します。
続いてサーボログをクリアしてロビが「準備OK」と言います。
今回のキャプチャープログラムでは次の言葉に反応するようにしています。
「写真撮るよ」でポーズをサーボログに記録します。
「上手だね」でキャプチャープログラムが終了してロビが元の状態に戻ります。
「失敗しちゃった」でサーボログをクリアしても最初からキャプチャーし直します。
その時もロビが「準備OK」と言います。
プログラムの終了はおしまいか終了にしたかったのですが認識率が悪いようです。
またロビ認識語プレイヤーでカテゴリを切替える必要があるので近くにある言葉にしました。
サーボログを10ポーズ分取り終えてもう次のポーズを取ろうとするとロビが「つかれちゃった」と言ってプログラムが終了します。
サーボログを必要分取り終えたらロビの電源を切っても構いませんが、ロビの動作を続けさせる時は「上手だね」でプログラムを終了させます。
この時、急にサーボにトルクを入れるとサーボに負荷がかかるのでロビをゆっくりと原点ポーズに戻ます。
直立以外の姿勢で終わった時も直立になるので注意してください。
今回は腰を右に振った時と左に振った時の2つのポーズをキャプチャーしました。
ロビモーションエディタを起動してロビのSDカードからサーボログを読込みます。
パソコンからロビのSDカードを読める状態にしておいてください。
ポーズ1のサーボ移動時間を変更します。
ポーズ2のサーボ移動時間と合わせて音楽のテンポに合うように調整します。
目のLEDの色も変えてみました。
また今回はポーズを止めないのでポーズ保持時間を0にします。
ポーズ2のサーボ移動時間とポーズ保持時間もポーズ1に合わせて変更します。
目のLEDの色はポーズ1のものと変えてみました。
また口のLEDはポーズ2だけ点灯するようしました。
「前後処理設定」ボタンでダンスの音楽を設定します。
予め音声ファイルをロビのSDカードにコピーしておきます。
「参照ボタン」でSDカードの音声ファイルを選択します。
「待ち時間」は音楽のイントロが流れ始めてロビが踊り出すまでの時間を設定します。
200を指定しているので4秒という事になります。
「終了時」のラジオボタンを押して終了時の設定を行います。
ロビの音声再生は次の音声の再生を開始したら再生中の音声再生が止まるようなので再生中の音声を止めるために1秒間の無音の音声ファイルを再生します。
また今回のモーションプログラムが終了するとロビ本体のプログラムがすぐに実行されるよう待ち時間を0にしています。
「繰り返し回数」はロビが踊り終わるまでの回数になります。
曲の長さに合わせて調整してください。
「モーションデータ書出し」ボタンで今回作成したモーションデータをパソコンのハードディスクに保存しておくと後で設定を自由に変更する事ができます。
「プログラム書出し」ボタンでロビのSDにモーションプログラムを出力します。
今回は通常のダンスプログラムを置き換えました。
なおオリジナルのダンスプログラムは忘れずバックアップを取っておいてください。
実際にこのモーションプログラムを動かした動画です。
今回は単純なふたつのポーズだけでプログラムを作成しましたが、複数のプログラムを作成しておいてメモ帳などでつなぎ合わせて最後に本プログラムの「アドレス調整」機能でひとつのプログラムにすれば複雑な動きをするプログラムを作る事も可能です。
ロビモーションエディタを使っていろいろなプログラムを作ってみてはいかがでしょうか。
なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。
また必ずオリジナルのSDカードのバックアップは取っておいてください。
問題があったらオリジナルのSDカードに戻してください。
目次に戻る