HeartToHeart4講座(4-1) センサによるモーション分岐機能
『HeartToHeart4講座』の第四章を始めます。第三章では、モーションを1から作成する方法を解説しましたが、第四章ではモーション作りに便利な機能をご紹介していきます。第一回の記事は「センサーの値による分岐」です。
この記事では、加速度センサRAS-3を使用して、ロボットが転倒したときにうつ伏せに倒れているか、仰向けに倒れているかを検知し、起き上がりモーションを自動判別するプログラムを作成しながら機能について解説します。
同時に、モーション内から別のモーションにジャンプする機能についても解説します。
【関連記事】
第一章~第三章については下記のページからご参照ください。
加速度センサの搭載方法は、下記のページからマニュアルをダウンロードしてご参照ください。
・KHR-3HVの場合
使用するセンサ:RAS-3 Aセット(ZH⇔サーボコネクタ付属)
マニュアル:『KHR-3HVオプション搭載マニュアル(加速度センサーRAS-3)』
・KXRシリーズの場合
使用するセンサ:RAS-3 Bセット(ZH⇔ZH付属)
マニュアル:『加速度センサーを搭載する』
※以下の記事は、KXR-L2をサンプルに使用しています。KHR-3HVでも同様の方法でモーションを作成できますが、センサの搭載方向、ADポートへの接続先が異なります。
■CmpADとは
RCB-4には、5V駆動のアナログセンサを接続することができます。CmpADを使用することで、センサの値によりモーションを分岐することが可能です。
■MotionJumpとは
モーションジャンプは、現在再生しているモーションから別のモーションにジャンプすることができます。CmpADやCmpButton(ボタン分岐)などと組み合わせて使用すると非常に便利です。また、ダンスモーションをパートごとに作成し、MotionJumpで繋げるような使用方法もあります。
■使用方法
1)プロジェクトを展開している状態で、「モーション」ツールバーの「新規作成」ボタンを押し、モーション編集ウィンドウを新規作成します。
2)モーション名を変更します。タブで右クリックし「名前を変更」を選択してください。例では「起き上がり(分岐)」としました。
3)ツールボックスウィンドウから「CmpAD」2個と「MotionJump」2個をドラックアンドドロップして配置します。また、別のモーションから「ホームポジション」をコピペします。
4)「接続」ボタンをONにして下記のように配線します。
5)「分岐接続」ボタンをONにして下記のように配線します。
6)PCとロボットが通信できるように準備し、ロボットの電源を入れます。
7)ツールバーの「Sync」ボタンをONにします。
8)まずは、うつ伏せの時の処理を作成します。「CmpAD0」コントロールをダブルクリックして開きます。「ポート」から加速度センサのY軸が接続されているポートを選択します。KXRの場合は、マニュアル通り配線するとAD5に接続されています。KHR-3HVの場合は、Z軸=AD3です。
9)開いているダイアログ内の「Sync」ボタンを押すと、AD5端子の現在の値が「AD値」にリアルタイムで表示されます。まずは、ロボットが直立の状態で「AD値」を確認してください。例では、316になりました。
10)次にロボットをうつ伏せにして「AD値」を確認してください。例では118になりました。
10)ロボットが直立の状態からうつ伏せに倒れると、「316」から「118」へAD値が小さくなります。そこで「比較」を「<」に選択し、「比較する値」は「130」と入力します。
これにより、「AD5が130未満(<)の値になるとTrue」という分岐ができるようになりました。
設定した後に、ロボットがうつぶせの状態で「真偽」が「True」になれば正常に分岐できています。ダイアログのOKボタンで閉じます。
※「True」は、「設定した条件に合っている」、「False」は「設定した条件に合っていない」を指します。
「比較する値」をそのまま「118」にしてしまうと、床面のちょっとした段差で「122」などになり、うまく分岐できない可能性があります。少し余裕をもって数値を設定するようにしてください。
11)次に、仰向けの時の処理を作成します。CmpAD1をダブルクリックして開きます。CmpAD0の時と同じ「ポート」を選択し、ダイアログ内の「Sync」ボタンを押してください。うつ伏せの時は、「AD値」は523になりました。
12)ロボットが直立の状態から仰向けに倒れると、「316」から「523」へAD値が大きくなります。そこで「比較」を「>」に選択し、「比較する値」は「510」と入力します。
これにより、「AD5が510を超える(>)値になるとTrue」という分岐ができるようになりました。
設定した後に、ロボットが仰向けの状態で「真偽」が「True」になれば正常に分岐できています。ダイアログのOKボタンで閉じます。
13)分岐の作成ができましたの、仕上げにMotionJumpを設定します。「MotionJump2」コントロールをダブルクリックして開きます。
14)MotionJump2は、CmpAD0がTrueになった時に分岐先のコントロールです。CmpAD0がTrueの時は、ロボットがうつ伏せになっている状態ですので「起き上がり(うつ伏せ)」を選択します。OKボタンでダイアログを閉じてください。
15)「MotionJump3」コントロールを開きます。こちらは仰向けからの分岐ですので「起き上がり(仰向け)」を選択し、OKボタンで閉じます。
16)全ての作成手順が完了しました。モーション編集ウィンドウの「ビルド」ボタンを押し、リストの中で空いている箇所を選択し、OKボタンを押します。
モーションの書き込みについては『HeartToHeart4講座(3-5) モーションを書き込む』を参照してください。
モーションの書き込みが完了しました。
17)モーション一覧ウィンドウからモーションを再生してください。倒れた状態から、正確にモーションが再生できれば成功です。
■解説
⓪ロボットが転倒したことをきっかけに、ユーザーがこの「起き上がり(分岐)」モーションを再生します。
①「CmpAD0」で加速度センサの値を確認。
True:AD値が130未満だったら②の処理に移ります。
→MotionJumpにより「起き上がり(うつ伏せ)」を再生
False:AD値が130以上だったら③の処理に移ります。
③「CmpAD1」で加速度センサの値を確認。
True:AD値が510を超える値だったら④の処理に移ります。
→MotionJumpにより「起き上がり(仰向け)」を再生
False:AD値が510以下だったら⑤の処理に移ります。
⑤転倒していないと判断し、ホームポジションに戻ります。
⑤の処理が実行される状況は、ロボットが直立のまま「起き上がり(分岐)」を再生してしまった時が想定できます。直立のままこのモーションを再生すると、今の構成では何も反応がありませんので、CmpADを追加して直立時の反応を追加するとわかりやすくなります。ご自身でアレンジしてみてください。
以上でCmpADの解説を終了します。
RCB-4のADポートには、距離を計測できるPSDセンサを接続できます。過去の記事で簡単な自律制御について解説しています。PSDセンサを利用し、周りの物体との距離を計測し、自動でモーションを再生します。こちらもぜひご一読ください。
次の記事
HeartToHeart4講座(4-2) ミキシング機能を利用した姿勢補正
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の詳細をみる