二足歩行ロボットコミュニティサイト

【サイトの使い方】  【サイトマップ】  【お問い合わせ】 
ロボット動画  |   ロボット写真  |   BBS  |   ダウンロード  |   イベント予定  |   スタッフ日記  |   リンク  |  
ログイン パスワード    新規登録   パスワード紛失  

 

第3回 サーボモータの個別脱力機能

RobovieMaker2 Release1(バージョン1,0,0,1)について、モーションのファイルへの保存の際に演算ブロックの右辺の参照数値を変数に設定していても定数の設定として保存されるというバグが判明しました。
現在公式サポートページでこの点を修正したバージョン(Release2 1,0,0,2)を配布しています。Release1をお使いの方はバージョンアップしてお使いください。
さて、今回はRobovieMaker2で新しく追加されたサーボモータの個別脱力機能について説明します。

サーボモータ個別脱力機能とは、その名の通りモーション中など任意のタイミングで任意のサーボモータを脱力する機能です。
これまでサーボモータの脱力はコントローラのSTART+SELECTで、すべてのサーボモータのON/OFFを一括して行なうのみでしたが、RobovieMaker2では、動作の途中で一部の関節だけ脱力するようなモーションを作成したり、また設定を変更してコントローラのボタン入力など任意の変数の状態に応じて脱力させるようなことも可能です。

ポーズスライダのチェックボックス

RobovieMaker2のポーズエリアを見ると分かるとおり、0〜29のサーボモータを操作するポーズスライダには、左端にチェックボックスが追加されています。
これがモーション中にサーボモータのON/OFFを切り替えるインターフェースとなります。
試しにサーボモータを個別に脱力してみましょう。まずロボットと通信してサーボモータをONにしてみてください。その状態でチェックボックスをクリックしてチェックを外すと、そのサーボモータが脱力します。
もう一度クリックしてチェックを入れるとサーボモータがONになります。

ポーズスライダのチェックボックス
0〜29のポーズスライダに、サーボモータ個別脱力機能を設定するチェックボックスが追加されている
チェックを入れるとサーボON,外すとサーボOFFになる。
設定はポーズごとに記録され、モーション中の任意のポーズで脱力設定が可能。

「モーション中の任意のタイミングで脱力可能」と説明したとおり、このチェックの設定はポーズごとに記録されます。
例えばジャンプモーションでジャンプした後に着地の際のサーボギアへの負担を和らげるため、着地のタイミングに合わせて該当ポーズを脱力させることも可能です。
モーション再生中に脱力機能でサーボモータのON/OFFが切り替わるタイミングは、音声の再生タイミングと同じ「3.遷移前同期切替」で行なわれます。
ということは、モーション再生中に脱力機能を切り替えるポーズを実行した場合、遷移を開始する瞬間にON/OFFが切り替わるということですね。

脱力機能の細かい設定

最新の変数表を確認すると、62,63番目の変数にそれぞれ「サーボモータ脱力機能の設定変数(CN1-1〜CN3-4)」「サーボモータ脱力機能の設定変数(CN3-5〜CN5-6)」と表記されています。
サーボモータの脱力機能は、ON/OFFの状態を任意の変数の任意のbitを確認して切り替わります。
従来のRobovieMaker for VS-RC003ではポーズスライダとして使用していた62,63番目の変数は、サーボモータ脱力機能専用の変数となったため、RobovieMaker2ではポーズスライダとして使用できなくなっています。
ただし、機能上は従来と同じく与えられたポーズによって常に値が補間されており、ポーズ値として各チェックボックスの設定をまとめた値が、補間方法として「3.遷移前同期切替」が設定されるため、モーションと同期して脱力ができています。
(そのため、新しいファームウェアでも従来のRobovieMaker for VS-RC003で62,63のポーズスライダが問題なく使えます)。

変数表
62,63の変数が、従来のポーズスライダの値からサーボモータ脱力機能の設定に変更されている。
ただ、挙動自体は従来のように与えられたポーズで補完するので、モーションと同期して脱力が切り替えられる。

これでは必ずサーボモータの脱力機能は62,63番目の変数のみを参照すると思えますが、実は脱力設定を参照する変数は任意に変更することができます。
CPUボードと通信を開始し、メニューの「プロジェクトの設定」→「CPUの設定」をクリックし、表示されたダイアログより「サーボモータ出力」のタブインデックスをクリックしてください。
クリックするとダイアログの下部に「脱力機能設定」という項目があります(サーボ出力式の変わり様はまた後の回で説明します)。

「CPUボードの設定」の「脱力機能設定」
「CPUボードの設定」のダイアログに新しく追加された「脱力機能設定」。
「脱力機能有効」で機能自体の有効・無効切替、「参照変数」と「参照ビット番号」に脱力設定の数値を参照する変数と、その中の0(ON),1(OFF)を参照するビット番号を設定する

「脱力機能有効」のチェックボックスは、各サーボモータで脱力機能を有効にするかどうかを設定します。このチェックを外すとその軸のサーボモータの脱力機能が無効になります。
「参照変数」は、脱力設定を参照する変数の番号を設定します。
「参照ビット番号」は、「参照変数」で設定した変数のどのbitを脱力状態として参照するかを設定します。CPUボードの変数は16bitなので設定範囲は0〜15になります。また、数値が小さいほど下の桁を表します。

では、具体例としてゲームパッドの「R1」ボタンを押している間サーボモータが脱力するようにしてみます。
ゲームパッドの入力はCPUボードより241番目の変数にリアルタイムで書き込まれます。各bitが一つのボタンに相当し、R1ボタンは下から3番目のbitにあたります。
それでは、任意のサーボモータについて「脱力機能有効」にチェックが入っていることを確認し、「参照変数」に241、「参照ビット番号」に3を設定してください。
このとき首ヨー軸など脱力してもロボットの動作にあまり影響を及ぼさない軸でテストするとよいです。
設定を行なったら、モードスイッチの設定書き込みダイアログでCPUボードのROMに設定を書き込んでください。

ゲームパッドのR1ボタン入力でサーボモータが脱力するよう設定変更
ゲームパッドのR1ボタン入力でサーボモータが脱力するよう設定変更。
ここで設定を変更すると、当然ながらポーズスライダのチェックボックスがサーボモータ脱力設定として機能しなくなる

書き込みが完了したらCPUボードと通信してサーボモータをONにし、コントローラのR1ボタンを押してみてください。ボタンを押している間設定を変更した関節が脱力すれば正しく設定されています。
241番目の変数は、コントローラの入力が何も無い場合は0になります。コントローラのボタンを押すと、変数中の入力のあったボタンに相当するbitが1になります。
脱力設定については「bitが0でサーボモータがON」「bitが1でサーボモータがOFF」と通常の感覚とは逆になっているので、入力が無く変数が「0」の場合はサーボモータがON、ボタン入力によりbitが「1」になると脱力します。
この「bitが0でサーボモータがON」「bitが1でサーボモータがOFF」という点は間違えやすいので注意してください。
この設定変更を応用して、ポーズスライダの一つのチェックボックスに複数分の脱力をまとめて設定するような使い方も可能です。

ちなみに、参照変数や参照ビット番号の設定を変更すると、当然ながらポーズスライダのチェックボックスをチェックしてもサーボモータのON/OFFが切り替わらなくなりますのでご注意ください。

サーボモータ脱力機能が正しく動かない場合

CPUボードへのデータ書き込みや初期化に失敗したりした場合、稀にサーボモータの脱力設定が使えなくなる場合があります。
これは、初期化に失敗した際にCPUボードのサーボモータ脱力機能の設定を保存しているROM領域が0にクリアされる場合があり、この設定がすべて0の場合は「脱力機能有効」の設定が無効に、また「参照変数」と「参照ビット番号」が0に設定された状態になります。
この場合、メニューの「プロジェクトの設定」→「CPUの設定」のサーボモータ出力の設定で正しい設定に戻すことで使用できるようになります。

