HeartToHeart4講座(4-3) ボタンによるモーション分岐機能
『HeartToHeart4講座』第四章の第3回の記事は「ボタン分岐」についてです。無線コントローラのボタンを利用して、モーションを分岐することができます。
【関連記事】
第一章~第三章については下記のページからご参照ください。
第四章
HeartToHeart4講座(4-1) センサによるモーション分岐機能
HeartToHeart4講座(4-2) ミキシング機能を利用した姿勢補正
■CmpButtonについて
CmpButtonは、無線コントローラなどのボタン操作により、モーションを分岐する機能です。このコントロールを使用することにより、「ボタンを押している間、歩行し続ける」「ボタンが押されている間は動作を一時停止する」などの処理が可能になります。
■使用方法
第三章で作成した「手を振る」モーションを改造し、CmpButtonによりボタンを押している間、腕を振り続けるモーションを作成します。
1)プロジェクトを展開し、「手を振る」モーションを開きます。モーションは、「ファイル」メニュー→「開く」→「モーション」から開くことができます。
2)上書きしないようにモーション名を変更します。タブで右クリックし「名前を変更」を選択してください。例では「手を振る(ボタン分岐)」としました。
3)「SetCounter」と「Loop」コントロールを削除します。
4)「CmpButton」コントロールを一つドラックアンドドロップで配置します。
5)「接続」ボタンをONにし、以下のように配線します。
6)「分岐接続」ボタンをONにし、CmpButtonからPos0に配線します。
7)CmpButtonをダブルクリックして開きます。プロジェクト内で使用していないボタン割り当てを選択します。例では、下記の画像のようにボタンを選択しました。OKボタンで閉じます。
8)このモーションはPos0からスタートします。「フラッグ」ボタンをONにし、Pos0コントロールをクリックしてフラッグを表示させます。
9)PCとロボットが通信できる状態であることを確認し、ロボットの電源を入れます。「ビルド」ボタンを押し、リストの中で空いている箇所を選択してOKボタンを押します。
モーションの書き込みについては『HeartToHeart4講座(3-5) モーションを書き込む』を参照してください。
モーションの書き込みが完了しました。
10)書き込んだモーションに無線コントローラのボタンを登録します。ボタンは、先ほどCmpButtonで指定した箇所と同じボタンを選択してください。
11)「ボタンデータ一斉書き込み」ボタンでロボットにボタンデータを書き込みます。ダイアログに従いロボットを再起動したら手順は完了です。
12)モーションを登録した無線コントローラのボタンを押してみてください。ボタンを押している間、手を振り続けたら成功です。
無線コントローラをお持ちでない場合は、KRCコマンダーでもボタン操作ができます。操作方法は、『HeartToHeart4講座(2-4) モーション再生(有線、無線)』をご参照ください。
もしうまくいかない場合は、分岐接続の配線や登録したボタンデータを確認してください。また、一度プロジェクトを丸ごと書き込むと正常に動作する場合があります。プロジェクト設定ウィンドウの「ROMにすべて保存」ボタンを押して書く込んでください。
■解説
⓪ユーザーが無線コントローラでボタンデータ”10”のボタンを押します。
①「手を振る(ボタン分岐)」モーションが呼び出され、スタートフラッグのPos0から処理スタート
②「CmpButton」でボタンの状態を確認します。
True:まだボタンデータ”10”が押されている
False:ボタンデータ”10”が押されていない
Trueの場合は、オレンジ色の分岐接続線の方に処理されます。つまり、手を振る動作のループを繰り返すことになります。ボタンから指が離れている、または別のボタンが押されている状態になるとFalseになりますので、青い線の方に処理され、ループから処理が抜けます。
③ホームポジションに戻り、モーションが終了します。
■使用例「歩行モーション」
以下は、KXR-L2の「XL2_109_高速歩行前.xml」モーションです。
このモーション内には、CmpButtonコントロールが2つあります。これは、右脚、左脚で分かれているためです。右脚を出し、ボタンが押されていれば左脚を出す。左脚を出し、ボタンが押されていれば右脚を出すという処理を行うことで、半歩ずつのタイミングで歩行を停止することができます。処理自体は、上記でボタンを押されている間、腕を振り続ける処理と同じです。
■処理を一時停止する
これまでは、ボタンが押されている間、動作し続ける方法を解説しましたが、CmpButtonを利用すればボタンが押されている間、処理を一時停止することも可能です。
これにより、バトルでボタンが押されている間振りかぶった状態で停止したり、サッカーでシュートのタイミングをずらすことができるようになります。特定のポーズで停止して撮影用に使用するのも良いかもしれませんね。
一時停止するには、下記のように配線します。
指定したボタンが押されていると、一つ前のPos1に処理が戻ります。同じPosで処理が繰り返されますので、Pos1のポーズのまま処理が停止することになります。
画像では、接続線が途中で折れ曲がっています。接続線は、配線途中に空いてるスペースを左クリックすることで、線が折れるポイントを置くことができます。コントロールが増えてくると、コントロールと接続線が重なってしまう場合がありますが、線を折ることによりわかりやすく配線できるようになります。
以上でCmpButtonの解説を終了します。
CmpButtonを利用することで、モーション作成の幅が広がります。簡単に利用できますので、ぜひお試しください。
次の記事
HeartToHeart4講座(4-4) サーボのストレッチを調整する
HeartToHeart4の詳細をみる KHR-3HV Ver.3.1 リフェバッテリー付きセットの詳細をみる KHR-3HV Ver.3 リフェバッテリー付きセットの詳細をみる RCB-4HVボードのみの詳細をみる RCB-4miniの詳細をみる KHR-3HV Ver.2 リフェバッテリー付きセットの詳細をみる KXR-L2 ヒューマノイド型 Ver.2の詳細をみる KXR-L4T-R カメ型・ローバー型 Ver.2(アカデミックパック)の詳細をみる KXR-A5 アーム型 Ver.2の詳細をみる KXR アドバンスセットA Ver.2の詳細をみる KXR アドバンスセットB Ver.2の詳細をみる