ロボティクス・メカトロニクス講演会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
© Copyright 2025 ExpyDoc