2007.9.13
DS: 次世代ロボット共通プラットフォーム技術
1I2 13:15 ~ 15:15
分散コンポーネント型ロボットシミュレータ
OpenHRP3
RTコンポーネントを用いた実機と可換な
制御ソフトウェア開発機能
○安藤慶昭,金広文男,中岡慎一郎,神徳徹雄, 末廣尚士, 比留川博久
独立行政法人産業技術総合研究所
知能システム研究部門
概要
• 分散コンポーネント型ロボットシミュレータ
– OpenHRP3
– RTミドルウエア
•
•
•
•
シミュレータと実システムの差異
実行コンテキストの拡張
シミュレータへの適用
まとめ
2
分散コンポーネント型ロボットシミュレータ
OpenHRP3
• ロボット動力学シミュレータ
– OpenHRP2の後継
• RTミドルウエア準拠
– 分散コンポーネントプラットフォ
ーム上に構築
– ロボット制御モジュールのRTコ
ンポーネント化
– 同一のモジュールをシミュレーシ
ョンと実機で使用可能
– 再コンパイルせずに実機に組み
込むことが可能
• 多様なロボットへの対応
RTミドルウエア準拠による
相互接続性・標準化・互換性の向上
3
RTミドルウエア・RTコンポーネントとは?
コアロジック
・デバイス制御
・制御アルゴリズム
・アプリケーション
etc…
RT
コンポーネント
フレームワーク
RT
コンポーネント
ロジックを箱(フレームワーク)に入れたもの=RTコンポーネント(RTC)
共通インターフェースを持つ統一的に扱えるモジュール
RTC RTC RTC RTC RTC RTC RTC RTC
RTミドルウエア
RTCの実行環境(OSのようなもの)=RTミドルウエア(RTM)
※RTCはネットワーク上に分散可能
4
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
•
アクティビティ
– ユーザ定義ロジックの実行
•
データポート
SDO Interfaces
– Data Centric な相互作用
•
サービスポート
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
– request/response型相互作用
•
RTComponent
Consumer
コンフィギュレーション
Service
Proxy
– ユーザ定義の設定
provide
Consumer
Proxy
Activity
Service
provide
use
Architecture
of RT component
State Machine
OutPort0
InPort 0
Buffer
InPort n
put
Buffer
get
Buffer
OutPort n
Buffer
reply
InPort
put
get, subscribe
reply
push
OutPort
シミュレータと実システムの差異
実世界時間
同一のRTコンポーネントを双方で利用したい
実システム
シミュレータ
シミュレータ時間
アクティビティ
アクティビティ
アクティビティ
アクティビティ
シミュレータと実システムでは時間の進み方(進め方)が異なる
アクティビティの実行タイミングを制御しなければならない
RTCコアロジックの実行
・実行コンテキスト(ExecutionContext) = 実行主体 ≒スレッド
・RTコンポーネント⇔実行コンテキスト:動的に関連付けられる
RTミドルウエア
標準コンテキスト
実行コンテキストB
モジュールの
動的ロード
RTコンポーネント RTコンポーネント
実行コンテキストA
コンテキストをアタッチ
コンテキストをアタッチ
異なる実行コンテキストを関連付けることにより
動作形態を動的に変更できる
7
外部トリガ実行コンテキスト
• 外部トリガ実行コンテキスト
– インターフェースを拡張
– tick() オペレーションをコール
– ロジックが1tick分だけ進む
• ロジックの実行タイミングを
外部から制御
– シミュレータ
– デバッガ
などに利用可能
シミュレータでは、関連する全コン
ポーネントの実行タイミングを制御す
る必要がある
シミュレータ時間
tick!
外部トリガ
実行コンテキスト
tick!
拡張インターフェース
同一のコンポーネントを
実機・シミュレータ両方で利用可能
8
OpenHRP3+RTミドルウエア
1.
2.
3.
4.
5.
6.
7.
シミュレーションエンジン部か
らセンサ情報を取得
OutPortから出力
Tickオペレーション呼び出し
コントローラコンポーネントが
制御出力を1周期分計算
OutPortへ出力
ブリッジコンポーネントは
InPortから制御出力を受け取
る
動力学エンジンに制御出力を
セット
ロボット
コントローラ
外部トリガコンテキスト
アクチュエータ入力
Simulator
Scheduler
Dynamics
Engine
Collision
Detector
センサ出力
ブリッジコンポーネント
ブリッジコンポーネントによる統合
コントローラの実機への適用
• シミュレータブリッジコンポーネン
トを、実機のセンサおよびアクチ
ュエータコンポーネントと交換す
る。
• 外部トリガ実行コンテキストをリ
アルタイム実行コンテキストに切
り替える。
• コントローラコンポーネントは再コ
ンパイルすることなく、同一のも
のを使用可能。
リアルタイム実行コンテキスト
同一コンポーネントを実機へ適用可能
アクチュエータ
コンポーネント
センサ
コンポーネント
ロボット実機
まとめ
• 分散コンポーネント型シミュレータ
– OpenHRP3・RTミドルウエア
• コンポーネントのロジック実行の主体
– 実行コンテキスト
• 実行コンテキストを拡張し、コンポーネントを
シミュレータ時間の制御下に置く手法を提案
• OpenHRP3に適用し、RTミドルウエアベース
のシミュレータを実現
RTミドルウエア:OpenRTM-aist web ページ
Google 検索でRTミドルウエア or OpenRTMを入力
11
シミュレータアーキテクチャ
• シミュレータの構成
– コントローラ
– スケジューラ
– シミュレーションエンジン
• スケジューラがシミュレーシ
ョン時間の周期毎に
– input()
– control()
– output()
を呼ぶ。
interface Controller
{
// 略
void control();
void input();
void output();
// 略
};
13
OpenHRP3+OpenRTM
RTcomponent B
RTcomponent
Network
RTcomponent C
RTcomponent A
OutPorts for
Sensors
Adaptor
Component
InPorts for
Actuators
OpenHRP Simulator or Robot Hardware
アクティビティ
• ロジックを実行する部分
• 共通の状態遷移を持つ
–
–
–
–
初期化
非アクティブ(OFF状態)
アクティブ状態(ON状態)
エラー(エラー状態)
• 各状態毎の処理
• 実行コンテキストが実行
• 実行コンテキスト
• スレッドを論理的に表現し
たオブジェクト
アームコンポーネントの例
デバイス
初期化処
理
アーム
停止
Init
Inactive
Active
アーム
サーボON
Error
アーム
緊急停止
実行コンテキスト
任意のタイミングでロジックを実行させたい
→実行コンテキストの拡張
15
ダウンロード

スライド 1 - OpenRTM-aist