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

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

 

第5回 サーボモータ出力式の拡張設定

今回は、サーボモータ出力式の拡張設定について説明します。
また、おそらくこの記事だけではボリュームが足りなくなると思うので、これまで特に説明してこなかった スキン画像やブロックの表示など画面表示に関する設定についても説明したいと思います。

サーボモータ出力式は、通常のポーズの角度値に加えてジャイロセンサやその他のデバイスをサーボモータ にフィードバックさせるための設定です。
この設定によってさまざまなデバイスの情報をリアルタイムにサーボモータに反映させることができ、たと えばジャイロセンサで姿勢制御を行なって激しい動きでも倒れにくくすることなどが可能になります。
サーボモータ出力式の設定はRobovieMaker for VS-RC003にもありましたが、RobovieMaker2ではこの設定が 更に拡張され、一度にフィードバックさせる変数や係数の設定が大幅に増加しています。

ちなみに、RobovieMaker for VS-RC003の講習でもサーボモータ出力式の設定の説明は登場していま す。
初めてこの設定を見る場合は、まずは以前の連載を一読されることをお勧めします。

せっかくだからフィードバック

それでは、早速サーボモータ出力式の設定項目を見てみましょう。
PCとCPUボードを接続してRobovieMaker2から通信を開始し、メニューの「プロジェクトの設定」→「CPUの 設定」をクリックしてください。
クリックすると以下のダイアログを表示するので、「サーボモータ出力」のタブインデックスをクリックし ます。
サーボモータの脱力設定の回にも登場しましたが、ダイアログ中央がサーボモータ出力式の設定です。
ためしにRobovieMaker for VS-RC003の設定式と比べてみましょう。

サーボ出力式の設定
サーボ出力式の設定。
Va1〜4、Vb1〜4に参照変数、余白のエディットボックスに係数を代入する。

参考:RobovieMaker for VS-RC003のサーボ出力式の設定
以前のバージョン(RobovieMaker for VS-RC003)のサーボ出力式の設定。
参照できる変数が3つ、設定できる係数が1つまでと制約が大きい

両者で若干書式が統一されていないのでややこしくはありますが、基本的に指揮中の記号の意味は「x=サー ボモータに実際に送信される角度値(式の解)」「v=任意の変数」「k=-32768〜32767の範囲で設定する定 数」という仕様で統一されています。
さて、従来と比べて具体的に式がどのように変わったのかは、ダイアログのとおりに実際に方程式を書いて みればよくわかります。

・RobovieMaker for VS-RC003
出力値 = 変数0 + (変数1/256 * 変数2/256 * 係数)

・RobovieMaker2
出力値 = 変数0 + (変数1/256 * 変数2/256 * 係数1)
                     + (変数3/256 * 変数4/256 * 係数2)
                     + (変数5/256 * 変数6/256 * 係数3)
                     + (変数7/256 * 変数8/256 * 係数4)

両方の式に共通して「(変数?/256 * 変数?/256 * 係数?)」という項が出てきますね。また、RobovieMaker2 ではその項が合計4つに増えていることもわかると思います。

式の使い方については、たとえばサーボモータにジャイロセンサの値をフィードバックさせる場合、「[ジ ャイロセンサの実数値]/256 * [ポーズごとのゲインの設定ポーズスライダ番号]/256 * [軸ごとのゲイン値 ]」といった内容を式に代入します。
ゲームパッドのアナログスティックの傾きをフィードバックさせる場合は、これとほぼ同じように「[ステ ィックの傾きの実数値]/256 * [ポーズごとのゲインの設定ポーズスライダ番号]/256 * [軸ごとのゲイン値 ]」と設定します。
ちなみに、変数0には基本的にポーズスライダの値を入れます。そうでないとモーション中のポーズの値が サーボモータに反映されなくなります。
また、上記式の「変数1」以降の変数は、1〜255番の変数を設定します。こちらに0番の変数は使えず、参照 する変数の番号を0にすると、式中はその変数の値が「0」として処理されます。

参考例:ジャイロセンサのフィードバック設定
ジャイロセンサをサーボモータにフィードバックさせる例
Va1にモーション中のポーズ単位でのゲインを設定する「31」、Vb1に生のセンサ値「132」、また軸個別のゲインとして「220」を設定。

さて、それではジャイロとアナログスティックの設定を同時にフィードバックさせたい場合はどうしましょ う?従来は式中に扱える変数の数が最大で三つ、うち一つはポーズスライダの値が代入されるので実質二つ です。また定数も一つしか扱えません。
これでは二つのデバイスを両立させるためにゲインなどの変数設定が足りず、更に計算は掛け算なのでお互 いの実数値が他方に影響を与えてまともに動作しません。
一方RobovieMaker2では、項が4つまで拡張されたので、何も考えずに最初の項にジャイロセンサの設定、次 の項にアナログスティックの設定を入れるだけで済みます。

複数の情報を同時にフィードバックする参考例:ジャイロセンサ+アナログスティック
複数の情報を同時にフィードバックする参考例(ジャイロセンサ+アナログスティック)
最初の項にジャイロセンサの設定、2番目の項にアナログスティックの設定を、それぞれ単純に設定するだけ。

また、たびたび説明するようですが、RobovieMaker2ではモーション中に演算ブロックで変数を操作できる ので、モーション中にポーズのような角度値の決め打ちではなく、パラメトリック(計算的)な関節の動か し方も簡単なものであればできるかもしれません。
代表的なパラメトリックモーションといえば逆運動学ですが、RobovieMaker2ではメモリの制限や低水準寄 りのプログラム処理なので単純な仕組みしかできず、おそらく実現は相当厳しいのではないかと思います( ROMにテーブルを作れない、v[v[5]]のような配列変数の参照ができないので実現不可能?)。

式の項の条件分岐

さて、RobovieMaker2では単純に式の項が増えただけでなく、式中の変数の状態によって計算内容を若干操 作することができます(とはいっても、分岐ブロックや操作マップV2ほどの柔軟性はありませんが)。
この設定を利用した例として、RB2000(ヨー軸拡張機)によるアナログ足踏み歩行があります。
RB2000(ヨー軸拡張機)によるアナログ足踏み歩行はこちらからデータをダウンロードできます。

各項の右に「項の有効条件」という設定がありますが、こちらは、各項のVb1〜Vb4の実際の値に応じて変数 の実数値を「0」として計算=項の解が「0」になるように切り替えるという設定になります。
具体的には、「常に有効」の部分を「Vb[n]>=0」に設定するとVb1〜Vb4の値が負の値の場合、「Vb[n]<=0」 に設定するとVb1〜Vb4の値が正の値の場合に、変数の部分を「0」に置き換えて計算します。
「常に有効」の設定の場合は、変数の値に限らず必ずその値のまま計算します。

この設定の使いどころは割合難しいですが、例えば以下のような設定を行うことで、変数244の値がプラス とマイナスのどちらの場合においても、項1と項2の合計で絶対値が求められます。

「項の有効条件」の設定により絶対値を求めるサンプル
「項の有効条件」の設定により絶対値を求めるサンプル
1,2番目の項をまったく同じ設定にして、係数のみ符号を反転させる。その上で各項の「項の有効条件」を「Vb[n]>=0」と「Vb[n]<=0」に設定すると、Vb1,Vb2の値(図中では変数244)の符号に関係なく、項1と項2の合計の値で絶対値が求まる

また、項の結果にある程度の範囲制限を設けるような使い方も可能です。
例えば、左右のアナログスティックをコントローラの外側に傾けるとRB2000の肩ロール軸が傾きに応じて上 がるような設定を行うと、式の各項目に変数と係数を設定しただけでは、スティックを内側に傾けると体と 腕が干渉してモータロックしてしまいます。
かといって、スティックを内側いっぱいに倒したときにちょうど腕が真下に下がった状態になるよう±0の 位置を少し上げると少し不恰好です。
そこで、「項の有効条件」の設定を「Vb[n]>=0」にすると、アナログスティックを中央から内側に傾ける= アナログスティックの左右の傾きが負の値になると変数の値を「0」として計算するようになり、腕が内側 にめり込むことはありません。

この設定が何に使えるのかというと厳しいところですが、例えばロボットに足踏みをさせて、アナログステ ィックを傾けるとその方向に移動するような動きなどを再現するためには重要な設定となります。細かい設 定はまた機会があれば説明します。

スキン画像の変更

RobovieMakerの画面表示には、別のファイルに保存したbmp形式の画像を読み込んで貼り付ける、という方 法が行なわれています。
例えばポーズエリアの背景画像、ポーズスライダのスピンボタン、チェックボックス、ツマミなども皆外部 のファイルに保存された画像を使用しています。
このように、プログラムの外部のファイルで指定され、画面描画に使用される改変が可能な画像を「スキン 画像」といいます。

スキン画像の変更はRobovieMakerより行なうことができます。
ただし、注意としてスキン画像は当然ながら画面のレイアウトの構成にも影響を与えます。例えば余り変な 形・サイズの画像に改変するとプログラムを使用できないほど画面のレイアウトが崩れる可能性があるので 、充分注意してください。

それではためしにポーズエリアの背景画像を変更してみましょう。
まず680×680サイズの適当な画像を準備しましょう。画像は全体的に明暗が偏っている画像にしてください 。あまりカラフルな画像にするとポーズスライダなどが見づらくなってしまいます。
また、RobovieMakerで使用できる画像ファイルの形式は、「BITMAP形式」のみです。BITMAP形式の画像ファ イルは拡張子が「bmp」になっています。
用意した画像がJPEG,GIF,PNGなど形式の異なる場合は、Windowsに標準で付属している「ペイント」等のソ フトウェアより画像ファイルを開き、ペイントのメニューより「ファイル」→「名前をつけて保存」をクリ ックして、「ファイルの種類」に「???ビットマップ(*.bmp;*.dib)」という種類のものを選択して保存 してください。

ペイントなどで保存する際にはファイルの種類を「ビットマップ」形式にする
RobovieMakerのスキン画像は「ビットマップ」形式飲みに対応している
ペイントなど画像編集ソフトで、ファイルの種類を「ビットマップ」形式で保存すると形式を変更できる

また、基本的に変更するスキン画像はロボットプロジェクトと同じフォルダにおいてください。
デフォルトで使用するスキン画像はRobovieMakerをインストールしたフォルダから読み込まれますが、ユー ザで変更したスキン画像はロボットプロジェクトのフォルダを基準に相対パスで読み込まれます。
そのため、「マイピクチャ」などロボットプロジェクトとはまったく異なるフォルダのファイルを指定する と、ロボットプロジェクトをコピー・移動した時に正しくスキン画像ファイルが読み込めなくなってしまい ます。

画像を準備したらRobovieMakerを立ち上げてメニューより「プロジェクトの設定」→「画面表示の設定」を クリックしてダイアログを表示し、「スキン画像」のタブインデックスをクリックしてください。
クリックすると以下のように画面が切り替わります。

スキン画像の設定ダイアログ
スキン画像の設定ダイアログ

ダイアログの「スキンの種類」の項目では、変更するスキン画像の種類を表示します。また、その下には現 在設定されているファイル名、及びプレビューとファイルの説明が表示されます。
RobovieMaker2で変更できるスキン画像は下記の通りです。
各項目の細かい説明は省きます。変わりに、変更する際の主な注意点を記述します。

  • ポーズエリアの背景:ポーズエリアの背景に表示される大きな画像。余りサイズを大きくする と描画が重くなる場合がある
  • ポーズエリアのスライダ:ポーズスライダのバーの部分。ポーズスライダの選択など当たり判 定はこの画像のサイズを基準とする
  • ポーズエリアのツマミ:ツマミの当たり判定はこの画像サイズを基準とする。ポーズエリアの スライダより大きな画像を使用すると、表示にゴミが残ったり文字などに表示がめり込む場合がある
  • ポーズエリアのスピン:スピンの当たり判定はこの画像サイズを基準とする。
  • ポーズエリアのスライダの基準点:基準ポーズの時のツマミの位置を表す画像。
  • ポーズエリアのツマミの影:現在のポーズの補間状態を表す影のツマミ。基本的にポーズエリ アのツマミと同じ画像を指定する
  • ポーズエリアのチェックボックス:サーボモータの個別脱力機能を制御するチェックボックス 。プレビューで分かるとおり、チェックの有無の2パターンの画像を横に並べる必要がある