各chの設定は下記の通りです。すべてのchの設定で「脱力機能有効」にチェックを入れ、下記の一覧に従って各chの「参照変数」と「参照ビット番号」を設定してください。
ちなみに、30chすべてを設定するのは大変なので、実際に使用しているchのみ設定すると楽です(ただし参照変数やビット番号を間違えて設定しないように注意してください)。

  • CN1-1(0):参照変数62、参照ビット番号0
  • CN1-2(1):参照変数62、参照ビット番号1
  • CN1-3(2):参照変数62、参照ビット番号2
  • CN1-4(3):参照変数62、参照ビット番号3
  • CN1-5(4):参照変数62、参照ビット番号4
  • CN1-6(5):参照変数62、参照ビット番号5
  • CN2-1(6):参照変数62、参照ビット番号6
  • CN2-2(7):参照変数62、参照ビット番号7
  • CN2-3(8):参照変数62、参照ビット番号8
  • CN2-4(9):参照変数62、参照ビット番号9
  • CN2-5(10):参照変数62、参照ビット番号10
  • CN2-6(11):参照変数62、参照ビット番号11
  • CN3-1(12):参照変数62、参照ビット番号12
  • CN3-2(13):参照変数62、参照ビット番号13
  • CN3-3(14):参照変数62、参照ビット番号14
  • CN3-4(15):参照変数62、参照ビット番号15
  • CN3-5(16):参照変数63、参照ビット番号0
  • CN3-6(17):参照変数63、参照ビット番号1
  • CN4-1(18):参照変数63、参照ビット番号2
  • CN4-2(19):参照変数63、参照ビット番号3
  • CN4-3(20):参照変数63、参照ビット番号4
  • CN4-4(21):参照変数63、参照ビット番号5
  • CN4-5(22):参照変数63、参照ビット番号6
  • CN4-6(23):参照変数63、参照ビット番号7
  • CN5-1(24):参照変数63、参照ビット番号8
  • CN5-2(25):参照変数63、参照ビット番号9
  • CN5-3(26):参照変数63、参照ビット番号10
  • CN5-4(27):参照変数63、参照ビット番号11
  • CN5-5(28):参照変数63、参照ビット番号12
  • CN5-6(29):参照変数63、参照ビット番号13

脱力機能のチェックボックスの転用

先ほど軽く触れましたが、サーボモータ脱力機能の参照変数や参照ビット番号を設定変更するとポーズスライダのサーボモータ脱力機能用のチェックボックスが本来の脱力機能用として動作しなくなります。
しかし、チェックを切り替えることで62,63番の変数の該当bitの値は切り替わっています。
これを利用して、このチェックボックスを脱力以外の設定項目に転用するという荒業もあります。

具体的な例として、16chDIO基板「VS-IX007」のデジタル出力の値として使用するという方法を説明します。
「VS-IX007」の詳細設定ダイアログでは、各chを入出力のどちらで使用するか、また、入力の結果が書き込まれる変数、出力の際に参照される変数などが設定できます。
ここで、デジタル入出力の0〜15すべてのchをOutputで使用する設定にし、0〜7chのOutput参照変数に62、8〜15chのOutput参照変数に63を設定することで、ポーズスライダの0〜7、16〜23のチェックボックスを操作することでデジタル出力の値が変化します。

DIOのoutputで62,63の変数を設定
DIOのoutputで62,63の変数を設定。
これで、ポーズスライダの0〜7、16〜23のチェックボックスを操作することでデジタル出力の値が変化する。

もちろん62,63を脱力機能として使用している場合でも変数の内容は変わるので、脱力機能とデジタル出力を同時に使用することも可能です。
例えばデジタル出力の先にLEDを接続し、サーボモータのOFFとLEDの点灯を同期させるような使い方もできます。
ただし、VS-IX007は変数の下位8bitしか使わないなど、用途によって制約が発生したりします(この場合、ポーズスライダの0〜7、16〜23しかデジタル出力として機能しません)。
まあ、これは本来の用途ではないので仕方の無いことですが。

最後に

今回は単純な機能だったので内容が比較的簡単だったと思います。
次回は操作マップV2に関して説明したいと思います。
RobovieMaker2で新しく追加された操作マップV2は、フローチャートのモーション作成と並んでロボットを自律化させるためのポイントとなります。
操作マップV2は、モーションの分岐ブロックのように「任意の変数と任意の条件を設定し、その条件が成立すれば割り当てたモーションを再生する」という仕組みになっています。
比較的類似した例を挙げるなら、いわゆるマイコンなどの割り込みベクタテーブルのようなものとなっています。
割り込みのかかる条件=モーション発動条件、また、ジャンプ先のアドレス=実行するモーションという感じに置き換わったと考えられます。


前のページ
第2回 RobovieMaker2でのモーション作成(後編)
コンテンツのトップ 次のページ
第4回 操作マップV2について


検索
Loading
メインメニュー