多足歩行ロボット制御用共通インターフ ェース

RTCの設計方針について

インターフェースの説明の前に、多足歩行ロボットのRTCの設計方針について述べる。 まず、対象とする多足歩行ロボットは自律移動機能共通インタフェースに準拠し、起動追従RTC等から目標速度を入力可能とする。

leggedrobotmanual5.png

四足歩行ロボットの歩容だけでもクロール歩容、間歇クロール歩容、トロット歩容等様々な種類があり、ロボットの機構もさまざまであることから、四足歩行ロボット制御RTCを適当な粒度に分割する。

  • 脚運動生成系: 目標足先軌道の生成(遊脚軌道含む)
  • 足先軌道制御系: 目標足先軌道から目標関節角度(角速度) の計算
  • 駆動サーボ制御系: 関節駆動サーボの制御

脚運動生成系に関しては四足歩行ロボットの機構への依存が小さく,脚の可動範囲が同じであれば関節の配置や自由度が違っていても歩行は可能である. 足先軌道制御系に関しては四足歩行ロボットの機構に大きく依存する部分であり,脚のリンク長さ,関節位置等詳細なパラメータが既知である必要がある. 駆動サーボ制御系に関しては四足歩行ロボットのハードウェアに直接依存する部分であるが,使用する駆動サーボが同じ場合は四足歩行ロボット以外にも適用可能である.

よって,機構への依存が小さい部分,機構への依存が大きい部分,ハードウェアに依存する部分の3 種類に分割できたため,以下の3 種類の処理を行うRTCを作成しシステムを作成する.

  • 脚運動生成コンポーネント
  • 足先軌道制御コンポーネント
  • 駆動サーボ制御コンポーネント
    leggedrobotmanual6_2.png

足先軌道制御コンポーネントと駆動サーボ制御コンポーネントの間の通信には,駆動サーボ制御コンポーネントが既存のRTC を利用できる可能性があることからデータポートによりTimedDoubleSeq 型等の基本データ型を利用した通信を行うべきである.

脚運動生成コンポーネントと足先軌道制御コンポーネントの間の通信には既存のインターフェースで適当なものが存在しないため、独自のデータ型を定義する。

独自データ型について

多足歩行ロボット制御用共通インターフェースとして、以下のIDLファイルを作成した。

 // -*- IDL -*-
 
 #ifndef LEGGEDROBOTINTERFACE_IDL
 #define LEGGEDROBOTINTERFACE_IDL
 
 #include "BasicDataType.idl"
 #include "ExtendedDataTypes.idl"
 
 module RTC {
     struct Leg
     {
         RTC::Pose3D pose;
         RTC::Velocity3D velocity;
         boolean onGround;
     };
 
 
     struct LeggedRobot
     {
         RTC::Time tm;
         sequence<Leg> leg_data;
         RTC::Velocity3D body_velocity;
         RTC::Pose3D body_pose;
     };
 
 
 }; /* module */
 
 
 
 #endif /* LEGGEDROBOTINTERFACE_IDL */

この共通インターフェースでは以下の図の座標系を使用する。 Σwは床に固定された座標系(ワールド座標系)、Σrはロボットの重心を原点とした座標系(ロボット重心座標系)とする。

coordinate.png

新たに定義したデータ型LeggedRobot型は以下の足先軌道の通信に使用する。 LeggedRobot型はLeg型の配列を保持しており、各脚の目標位置、目標速度をLeg型オブジェクトに格納する。 四足歩行ロボットの場合は、以下のように脚番号を設定してある。

leggedrobotmanual7.png

配列leg_dataには脚0から順に格納する。

Leg型、LeggedRobot型の各変数の内容は以下のとおりである。

Leg型
変数名 意味
pose RTC::Pose3D 目標足先位置(重心座標系)
velocity RTC::Velocity3D 目標足先速度(重心座標系)
onGround boolean 地面に接地する場合はtrue,接地しない場合はfalse
LeggedRobot型
変数名 意味
tm RTC::Time タイムスタンプ
leg_data sequence<Leg> 各脚の足先軌道
body_velocity RTC::Velocity3D 重心の目標速度(ワールド座標系)
body_pose RTC::Pose3D 重心位置(ワールド座標系)

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク