モーションの作成 †
本ページでは、ロボットのモーション(動作)の作成手順について説明します。ロボットは、発話や待機動作等を使うことで自動的に動作を行いますが、自分が意図するポーズ・タイミングによる動作を行う場合は、別途動作(モーション)を作成することができます。
ロボットのモーション(動作)の構造は「キーフレームアニメーション」形式であり、一連の動作における途中の姿勢(ポーズ)を並べて、そのポーズ間をつなぐ時間を設定する方式になります(いわゆるパラパラ漫画と同じような方式です)。
一般のパラパラ漫画(アニメーション)では、動きを滑らかに見せるために細かいコマ割りが必要ですが、Sotaの場合、各キーフレームのポーズ間をロボット自身が自動的に補間するため、少ないポーズでも動作させることができます。
今回は、簡単な例として「腕を上げ下げする」というモーションを作ります。このモーションをキーフレームアニメーションの形に分解すると、①「腕を下げたポーズ(実行直後)」→②「腕を上げたポーズ」→③「腕を下げたポーズ」の3つのポーズになります。
- ○ポーズブロックの追加
モーションの作成には「poseブロック」を使います。このブロックはアニメーションの1コマに相当するもので、このブロックを実行すると、ロボットが任意のポーズに変形します。
poseブロックの設定項目には、「ip_time」(設定したポーズへ変形するまでの時間)と「isSync」(ロボットが変形を終えるまで次に進まずに待つか)があります。ip_timeはミリ秒単位で設定し、直接ip_timeの項目をキーボードで書き換えます。また、isSyncは、ロボットの変形を行いつつ、並列的に別の命令を実行かどうかの設定です。単純なモーション作成用途であれば並列動作は不要なので、標準設定のTrueにしてください。
また、poseブロックに設定されたロボットのポーズの情報は、プロパティウィンドウの設定画面ではなく、「ポーズウィンドウ」というポーズ編集専用の画面で設定します。
- ○ポーズウィンドウの操作
次に、ポーズウィンドウを開いてロボットのポーズを設定します。ポーズウィンドウは、poseブロックをダブルクリックすると開きます。
poseブロックでは、ポーズの初期値は「気を付け」の状態になっています。今回の「手を上げ下げする」動作を作る場合、1,3番目のポーズは「気を付け」のままで問題なく、2番目のポーズを「手を上げたポーズ」に変更します。
ポーズウィンドウには、ポーズ編集用のインターフェースである「ポーズスライダ」が並んでいます。ポーズスライダは、基本的に各モータや、目・口・電源ボタンのLEDの色(R・G・B)などによって個別に備わっており、対応する箇所の名前・現在のポーズの設定値(角度や明るさ)、またロボットと通信中の場合は、ロボット自身の現在の設定値(モータ角度等)を表示します。
また、「ツマミ」や「スピンボタン」をマウス操作で操作して設定値を編集したり、ロボットと通信している場合はロボットからポーズを読み取って編集中のポーズに取り込むことも可能です。
■ポーズスライダ -名前:ポーズスライダの名前(原則として対応する関節やLED等の名称) -ツマミ:マウスでドラッグしてポーズ値を操作 -読み出し値:ロボット本体の現在のポーズ(通信中のみ表示) -基準値:基準ポーズ(後述)の位置を表示 -スピンボタン:クリックしてポーズ値を一定量増減 -チェックボックス:ポーズでの使用・未使用を選択 -ポーズ値:現在のポーズ値 -モータゲイン:モータの出力を表示・設定(関節に割り当てられたポーズスライダのみ表示)
ポーズエリアの特長は、キーボードからの数値入力ではなく、ポーズスライダによるマウス操作(ドラッグやクリック)可能である点、また、ロボットと画面上の表示・設定がリアルタイムでフィードバックされるため、視覚的にわかりやすくポーズを編集できる点などが挙げられます。また、設定値のコピー・ペーストや、ロボットの右半身と左半身で、ポーズのコピーや反転ができるなど、ポーズ編集に便利な機能が備わっています。
ロボットと通信していなくてもポーズの作成は可能ですが、ロボット本体へのポーズのフィードバックやキャプチャ(本体からの ポーズの取り込み)などの機能は、通信中のみ有効です。
- ○ ポーズスライダの操作
それでは、ポーズスライダを操作してポーズの編集を行っていきます。ただ、最初は安全性を考えて、ロボットのモータを動かさずLEDの色を変えて、ポーズスライダの操作を確認しましょう。ここでは例として右目LEDのRGBに対応する「LED REYE R」「~G」「~B」の三つのポーズスライダを動かしてみます。
ツマミをドラッグして、Rを最大値(255)、Gを最小値(0)にしてみましょうBは元々最小(0)なので、ロボットの右目が赤くなります。ツマミのドラッグでは、大きくポーズ値を変えることができますが、数値の変化が大きいので細かい角度の調整には不向きです。また、関節に対応したポーズスライダなどは、急激にモータが動きやすいので周囲との衝突に注意しましょう。
今度は、スピンボタンをクリックして、RとBを125にしてみましょう。これでRとBが同じ輝度になり、右目が紫になります。
スピンボタンのクリックでは、ポーズ値が一定量増減します。【+】をクリックすると値が増え、【-】をクリックすると値が減ります。この方法では、一度に増減する値が決まっており、またツマミのドラッグよりも急激な変化が少ないため、細かい位置の調整に向いています。
スピンボタンのクリックで増減する量は、あらかじめポーズスライダ毎に設定されており、ツマミをドラッグした場合も、ポーズ値はこの増減量の倍数に丸め込まれます。
- ○ 基準ポーズとポーズの初期化
ポーズスライダの操作方法を確認したら、編集したポーズを最初の状態(「気を付け」)に戻しましょう。
ブロック作成時に最初に設定されているポーズは「基準ポーズ」と言い、この時のポーズ値は各ポーズスライダの基準となります。基準ポーズはロボットの機種毎に異なりますが、基本的には「気を付け」のような、あらゆる動作の元になるポーズが最初に設定されています。
ポーズスライダでは、基準ポーズの値を表すツマミの位置に「基準値」のアイコンが表示されます。また、主にモータのポーズスライダは、基準ポーズを±0とした相対的な数値でポーズ値が表示されます。それでは、ツールバーの「ポーズ初期化」をクリックして、編集した右目LEDのポーズ値を戻しましょう。
- ○ ポーズのキャプチャ
それでは、今度は実際にロボットのポーズを編集してみましょう。ポーズ編集は基本的にLEDと同じく、モータが割り当てられたポーズスライダを操作することで作成できますが、ポーズについてはロボット本体から取り込む「キャプチャ」を活用してみましょう。
ポーズのキャプチャとは、ロボット本体の関節を手で動かしてポーズを作り、そのポーズをロボットからPCに取り込む機能です。直接ロボットを手で動かしてポーズを作ることができるので非常に直感的にポーズ編集が可能ですが、微妙な誤差が生じる・角度値が左右対称でない等があるため、気になる部分は最後にポーズスライダで微調整します。
ロボットの関節に対応したポーズスライダは、ロボット本体と通信中の場合、ロボットからポーズをキャプチャすることが可能です。ポーズのキャプチャは、ポーズウィンドウのツールバーの「ポーズキャプチャ」ボタンで行います。まずは、ロボットの各関節を手で動かして、手を上げた状態にしてください。手でポーズを合わせたら、続いてツールバーのポーズキャプチャボタンをクリックしてください。
ロボットのモータがONになっていて手で動かせない場合は、次項の説明を参考にモータをOFFにしてから、手でモータを動かしてください。モータがONの状態で無理にモータを動かすと破損する恐れがあるため、絶対におやめください。
ポーズキャプチャは、非常に早く・直感的にポーズを編集できますが、ポーズ値を特定の数値(角度)に合わせたり、左右のポーズを完全に対称にするなどの細かい・正確な編集には不向きなため、これらの必要がある場合は、ポーズキャプチャした後に、これまで説明した操作でポーズを微調整しましょう。
- キャプチャしたポーズ(例)
- ○ ロボットのモータのON/OFF
ポーズスライダには関節(モータ)が割り当てられているものがありますが、ロボット本体のモータがOFFの場合、ポーズスライダを操作しても実際にモータが動くことはありません。モータを動かすには、ポーズウィンドウよりモータをONにする必要があります。モータをONにすることで、LEDのように編集中のポーズがロボットにフィードバックされるようになります。
モータのON/OFFを切り替える場合は、ポーズウィンドウのツールバーの「モータON/OFFボタン」をクリックします(クラスウィンドウでポーズブロックをクリックし、ポーズを編集できる状態にである必要があります)。モータがONの場合は、ボタンのアイコンが「 」、OFFの場合は「 」で表示されます。
それでは、ボタンをクリックしてモータをONにしてみましょう。ONにすると、ロボット本体のモータに力が入り、現在編集しているポーズに遷移します。今回の場合、ロボット本体が先ほどキャプチャした「手を上げる」ポーズで固まります。
モータをONにしている場合、ロボット本体の関節がロボット自身や周囲の物と衝突・干渉して、破損や事故が起こらないよう に十分注意してください。特に、関節が干渉し続けてモータに無理な負荷がかかり続ける「モータロック」の状態が起こらない ように注意してください。 ■注意が必要な操作(一例) -モータON時(一部または全身の関節が一度に大きく動く場合がある) -ポーズブロックのクリック時(別のポーズに切り替わる瞬間) -ポーズスライダのツマミのドラッグ時(関節が大きく動く場合がある) -可動範囲が狭い関節の操作(見た目にモータロックがわかりづらい場合がある)
- ○ ポーズスライダの選択と微調整
それでは、中途半端な角度値や左右のポーズ値の差異、無関係なモータのポーズ値の初期化をそれぞれ行います。これらの操作を行う場合、操作対象のポーズスライダを「選択」すると、効率的に操作が可能です。
ポーズウィンドウの何もないところをマウスでドラッグすると、水色の枠を表示します。この枠にポーズスライダを重ねると、ポーズスライダが緑色に変化し「選択状態」になります。先に説明したポーズの初期化や、別項で説明するポーズ値のコピー・貼り付けなどは、ポーズスライダを選択することで、選択した場所のみに操作を適用できます。
それでは、「首ピッチ軸」「首ロール軸」「首ヨー軸」「胴体」の4つのポーズスライダを選択し、ツールバーの「ポーズ初期化」をクリックして、基準ポーズに戻しましょう。
続いて、中途半端なポーズ値を整えます。ポーズ値の操作はポーズスライダのツマミまたはスピンボタンで可能ですが、ここでは数値を合わせやすいように、スピンボタンのクリックで調整しましょう。左肩のポーズ値を110.00°、左肘のポーズ値を0.00°に、それぞれ設定してください。右腕・右肘は調整しなくても良いです。
最後に、ポーズをきれいに左右対称にしましょう。ポーズを左右対称にするには「半身コピー」の機能を使います。左腕・左肘の2軸のポーズスライダを選択し、ツールバーの「左半身コピー」ボタンをクリックしましょう。クリックすると、両腕・両肘のポーズ値が同じになります。
プログラムを作成できたら、一度実行してみましょう。ロボットが腕を上げる→下げるという動きを行えば、正しくモーションを作成できています。モーションを作成できたら、ポーズを変更してみたり、ip_timeを動かしてみたりして、動作や速度を変えてみましょう。
より長いモーションを作る場合も、同じような手順で、動作をコマごとに分解してposeブロックを追加し、それぞれのブロックのポーズをポーズウィンドウで設定します。ポーズは本体からキャプチャすることで、非常に早く・効率的に作成できます。
また、ダンスモーションなどで同じ動作を繰り返し行う場合は、forのブロックを使った定数ループを行うと便利です。