OMG標準準拠ミドルウェアOpenRTM

ロボティクス・メカトロニクス講演会2008
RTミドルウェア
OpenRTM-aist-0.4講習会
日時: 6月5日(木) 10:00-16:00
場所: メルパルク 3F 瑞鳳
2008.06.05 RTミドルウエア講習会
RTミドルウエア講習会
第1部:OMG標準準拠ミドルウェアOpenRTM-aistについて
10:0010:30
担当:安藤慶昭 (産総研)
概要:RTミドルウエアの 新しいリリース OpenRTM-aist-0.4.2の概要について解説します。
第2部:UMLを利用したRTコンポーネントの開発について
10:4512:00
担当:坂本武志(テクノロジックアート)
概要:オブジェクト指向の基本的な考え方,UML2の基本について解説するとともに、UMLモデ
リングツール PatternWeaver for RT-Middlewareを用いたRTコンポーネントの開発方法に
ついて解説します。
第3部:コンポーネント開発実習
13:0016:00
担当:安藤慶昭 (産総研)
概要:OpenRTM-aistでのコンポーネント作成方法を実際に体験していただきます。
2008.06.05 RTミドルウエア講習会
第1部 OMG標準準拠ミドルウェア
OpenRTM-aistについて
独立行政法人 産業技術総合研究所
知能システム研究部門
タスク・インテリジェンス研究グループ
安藤 慶昭
2008.06.05 RTミドルウエア講習会
概要
•
•
•
•
•
•
RTミドルウエアとは
OMG標準化について
RTコンポーネントアーキテクチャ
OpenRTM-aist-0.4.0
Windows版OpenRTM-aist
まとめ
2008.06.05 RTミドルウエア講習会
RTミドルウエアとRTコンポーネント
ロジック
・デバイス制御
・制御アルゴリズム
・アプリケーション
etc…
ソフトウエアモジュール
RTシステム
RTC
RT
コンポーネント
フレームワーク
RT
コンポーネント
RTC
RTC
RTミドルウエア
ロジックを箱(フレームワーク)に入れたもの=RTコンポーネント(RTC)
RTCの実行環境=RTミドルウエア(RTM)
コストの問題
A社製移動ベース
B社製アーム
技術の問題
ニーズの問題
C社製センサ・・・
最新の理論・
アルゴリズム
仕様
RTコンポーネント化
モジュール化・再利用・低コスト化
最新技術を利用可能
多様なニーズに対応
モジュール化により問題解決→サービスロボット実用化
2008.06.05 RTミドルウエア講習会
5
RTコンポーネントとは?
ソフトウエアアーキテクチャの違い
RTC・アプリ
アプリケーション
アプリケーション
ライブラリ
ライブラリ
RTC
RTC
オブジェクト オブジェクト
RTM
ミドルウエア(CORBA)
ミドルウエア(CORBA)
OS
OS
OS
従来ソフトウエアから分散オブジェクトへ
分散オブジェクトからRTCへ
•
•
•
オブジェクト指向開発
言語・OSの壁を越えて利用できる
– インターフェースをIDLで定義
– 各言語へ自動変換
– OS、アーキテクチャの違いを吸収
•
–
–
–
•
ネットワーク透過に利用できる
– 分散システムを容易に構築可能
インターフェースがきちんと決まっている
コンポーネントのメタ情報を取得すること
ができる
–
•
動的な接続や構成の変更ができる
ロボットシステムに特有な機能を提供
–
2008.06.05 RTミドルウエア講習会
IDLで定義された標準インターフェース
呼び出しに対する振る舞いが決まってい
る(OMG RTC 標準仕様)
同じ部品として扱える
後述
RTCの分割と連携
ロボット体内のコンポーネントによる構成例
画像データ
顔位置
問 合せ
カメラ
コ ンポーネント
画像データ
データ・コマンドの流れ
顔認識
コ ンポーネント
人物データ
表情データ
ステレオビジョン
コ ンポーネント
カメラ
コ ンポーネント
ポート
ジェスチャ
軌 道データ
カメラコントロール
音声データ
音声認識
コ ンポーネント
対話
コ ンポーネント
文字データ
頭・腕駆動
コ ンポーネント
音声合成
コ ンポーネント
文字データ
マイク
コ ンポーネント
(モジュール)情報の隠蔽と公開のルールが重要
2008.06.05 RTミドルウエア講習会
RTミドルウエアによるシステム構築例
RTMにより、
ネットワーク上に
分散するRTCを
OS・言語の壁を
越えて接続する
ことができる。
ネットワーク
RTC
ロボットC
ロボットB
ロボットA
RTC
RTC
RTC
RTC RTC RTC
RTM
RTM
RTM
Solaris
FreeBSD
ARTLinux
Linux
Windows
TRON
RTM
RTM
RTM
RTC
RTC
アプリケーション
2008.06.05 RTミドルウエア講習会
RTC
RTC
操作デバイス
RTC
RTC
センサ
RTC同士の接続
は、プログラム
実行中に動的に
行うことが出来る。
モジュール化のメリット
• 再利用性の向上
– 同じコンポーネントをいろいろなシステムに使いまわせる
• 選択肢の多様化
– 同じ機能を持つ複数のモジュールを試すことができる
• 柔軟性の向上
– モジュール接続構成かえるだけで様々なシステムを構築
できる
• 信頼性の向上
– モジュール単位でテスト可能なため信頼性が向上する
• 堅牢性の向上
– システムがモジュールで分割されているので、一つの問
題が全体に波及しにくい
2008.06.05 RTミドルウエア講習会
RTコンポーネント化のメリット
モジュール化のメリットに加えて
• ソフトウエアパターンを提供
– ロボットに特有のソフトウエアパターンを提供することで、
体系的なシステム構築が可能
• フレームワークの提供
– フレームワークが提供されているので、コアのロジックに
集中できる
• 分散ミドルウエア
– ロボット体内LANやネットワークロボットなど、分散システ
ムを容易に構築可能
2008.06.05 RTミドルウエア講習会
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
SDO Interfaces
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
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
2008.06.05 RTミドルウエア講習会
OutPort n
Buffer
reply
InPort
put
get, subscribe
reply
push
OutPort
メタ情報取得
•
パラメータ
メタ情報
– コンポーネントのモデル≒仕様
•
RTCのことはRTCに聞けばわかる
(イントロスペクション機能)
–
–
–
–
–
–
•
コンポーネントの名前・タイプ
ポートの数・種類
ポートのインターフェース情報
ポート毎のプロパティ
パラメータ情報
実行コンテキスト情報
システムの動的構成に不可欠
2008.06.05 RTミドルウエア講習会
A
B
C
名前
値
port0
port4
D
port1
port5
E
port2
port6
Periodic実行
port3
port7
実行コンテキスト
コンポーネントメタ情報の例
コンポーネント名
MyManipulator0
タイプ名
Periodic実行型
port0
Provide: A, Required: B
port1
Provide: C
Port2
DataPort: InPort, velocity, float x6
Port3
DataPort: InPort, position, float x6
Port4
Provide: D
Port5
Required: E
Port6
DataPort: OutPort, status int x1
Port7
DataPort: OutPort, velocity, float x6
実行コンテキスト
周期: 10ms
パラメータ
gain0(float x6), flag(int x1), dev_file(string)
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
•
アクティビティ
– ユーザ定義ロジックの実行
SDO Interfaces
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
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
2008.06.05 RTミドルウエア講習会
OutPort n
Buffer
reply
InPort
put
get, subscribe
reply
push
OutPort
アクティビティ
• ロジックを実行する部分
• 共通の状態遷移を持つ
–
–
–
–
初期化
非アクティブ(OFF状態)
アクティブ状態(ON状態)
エラー(エラー状態)
アームコンポーネントの例
デバイス
初期化処理
アーム
停止
Init
Inactive
センサRTC
Active
アーム
サーボON
Error
アーム
緊急停止
(センサからデータを読む)
制御RTC
(制御出力計算)
アクチュエータRTC
(アクチュエータを駆動)
別々に作成された複数のコンポーネントを
シーケンシャルにリアルタイム実行し
制御等を行うことも可能
→複合コンポーネント
実行コンテキスト
2008.06.05 RTミドルウエア講習会
14
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
•
アクティビティ
– ユーザ定義ロジックの実行
•
データポート
SDO Interfaces
– Data Centric な相互作用
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
RTComponent
Consumer
Service
Proxy
provide
Consumer
Proxy
Activity
Service
provide
use
Architecture
of RT component
State Machine
OutPort0
InPort 0
Buffer
InPort n
put
データポート
get
Buffer
2008.06.05 RTミドルウエア講習会
OutPort n
Buffer
reply
InPort
put
Buffer
get, subscribe
reply
push
OutPort
データポート
•
•
データ指向ポート
連続的なデータの送受信
サーボの例
データポート
データの流れ
– 位置制御サーボ
目標値
• 位置・電圧値
位置
電圧
– 画像処理
-
• 画像データ
• 処理結果
•
•
•
アクティビティ
+
Kp
T Ds
主にロボットの下位レベル処理に利用
同じデータ型のポート同士接続可能
動的に接続・切断可能
コンポーネントA
1
TI s
エンコーダ
コンポーネント
位置
制御器
コ ンポーネント
画像処理の例
画像
データ
コンポーネントB
処理画像
データ
アクティビティ
データ生成
データ取得
処理
データ変数
処理
画像処理
コンポーネント
カメラ
コ ンポーネント
位置データ
3Dデプスデータ
データ変数
カメラ
コ ンポーネント
データポート
アクチュエータ
コンポーネント
画像
データ
ステレオビジョン
コンポーネント
データが自動的に伝送される
2008.06.05 RTミドルウエア講習会
16
データポート
• データ指向(Data Centric)な
ストリームポート
– 型:long, double×6, etc…
• ユーザが任意に定義可能
– 出力:OutPort
– 入力:InPort
• 接続制御(接続時に選択可能)
– Interface type
• CORBA,TCP socket,
other protocol, etc…
Activity
Publisher
CORBA I/F
Notify
put(data)
inport.put(data)
operation
buffer
Original Protocol
(a) “new” type subscription
asynchronous
Raw TCP Socket
(a) Push (publisher/subscriber) communication model
Activity
Publisher
Timer
buffer
put(data)
outport.get() operation
Connected by original protocol
(b) “periodic” type subscription
– Data flow type
• push/pull
Activity
Data transfer through “Original Protocol”
– Subscription type
(b) Pull
communication model
put(data)
• Flush, New, Periodic
synchronous
2008.06.05 RTミドルウエア講習会
(c) “flush” type subscription
17
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
•
アクティビティ
– ユーザ定義ロジックの実行
•
データポート
SDO Interfaces
– Data Centric な相互作用
•
サービスポート
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
– request/response型相互作用
RTComponent
Service
Activity
サービスポート
Service
Consumer
Proxy
provide
Consumer
Proxy
provide
use
Architecture
of RT component
State Machine
OutPort0
InPort 0
Buffer
InPort n
put
データポート
get
Buffer
2008.06.05 RTミドルウエア講習会
OutPort n
Buffer
reply
InPort
put
Buffer
get, subscribe
reply
push
OutPort
サービスポート
•
任意に定義可能なインターフェースを
持つポート
– コマンド・関数を自由に追加
– 他のコンポーネントからアクセス可能
– (本当は標準化したい)
•
内部の詳細な機能にアクセス
–
–
–
–
パラメータ取得・設定
モード切替
処理の依頼と結果取得
etc…
コンポーネントB
コンポーネントA
アクティビティ
サービス
プロキシ
関数呼び出し
サービスポート
2008.06.05 RTミドルウエア講習会
アームインターフェース
サービス
インターフェース
の実体
実際の処理は
ここで行われる
サービスポート
・モード設定関数
・座標系設定関数
・制御パラメータ設定関数
・ヤコビ取得関数
・ステータス取得関数
・etc…
他のコンポーネント・
上位アプリケーションから利用
サービス提供者
(プロバイダ)
サービス利用者
(コンシューマ)
アームの例
手先位置・
速度データ
アーム
コンポーネント
データポート
ステレオビジョンの例
ステレオビジョン
インターフェース
・モード設定関数
・座標系設定関数
・キャリブレーション
- カメラパラメータ設定関数
- 実行関数
- パラメータ取得関数
・etc…
サービスポート
3Dデプス
データ
他のコンポーネント・
上位アプリケーションから利用
画像
データ
ステレオビジョン
コンポーネント
データポート
19
サービスポート
• 任意に定義可能なインター
フェースを持つポート
• サービスプロバイダ
– サービスを提供する
MyRobot
Service
Provider
MyRobot
Service
Consumer
• サービスコンシューマ
Port
– サービスを利用する
• 一つのポートに任意のプロ
バイダ・コンシューマを関連
付けることができる。
• ポートがインターフェースの
接続を管理
2008.06.05 RTミドルウエア講習会
Connect
20
RTコンポーネントアーキテクチャ
•
メタ情報取得
– プロファイル
– どんなコンポーネントか?
•
アクティビティ
– ユーザ定義ロジックの実行
•
データポート
SDO Interfaces
– Data Centric な相互作用
•
サービスポート
RTC Interfaces
RTCEx Interfaces
RTComponent Service
RTCS Consumer
– request/response型相互作用
•
RTComponent
Service
Activity
サービスポート
Service
Consumer
コンフィギュレーション
Proxy
– ユーザ定義の設定
provide
Consumer
Proxy
provide
use
Architecture
of RT component
State Machine
OutPort0
InPort 0
Buffer
InPort n
put
データポート
get
Buffer
2008.06.05 RTミドルウエア講習会
OutPort n
Buffer
reply
InPort
put
Buffer
get, subscribe
reply
push
OutPort
コンフィギュレーション
• コンフィギュレーション
PIDコントローラの例
– パラメータを管理
– コンフィギュレーションセット
Kp
リミッタ
• セット名、名前:値のリスト
• 複数のセットを保持
• セットを切替可能
-
Ki
s
+
Kds
PID制御コンポーネント
複数のセットを
動作時に
切り替えて
使用可能
セット名
名前
値
セット名
名前
値
modeA
名前
値
Kp
Ki
0.6
modeB
名前
値
modeC
名前
値
Kd
Inmax
Inmin
0.01 0.4
5.0
-5.0
Kp
Ki
Kd
Inmax
Inmin
0.8
0.0
0.01 10.0 -10.0
Kp
Ki
Kd
0.3
0.1
0.31 1.0
Inmax
Inmin
-1.0
制御対象やモードに応じて複数のPIDゲインおよび
入力リミッタ値を切り替えて使用することができる。
動作中の切り替えも可能。
2008.06.05 RTミドルウエア講習会
RTCの作成とパッケージ化
RTコンポーネントビルダ
コンポーネント仕様
<rtcomponent>
<profile>
</profile>
:
<port>
ウィザード
</port>
・GUIで入力
</rtcomponent>
ソースコード
自動生成
rtc-template
ソースコード
<rtcomponent>
<profile>
</profile>
:
<port>
</port>
開発・実装
</rtcomponent>
コンパイル
バイナリ
デバッガへ
編集
RTコンポーネントパッケージ
仕様
2008.06.05 RTミドルウエア講習会
ソースコード
バイナリ
RTリポジトリへ
RTC仕様に基づくRTシステム構築
雛形ソース生成
RTC仕様
<rtmodule>
<rtcs>
:
</rtcs>
<configuration>
:
</configuration>
:
</rtmodule>
利用
リポジトリ検索
RTコンポーネント検証
利用
生成
RTコンポーネントビルダ
RTコンポーネントデバッガ
生成
利用
システム構成
検証
利用
シミュレーション
ソースコード
ソースコード
ソースコード
inv
main(void)
{{
inv
main(void)
int
I;
inv
main(void)
{
int
I;I;
: int
: : == b)
ifif(a
{ if{(a(a==
==b)b)
::{
}:
: :} }
}} :
}
再利用
類似システム作成時
知能モジュール仕様
RTリポジトリ
foo Component
bar Component
RTリポジトリ
2008.06.05 RTミドルウエア講習会
RTシステムエディタ
シミュレータ
<rtmodule>
<rtcs>
:
</rtcs>
<configuration>
:
</configuration>
:
</rtmodule>
類似コンポーネント
RTCによるロボットシステムの構築
システム検証
生成
RTシステムエディタ
利用
利用
シミュレーション
ロボットシステム
<rtsystem>
<rtcs>
:
</rtcs>
<configuration>
:
</configuration>
:
</rtsystem>
利用
シナリオ等運用時
Real RT-System Nodes
シミュレータ
2008.06.05 RTミドルウエア講習会
実システム
RT-Network
再利用
類似システム作成時
ロボットシステム仕様
<rtsystem>
<rtcs>
:
</rtcs>
<connections>
:
</connections>
:
</rtsystem>
類似システム
RTCシステムの運用イメージ
RTCシステム仕様 アプリケーション
実システム
2008.06.05 RTミドルウエア講習会
リポジトリ
OMGにおける標準化
OMG (Object Management Group)
• 国際的ソフトウエア標準化団体
• UML、CORBAなどの仕様策定
RFP
Request for Proposal
提案A
• RFPが発行される
• 標準化を希望するベンダが提案
を持ち寄る
• 合意ベースのプロセスに基づき
標準仕様を策定
• ABにおいて承認(事実上の標
準)
• FTFにおいて最終文書化
• OMG標準としてオープンに…
OOの標準化に関して
提案がある人は手を
上げてください
提案B
提案C
提案者間の
合意に基づく
標準化プロセス
AB (Architecture Board:)
=標準作業部会
FTF(Finalization Task Force)
=最終文書化委員会
現在はこの段階
OMG標準
2008.06.05 RTミドルウエア講習会
27
OMG RTC 標準化
•
2005年9月
RFP: Robot Technology Components
(RTCs) 公開。
•
2006年2月
Initial Response : PIM and PSM for
RTComponent を執筆し提出
提案者:AIST(日)、RTI(米)
•
2006年4月
両者の提案を統合した仕様を提案
•
2006年9月
ABにて承認、事実上の国際標準獲得
FTFが組織され最終文書化開始
•
2007年8月
FTFの最後の投票が終了
•
2007年9月
ABにてFTFの結果を報告
•
2007年11月頃
標準仕様公式リリース予定
OpenRTM-aist-1.0リリース予定
2008.06.05 RTミドルウエア講習会
28
OMG標準とOpenRTM-aist
PIM
<<PIM>>
RTC
Specification
<<mapping>>
PSM
<<PSM>>
RTC
CORBA PSM
標準化作業
拡張
仕様の追加
<<PSM>>
RTC
CCM PSM
<<use>>
<<interface>>
OpenRTM-aist
Ext. interface
<<PIM>>
SDO
Specification
<<PSM>>
RTC
Local PSM
他のプラットフォームにおけるモデル
実際に使用するには
インターフェースや
仕様の追加が必要
<<type>>
OpenRTM-aist
Basic types
<<implements>>
実装
Other RTM
OpenRTM-aist
AISTによる実装
2008.06.05 RTミドルウエア講習会
他のベンダによる実装
RTミドルウエアの広がり
OpenRTM-aist
0.2.0 リリース
OMG RTC仕様
初期草案提出
OMG RTC
標準仕様採択
OpenRTM-aist
0.4.0リリース
OMG RTC Spec.
公式リリース予定
RTM0.1
年度
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
NEDO RTミドルウエア
OpenRTM-aist
1.0リリース予定
科研費 若手(B)
科振費 分散コンポーネントシミュレータ
NEDO 次世代ロボット共通基盤開発
今年のロボット大賞2007
優秀賞受賞
工業標準部 標準基盤研究
科振費 環境と作業構造のユニバーサルデザイン
産総研イニシアチブ UCROA
さまざまなプロジェクトで
標準ソフトウエアプラットフォーム
として採用されている
2008.06.05 RTミドルウエア講習会
2010年
NEDO 戦略的先端ロボット要素技術開発
経済産業省・NEDO
次世代ロボット知能化技術開発プロジェクト
次世代ロボット知能化技術開発プロジェクト
• 平成19年度(19億円)~23年度(5年間)
• 開発が計画されている知能モジュール群
– 作業知能(三菱電機、東芝、安川電機、産総研等)
– 移動知能(富士重工、富士通、アイシン、東大等)
– コミュニケーション知能(NEC、ATR等)
•RTミドルウエアを基盤とし
たロボットソフトウエア開発
のための統合プラットフォー
ムを開発
•共通のプラットフォーム上
で、さまざまな知能モジュー
ルを開発する
ソフトウェアプラットフォーム
仕様・記述方式の共通化
ソフトウェアツール群
RTCビルダ
要素機能開発
•ハードウェア仕様
•知能モジュール仕様
•ロボットシステム仕様
•作業シナリオ記述
・動作記述
・動作制御記述
RTCデバッガ
RTシステムエディタ
システム開発
ロボット設計支援ツール
RTCリポジトリ
シミュレータ
アプリケーション
動作設計ツール
開発シナリオ作成ツール
実時間SW設計ツール
2008.06.05 RTミドルウエア講習会
OpenRTM-aist-0.4.2
• OpenRTM-aist-0.2.0 (2005年5月リリース)
– 同意書提出者に対して配布
– 100件程度
• OpenRTM-aist-0.3.0
– 共同研究者に対してのみのクローズドなリリース
– サービスの導入
• OpenRTM-aist-0.4.0(2007年5月リリース)
– OMG RTC標準仕様検証のための実装
• OMG標準(RTC)準拠+AIST拡張+ミドルウエア
– LGPL(or個別ライセンスのデュアルライセンス)でリリース
• Web上で一般に公開
• OpenRTM-aist-0.4.2 (2008年5月リリース)
– Windowsへの対応強化(rtc-template関係)
– 様々なOSへの対応 (多様なLinuxディストリビューションへの対応)
– 様々なCORBAへの対応(TAO、MICO)
2008.06.05 RTミドルウエア講習会
Windows版OpenRTM-aist
• OpenRTM-aist-0.4.0 patch-2としてリリース
• OpenRTM-aist-0.4.2
–
–
–
–
UNIXとWindowsで同一ソース
rtc-templateが生成するソースも同一
プロジェクトとソリューションを生成
生成直後はUNIX・Windowsでコンパイル可能
• Windows用インストーラ
– OpenRTM Webサイトからダウンロード可能
•
•
•
•
omniORB (産総研提供)
ACE (産総研提供)
OpenRTM-aist-0.4.2 (産総研提供)
Python2.4 (Python公式リリース)
2008.06.05 RTミドルウエア講習会
まとめ
• RTミドルウエアのコンセプト
– モジュール化によるアプローチ
– RTC・RTMによるロボットシステム構築
• RTミドルウエア:OpenRTM-aist-0.4.2
– アクティビティ
– ポート
– コンフィギュレーション
• OMG標準化
– OMG RTC Specification
• Windows版ソースからのビルド等
2008.06.05 RTミドルウエア講習会
実習に参加される方へ
•
•
•
•
有線・無線とも利用可能ですが、有線接続推奨です。
無線ID「OpenRTM」
ホストPCのFirewallはOFFにしておいてください。
OpenRTMのページは以下からアクセスできます。
– http://192.168.100.200
• インストールし忘れた物がある場合、以下のURLからダウンロードするこ
とができます。
– http://192.168.100.200/pub/
2008.06.05 RTミドルウエア講習会
35