画像を変更する場合は、ダイアログの「変更」ボタンをクリックし、差し替える画像ファイルを選択してく ださい。
画像ファイルを選択すると、プレビューに選択した画像が表示されます。その状態でダイアログの「適用」 をクリックすると、ポーズエリアに差し替えた画像ファイルが反映されます。

なお、ファイル選択時に「この画像ファイルのパスは、現在のプロジェクトのフォルダと異なる系統に存在 します〜」という警告ダイアログが表示される場合、前述の通りスキン画像のファイルパスの問題でロボッ トプロジェクトを移動・コピーすると指定したスキン画像が読み込めなくなる可能性のあるファイルです。
差し替える画像ファイルは必ずロボットプロジェクトと同じフォルダに入れてください。

ポーズスライダに関するスキン画像を差し替える場合は、基本的には元の画像と同じサイズのものを使用し てください。
ポーズスライダに関するスキン画像に、極端に大きい・小さい物を使用するとレイアウトが大幅に崩れ、ま たマウスでの操作もおかしくなる場合があります。
また、ポーズスライダの画像を現在のものより小さくすると、ポーズスライダのサイズが縮小できてポーズ エリアを広く使うことができます(ポーズスライダに関するすべての画像を同じ比率で縮小すると、きれい に縮小できます)。

スキン画像を大きく差し替えた参考例
スキン画像を大きく差し替えた参考例
「ポーズスライダ」の画像サイズを小さくし、「ツマミ」「スピン」「基準点」等も別の形に差し替えた場合。

モーションエリアの表示変更

RobovieMaker2では、モーションエリアの表示についても各ブロックの色やフォントなどを変更することが できます。
例えば小さい画面のモバイルPCを使用している場合、モーションエリアのフォントを小さくすることで画面 中のブロックのサイズをある程度縮小でき、見やすくすることができます。
モーションエリアの表示変更については、スキン画像のようにファイルを用意する必要が無く、またレイア ウトに影響を与えないように気を使うことも余りありません。
ただし、異常に大きい・小さいフォントを指定したり、いくつかの設定項目で類似した配色を使用すると、 画面が見づらくなってしまいます。

モーションエリアの表示変更を行なう場合は、RobovieMakerのメニューより「プロジェクトの設定」→「画 面表示の設定」をクリックしてダイアログを表示し、「その他」のタブインデックスをクリックしてくださ い。
クリックすると以下のように画面が切り替わります。

モーションエリアのレイアウト変更ダイアログ
モーションエリアのレイアウト変更ダイアログ
モーションエリアの表示に使われる各部の色やフォントを変更できる
また、「グリッド」の設定でブロックをSHIFTキーを押しながらドラッグした時に動く座標の分解能を設定できる

ダイアログの「モーションエリアの表示設定」の項目でモーションエリアのレイアウトを変更できます。
「設定項目の選択」には、色やフォントを変更できる項目が表示されています。ここで選択できる項目の概 要は大まかに下記の通りとなっています。

  • 背景:モーションエリアの背景色を設定
  • ???ブロックの背景:該当する種類のブロックを塗りつぶす色を設定
  • ??のフロー・選択中の矢印:該当するフロー(矢印)の色を設定
  • ブロックの線:各ブロックの外枠の色を設定
  • フォント:各ブロックの文字表示のフォント・サイズ・色を設定

それぞれ変更したい項目を選択し、ダイアログの「変更」をクリックすると、設定を変更するダイアログを 表示します。

表示を大幅に変えたモーションエリア
表示を大幅に変えたモーションエリア
各ブロックの背景色(塗りつぶし)、ブロックの線の色などを差し替え、フォントを大きくした場合
逆にフォントを小さくするとブロックのサイズも小さくできる

また、「モーションエリアの表示設定」の項目に含まれる「グリッド」は、ブロックを整列させるピクセル の単位の設定です。
モーションエリアのブロックをマウスのドラッグで動かす時に、SHIFTキーを押しながら行なうと、この「 グリッド」で設定したピクセルの単位(分解能)でブロックが動きます。

最後に

さて、今回までで一通りの機能紹介は完了しました。
また何か企画があれば逐次公開していきたいと思います。


前のページ
第4回 操作マップV2について
コンテンツのトップ 次のページ
第6回 モーションデータのフォーマットを解読する


検索
Loading
メインメニュー