ロボットを自在に制御しよう!

2009年6月15日(月)
松下 光次郎

関節状態の設定~物体群の計算量を軽減する

 複雑な動きをするロボットを作るためには、「関節の可動域の制限」「関節の粘弾性質の調整」「関節の速度制御」が不可欠です。

 これらの関節状態を設定するためには「dJointSet****Param(*****は関節名)」でのモード設定が必要です。例えば、デモバギーの車輪の左右旋回用自由度は、

1)「dParamSuspensionERP」「dParamSuspensionCFM」モードの設定で全車輪の粘弾性質を指定(図2-1左上)
2)後輪は「dParaLoStop」「dParaHiStop」モードで可動域(図2-1右上)が0のため旋回用自由度が凍結、前輪のみ左右旋回可能となっています。

 このように関節状態は複数のモードにより指定でき、関節の用途の幅が広がります。モードの詳細はODEのユーザーガイドサイト(http://www.ode.org/ode-latest-userguide.html)の「7.5.1. Parameter Functions」の表と図2-1を参考にしてください。

 これまでの説明でロボット構造の構築プロセスは終了しました。しかし動力学計算を始めるためには、おのおのの物体がお互いに衝突するかどうかの判定が必要となります。

 つまり、すべての物体がお互いに衝突する設定だと、それだけ多くの衝突計算が必要となりシミュレーションを進めるのに非常に時間がかかってしまいます。そのためODEでは特定の物体群を1個の仮想的な物体(集合体)として取り扱い、計算量を軽減しています。

これにより同じ集合体に属する物体は、衝突することなく、すり抜けることになります。例えばデモバギーにおいては、ボックス型物体1個、ボール型物体3個が同じ集合体に設定されているので、車輪が車体の中に配置されてもはじかれることはありません(図2-2)。

 次に、集合体の設定コードを説明します。集合体の情報は「static dSpaceID」型の変数に収納されることとなります。デモバギーでは集合体の変数「car_space」が宣言され、「dSimpleSpaceCreate」によりシミュレーション空間に関連付けられ、「dSpaceSetCleanup」により初期化が行われています。

 後は「dSpaceAdd」で指定する物体のdGeom型変数を追加するだけで集合体が形成されます。なお、すべての物体はいずれかの集合体に属す必要がありますので、追加のし忘れがないよう気をつけてください。この集合体の考え方は、次回ご説明する接触センサーの構築にも出てきますので、覚えておいてください。

 最後に補足として「dParamFudgeFactor」モードの説明となりますが、関節が勢いよく可動域の限界に到達すると、過度の反発力が生じ関節が吹っ飛んでしまうという現象が起きる場合があります。「dParamFudgeFactor」はこういった過度の反発力を抑制する効果を持っています。

3次元描画機能

 3次元シミュレーションでは、刻み時間ごとに動力学計算された物体の位置・角度情報を獲得し、その情報を基に各物体を画面上に描画することで連続した動きを実現しています。このことから、3次元描画の設定コードの配置は「static void simloop」内となります。それでは、デモバギーの描画コードを参考に描画方法を理解していきましょう。

 基本的に描画は「色の指定→模様の指定→描画コマンド」の流れとなります。まず色の指定については「dsSetColor」に3変数を入力することで決定されます。これら3変数は順番に赤・緑・青に対応しており、代表色は図2-3のように設定されます。各変数に0~1の間の少数を入力すると中間色を表示することも可能です。

 次に、物体の模様は「dsSetTexture」で設定します。デモバギーは木目模様となっており、模様が必要のない場合は削って模様をなくすことも可能です。

 物体の描画コマンドは物体の形状に応じて異なります。そのため、ボックス型は「dsDrawBox」、円柱型は「dsDrawCylinder」、ボール型は「dsDrawSpehere」、カプセル型は「dsDrawCapsule」を利用します。これらの使用法は共通しており、物体の現在の位置「dBodyGetPosition(body[0])」・角度「dBodyGetRotation(body[0])」・サイズを入力すれば、自動的に三次元描画が行われることとなります。

 各物体のサイズは、物体生成コードで入力したサイズと同じにする必要があります。しかし場合によっては見た目をよくするために、実際に動力学計算で扱っているのとは異なる形状で描画しても良いでしょう。例えば、第2回で説明しましたが、デモバギーの車輪は円柱型に見えても、動力学計算上はボール型として扱っている、といった具合です(図2-4)。

電気通信大学
電気通信大学 電気通信学部 知能機械工学科特任助教。脚移動ロボットや電動装具の研究開発の経験を生かし、近年、ロボット教育に力を入れている。特に中学生・高校生に科学技術への興味をもってもらうため、安価なロボット開発法をWebサイト(http://www.koj-m.sakura.ne.jp)にて紹介することや、ものづくり体験型の講演活動を積極的に行っている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています