情報処理学会連続セミナー2009 「進化する組込みシステム技術」 2nd 組込みソフトウエアプラットフォーム RTミドルウエア -TOPPERSによる組込み機器への展開- 安藤慶昭 独立行政法人産業技術総合研究所 知能システム研究部門 産総研 • 独立行政法人産業技術総合研究所 – 「ライフサイエンス」「情報・通信」「環境・エネルギー」「ナノテク・材料・製造」 「地質・海洋」「標準・計測」の6分野 – 研究者: 約2000名 • 知能システム研究部門 – 「統合知能」 「タスク・ビジョン」 「ヒューマノイド」「インタラクティブモデリング」「ディペン ダブルシステム」「サービスロボティクス」「フィールドロボティクス」の7グループ、「ソフト ウエアプラットフォーム研究班」、「AIST-CNRSロボット工学連携研究体」 – 研究者: 約60名(全体約150名) 2 アナリシスからシンセシスへ scientific principals robot human being animal insect RT based system analysis nature synthesis integration artifact 3 RTとは? • RT = Robot Technology cf. IT – ≠Real-time – 単体のロボットだけでなく、さまざまなロボット技術に基づく機能要素 をも含む (センサ、アクチュエータ, 制御スキーム、アルゴリズム、 etc….) 産総研版RTミドルウエア + + + + OpenRTM-aist + RT-Middleware • RT-Middleware (RTM) – RT要素のインテグレーションのためのミドルウエア • RT-Component (RTC) – RT-Middlewareにおけるソフトウエアの基本単位 4 体系的システム開発 開発者の経験やノウハウに依存したロボットシステム開発 体系的システムデザイン: 分析、設計、実装の一連の流れ 5 RTミドルウエアプロジェクト NEDO 21世紀ロボットチャレンジプログラム(2002-2004年度) 「ロボット機能発現のために必要な要素技術開発」 • RT分野のアプリケーション全体に広く共通的に使わ れる機能およびRT要素の部品化(モジュール化)の 研究開発 • 分散オブジェクト指向システムのミドルウェアである CORBAをベースとして行う。 • RT要素の分類を行い、モジュール化の形態、必要 な機能、課題、インタフェース仕様などを明確にする。 14年度成果報告書より 6 RTミドルウエアの目的 モジュール化による問題解決 • • • 仕様の明確化 コストの問題 最新技術を容易に利用可能 誰でもロボットが作れる A社製移動ベース B社製アーム 技術の問題 ニーズの問題 多様なユーザ 最新の理論・ アルゴリズム C社製センサ・・・ 仕様 ! ! RTコンポーネント化 モジュール化・再利用 ロボットの低コスト化 ! ! システム開発者 最新技術を利用可能 カスタマイズが容易に 多様なニーズに対応 ロボットシステムインテグレーションによるイノベーション 7 概要 • • • • • • RTとは? RTミドルウエア:OpenRTM-aist 次世代ロボット知能化技術開発プロジェクト RTミドルウエアと組込みシステム 標準化 終わりに 8 RT-Middleware OpenRTM-aist 9 従来のシステムでは… Joystick software Joystick Robot Arm Control software 互換性のあるインターフェース同士は接続可能 Robot Arm 10 従来のシステムでは… Humanoid’s Arm Control software Humanoid’s Arm Joystick software Joystick ロボットによって、インターフェースは色々 互換性が無ければつながらない Robot Arm Control software Robot Arm 11 RTミドルウエアでは… RTミドルウエアは別々に作られた ソフトウエアモジュール同士を繋ぐ ための共通インターフェース を提供する Arm A Control software compatible arm interfaces Humanoid’s Arm Joystick software Joystick ソフトウエアの再利用性の向上 RTシステム構築が容易になる Arm B Control software Robot Arm 12 RTM、RTCとは? ソフトウエアアーキテクチャの違い RTC・アプリ アプリケーション アプリケーション ライブラリ ライブラリ RTC RTC オブジェクト オブジェクト RTM ミドルウエア(CORBA) ミドルウエア(CORBA) OS OS OS 従来ソフトウエアから分散オブジェクトへ 分散オブジェクトからRTCへ • • • オブジェクト指向開発 言語・OSの壁を越えて利用できる – インターフェースをIDLで定義 – 各言語へ自動変換 – OS、アーキテクチャの違いを吸収 • – – – • ネットワーク透過に利用できる – 分散システムを容易に構築可能 インターフェースがきちんと決まっている コンポーネントのメタ情報を取得すること ができる – • IDLで定義された標準インターフェース 呼び出しに対する振る舞いが決まってい る(OMG RTC 標準仕様) 同じ部品として扱える 動的な接続や構成の変更ができる ロボットシステムに特有な機能を提供 – 後述 13 ミドルウエア、コンポーネント、etc… • ミドルウエア – OSとアプリケーション層の中間に位置し、特定の用途に対して利便性、抽象 化向上のために種々の機能を提供するソフトウエア – 例:RDBMS、ORB等。定義は結構曖昧 • 分散オブジェクト(ミドルウエア) – 分散環境において、リモートのオブジェクトに対して透過的アクセスを提供す る仕組み – 例:CORBA、Java RMI、DCOM等 • コンポーネント – 再利用可能なソフトウエアの断片(例えばモジュール)であり、内部の詳細機 能にアクセスするための(シンタクス・セマンティクスともにきちんと定義され た)インターフェースセットをもち、外部に対してはそのインターフェースを介し てある種の機能を提供するモジュール。 • CBSD(Component Based Software Development) – ソフトウエア・システムを構築する際の基本構成要素をコンポーネントとして 構成するソフトウエア開発手法 14 分散オブジェクトとは? • システムの機能分割と分散配置 • ネットワーク透過なオブジェクト • コンポーネント化と再利用 プロキシ オブジェクト オブジェクト指向 + ネットワーク 分散オブジェクト • アプリA アプリB アプリC ミドルウエア 代表例 – – – – – CORBA (Common Object Request Broker Architecture) CCM (CORBA Component Model) JavaRMI (Java Remote Method Invocation) EJB (Enterprise Java Beans) DCOM, HORB etc… 計算機A 計算機B 計算機C 計算機D OS A OS B OS C OS D 15 CORBAの例 <<IDL 定義>> interface MobileRobot { void gotoPos(in position pos); } <<クライアント>> MobileRobot_var robot; 本題にたどり着くまでが面倒 robot = {何らかの方法でオブジェクト参 <<サーバ実装>> class MobileRobot_Impl : public virtual POA_MobileRobot, public virtual PortableServer::RefCountServant Base { void gotoPos(position pos) { MobileRobot::gotoPos の実装 } } 照を取得} // robot = プロキシオブジェクト robot->gotoPos(pos); サーバスケルトン IDL サーバ RTミドルウエアが 全部面倒みます!!メソッド object gotoPos() 呼び出し クライアントスタブ クライアント proxy object call 16 RTミドルウエアとRTコンポーネント ロジック ・デバイス制御 ・制御アルゴリズム ・アプリケーション etc… RT コンポーネント フレームワーク RT コンポーネント ロジックを箱(フレームワーク)に入れたもの=RTコンポーネント(RTC) RTC RTC RTC RTC RTC RTC RTC RTC RTミドルウエア RTCの実行環境(OSのようなもの)=RTミドルウエア(RTM) ※RTCはネットワーク上に分散可能 17 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 OutPort n Buffer reply InPort put get, subscribe reply push OutPort メタ情報取得 • パラメータ メタ情報 – コンポーネントのモデル≒仕様 • RTCのことはRTCに聞けばわかる (イントロスペクション機能) – – – – – – • コンポーネントの名前・タイプ ポートの数・種類 ポートのインターフェース情報 ポート毎のプロパティ パラメータ情報 実行コンテキスト情報 システムの動的構成に不可欠 A B C 名前 値 port0 port4 port1 port5 port2 D E 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 OutPort n Buffer reply InPort put get, subscribe reply push OutPort アクティビティ • ロジックを実行する部分 • 共通の状態遷移を持つ – – – – 初期化 非アクティブ(OFF状態) アクティブ状態(ON状態) エラー(エラー状態) アームコンポーネントの例 デバイス 初期化処理 アーム 停止 Init Inactive センサRTC (センサからデータを読む) Active アーム サーボON Error アーム 緊急停止 制御RTC (制御出力計算) アクチュエータRTC (アクチュエータを駆動) 実行コンテキスト 別々に作成された複数のコンポーネントを シーケンシャルにリアルタイム実行し 制御等を行うことも可能 →複合コンポーネント 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 OutPort n Buffer reply InPort put Buffer get, subscribe reply push OutPort データポート • • データ指向ポート 連続的なデータの送受信 サーボの例 データポート データの流れ – 位置制御サーボ 目標値 • 位置・電圧値 位置 電圧 – 画像処理 - • 画像データ • 処理結果 • • • アクティビティ + Kp T Ds 主にロボットの下位レベル処理に利用 同じデータ型のポート同士接続可能 動的に接続・切断可能 コンポーネントA 1 TI s エンコーダ コンポーネント 位置 制御器 コ ンポーネント 画像処理の例 画像 データ コンポーネントB 処理画像 データ アクティビティ データ生成 データ取得 処理 データ変数 処理 画像処理 コンポーネント カメラ コ ンポーネント カメラ コ ンポーネント データが自動的に伝送される 位置データ 3Dデプスデータ データ変数 データポート アクチュエータ コンポーネント 画像 データ ステレオビジョン コンポーネント 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 OutPort n Buffer reply InPort put Buffer get, subscribe reply push OutPort サービスポート • 任意に定義可能なインターフェースを 持つポート – コマンド・関数を自由に追加 – 他のコンポーネントからアクセス可能 – (本当は標準化したい) • 内部の詳細な機能にアクセス – – – – パラメータ取得・設定 モード切替 処理の依頼と結果取得 etc… コンポーネントB コンポーネントA アクティビティ サービス プロキシ 関数呼び出し サービスポート アームインターフェース サービス インターフェース の実体 実際の処理は ここで行われる サービスポート ・モード設定関数 ・座標系設定関数 ・制御パラメータ設定関数 ・ヤコビ取得関数 ・ステータス取得関数 ・etc… 他のコンポーネント・ 上位アプリケーションから利用 サービス提供者 (プロバイダ) サービス利用者 (コンシューマ) アームの例 手先位置・ 速度データ アーム コンポーネント データポート ステレオビジョンの例 ステレオビジョン インターフェース ・モード設定関数 ・座標系設定関数 ・キャリブレーション - カメラパラメータ設定関数 - 実行関数 - パラメータ取得関数 ・etc… サービスポート 3Dデプス データ 他のコンポーネント・ 上位アプリケーションから利用 画像 データ ステレオビジョン コンポーネント データポート 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 OutPort n Buffer reply InPort put Buffer get, subscribe reply push OutPort コンフィギュレーション • コンフィギュレーション PIDコントローラの例 – パラメータを管理 – コンフィギュレーションセット Kp リミッタ • セット名、名前:値のリスト • 複数のセットを保持 • セットを切替可能 - Ki s + Kds PID制御コンポーネント 複数のセットを 動作時に 切り替えて 使用可能 セット名 名前 値 セット名 名前 値 modeA 名前 値 Kp 0.6 Ki 0.01 Kd 0.4 Inmax 5.0 Inmin -5.0 modeB 名前 値 Kp 0.8 Ki 0.0 Kd 0.01 Inmax 10.0 Inmin -10.0 modeC 名前 値 Kp 0.3 Ki 0.1 Kd 0.31 Inmax 1.0 Inmin -1.0 制御対象やモードに応じて複数のPIDゲインおよび 入力リミッタ値を切り替えて使用することができる。 動作中の切り替えも可能。 RTCの分割と連携 ロボット体内のコンポーネントによる構成例 画像データ 顔位置 問 合せ カメラ コ ンポーネント 画像データ データ・コマンドの流れ 顔認識 コ ンポーネント 人物データ 表情データ ステレオビジョン コ ンポーネント カメラ コ ンポーネント ポート ジェスチャ 軌 道データ カメラコントロール 音声データ 音声認識 コ ンポーネント 対話 コ ンポーネント 文字データ 頭・腕駆動 コ ンポーネント 音声合成 コ ンポーネント 文字データ マイク コ ンポーネント (モジュール)情報の隠蔽と公開のルールが重要 RTミドルウエアによる分散システム RTMにより、 ネットワーク上に 分散するRTCを OS・言語の壁を 越えて接続する ことができる。 ネットワーク ロボットA ロボットB RTC RTC RTM VxWorks RTC RTC RTM FreeBSD Linux RTM RTC RTC Windows RTM RTC RTC uITRON RTM RTC RTC アプリケーション 操作デバイス センサ ロボットC RTC RTC RTC RTM ARTLinux RTC同士の接続 は、プログラム 実行中に動的に 行うことが出来る。 OpenRTM-aist • コンポーネントフレームワーク + ミドルウエアライブラリ • コンポーネントインターフェース: – OMG Robotic Technology Component Specification 準拠 • OS – 公式:FreeBSD, Linux (Fedora, Debian, Ubuntu, Vine, Scientific), Windows – 非公式:Mac OS X, uITRON, T-Kernel, VxWorks • 言語: – C++, Python, Java – .NET (implemented by SEC) • CPU アーキテクチャ (動作実績): – i386, ARM9, PPC, SH4 – PIC, dsPIC, H8 (RTC-Lite) • ツール (Eclipse プラグイン) – テンプレートソースジェネレータ: rtc-template、RTCBUilder – システムインテグレーションツール: RtcLink、RTSystemEditor – その他 • Pattern weaver for RT-Middleware (株式会社テクノロジックアートより発売中) 30 ツールチェーン RTCBuilder RTコンポーネント設計・コード生成 RTSystemEditor RTCを組み合わせてシステムを設計 RTシステムを簡単に設計・操作可能 RTC・RTM統合開発環境の整備 オンライン編集機能 コンポーネント設計をすばやく簡単に C++、Java、Python、C#のコードを自動生成 RTC設計・実装・デバッグ、RTMによるインテグレーション・デバッグまでを オフライン編集機能 一貫して行うことができる統合開発環境をEclipse上に構築 31 • プロジェクト RTMを取り巻く状況 – NEDO:オープンイノベーションプロジェクト (2008-2011) – 経産省・NEDO:次世代ロボット知能化技術開発プロジェクト (20072011) – 産総研:産総研イニシアチブ (2006-2008) – 文科省:分散コンポーネント型ロボットシミュレータ (2005-2007) – NEDO:次世代ロボット共通基盤開発プロジェクト (2005-2007) – 科研費:ロボットシステムモデリングと分散ミドルウエア・アーキテクチャに 関する研究 (2005-2006) – NEDO:21世紀ロボットチャレンジプログラム(2002-2004) – 等 • 国際標準 – OMG Robotic Technology Component Specification • 受賞 – 今年のロボット大賞2007・部品ソフトウエア部門優秀賞 – 2007年度計測自動制御学会・システムインテグレーション部門賞・技術業 績賞 – 第20回日本ロボット学会研究奨励賞 32 RTミドルウエアの広がり OpenRTM-aist 0.2.0 リリース OMG RTC仕様 初期草案提出 OMG RTC 標準仕様採択 OpenRTM-aist 0.4.0リリース OMG RTC Spec. 公式リリース 年度 2002年 2003年 2004年 2005年 2006年 2007年 2008年 2009年 NEDO RTミドルウエア 2010年 OpenRTM-aist 1.0リリース 科研費 若手(B) 科振費 分散コンポーネントシミュレータ NEDO 次世代ロボット共通基盤開発 今年のロボット大賞2007 優秀賞受賞 工業標準部 標準基盤研究 科振費 環境と作業構造のユニバーサルデザイン 産総研イニシアチブ UCROA NEDO 戦略的先端ロボット要素技術開発 さまざまなプロジェクトで 標準ソフトウエアプラットフォーム として採用されている 経産省・NEDO次世代ロボット知能化技術開発プロジェクト NEDOオープンイノベーション促進プロジェクト NEDO生活支援ロボット実用化プロジェクト? RTミドルウエア開発体制 NEDO知能化PJ NEDOオープンイノベーションPJ OpenRTM-aist ビジネス推進協議会 ML 講習会 コンテスト C++ Python Java 利用 産総研重点化予算 Web 派生 組込みRTM ツール RTミドルウエア RTCBuilder RTSystemEditor 準拠 利用 標準化 仕様記述方式 RTCProfile RTSProfile RTC-Lite uITRON版 関連 RTC標準化 D&C標準化 産総研標準基盤研究 34 次世代ロボット知能化技術 開発プロジェクト 35 次世代ロボット知能化技術 開発プロジェクト • 平成19年度(12月)~平成23年度 (5年間) • 平成19年度予算:19億 – 5年間総額で70億程度になる見込み? • PL:東大 佐藤知正教授 • 研究テーマ – プラットフォーム、作業知能、移動知能、コミュニ ケーション知能 7つのテーマ • 研究グループ – 15グループ 36 プロジェクト参加組織 • ①ソフトウエアプラットフォーム – 「ロボット知能ソフトウェアプラット フォームの研究開発」 • 産総研 • NEC • セック • マエカワ • ゼネラルロボティックス • 東大 • (社)日本ロボット工業会 • ②作業知能(生産分野)の開発 – 「世界標準を目指したロボットセル生産用 知能ハンドモジュール群とマニュアル作業 激減知能モジュール群の開発と検証」 • IDEC株式会社 – 「作業知能(生産分野)の開発(物理的接 触を伴う作業のための作業知能モジュー ル群の研究開発)」 • 東北大学 • ③作業知能(社会・生活分野)の開発 – 「施設内生活支援ロボット知能の研究開 発」 • 安川電機、九大、九工大、産総研 – 「ロバストに作業を実行するための作業知 能モジュール群の開発」 • 東芝、首都大、東大 37 プロジェクト参加組織 • ④移動知能(サービス産業分野)の開発 • – 「移動知能(サービス産業分野)の研究開 発」 • – 「搭乗用移動知能の構築を簡便にする モジュール群の開発 ~ 脚・車輪ロボッ ト:環境インフラと連動するパーソナル モビリティ ~」 富士通、豊橋技科大、セック、東大 – 「移動知能(サービス産業分野)の研究開 発」 • • • • ⑤高速移動知能(公共空間分野)の開発 • SFC、アイシン、自動車研 芝浦工大、千葉工大、NECソフト – 「自律と操縦が融合したインテリジェント 立ち乗り電動モビリティシステム」 筑波大、富士ソフト – 「高速移動知能(公共空間分野)の研究 開発」 ⑥移動知能(社会・生活分野)の開発 • 日本SGI、東北大、レスキューシステム研究機 構、電通大 ⑦コミュニケーション知能(社会・生活 分野)の開発 – 「コミュニケーション知能の研究開発」 • NEC – 「コミュニケーション知能(社会・生活分 野)の研究開発」 • ATR、阪大、オムロン、ヴイストン、イーガー、 三菱重工 38 ソフトウエアプラットフォーム 「ロボット知能ソフトウェアプラットフォームの研究開発」 • 産総研 • マエカワ • NEC • ゼネラルロボティックス RTC RTC RTC RTC RTC RTC RTC • セック • 東大 各コンソーシアムの技術を • (社)日本ロボット工業会 RTC RTC RTC RTC RTC RTC RTC RTコンポーネントとして集積 RTC RTC •RTミドルウエアを基盤とし たロボットソフトウエア開発 のための統合プラットフォー RTC RTC ムを開発 •共通のプラットフォーム上 で、さまざまな知能モジュー ルを開発する ソフトウェアプラットフォーム 仕様・記述方式の共通化 ソフトウェアツール群 相互利用・再利用を図る RTC RTC RTCビルダ RTC 要素機能開発 RTC RTC RTC •ハードウェア仕様 •知能モジュール仕様 •ロボットシステム仕様 •作業シナリオ記述 ・動作記述 ・動作制御記述 RTCデバッガ RTシステムエディタ システム開発 ロボット設計支援ツール OpenRT Platform (OpenRTP) || アプリケーション 開発 OpenRTM+ツールチェーン RTCリポジトリ シミュレータ 動作設計ツール シナリオ作成ツール 実時間SW設計ツール プロジェクト体制 企画調整WG 標準仕様 記述方式 を検討 ①プラットフォーム プラットフォーム ツール提供 ②作業知能(生産分野) 各研究組織は実際に使えるものを ③作業知能(社会・生活分野) 作ることを要求される ソフトウエア プラットフォーム ④移動知能(サービス産業分野) グループ間で モジュールを 流通させる ⑤高速移動知能(公共空間分野) 各研究組織は開発成果を ⑥移動知能(社会・生活分野) ハードウエア 事業化することを求められる プラットフォーム リファレンス ⑦コミュニケーション知能 ハードウエア上で (社会・生活分野) 検証 40 OpenRT Platformによる ロボット開発プロセス コンポーネント要求仕様 ハードウエア等仕様記述方式 – RTミドルウエアを基盤としたロ ボット開発プラットフォーム • システム開発にもモジュー ル化の原理を採用 – 信頼性 – ロバスト性 – 柔軟性 • プロセス – – – – – 設計 コンポーネント開発 システム開発 シナリオ開発 運用 モジュール化された開発プロセス • OpenRTP RTコンポーネント 開発プロセス デザインルール= 結合 コンポーネント仕様記述方式 RTシステム 開発プロセス デザインルール= 結合 システム仕様記述方式 RTシステムシナリオ 開発プロセス 結合 デザインルール= シナリオ仕様記述方式 RTシステム 運用プロセス コンポーネント指向ロボット開発 設計 RT システム開発プロセス MotionPattern Hardware Generator Design Tool Real-Time ビルダ、開発・デバッグツール システムエディタ、シミュレータ デプロイメント および Verification RT- コンポーネント開発 RT- システム開発 コンフィギュレーション RTCBuilder RTSystem Editor 設計 設計 Eclipse RTC テスト Debuger 実装 テスト OpenHRP3 実装 運用 Scenario Editor RT RT- コンポーネント パッケージングツール Ripository リポジトリ foo Component bar Component 開発プロセス間の行き来を容易にし サービスロボット市場創生のための基盤 開発者の負担を減らす統合開発環境を構築 RTCビルダ RTコンポーネントビルダ コンポーネント仕様 <rtcomponent> <profile> </profile> : <port> </port> ウィザード </rtcomponent> ソースコード 自動生成 rtc-template ソースコード <rtcomponent> <profile> </profile> : <port> </port> </rtcomponent> 開発・実装 ・GUIで入力 コンパイル バイナリ デバッガへ 編集 RTコンポーネントパッケージ 仕様 ソースコード バイナリ RTリポジトリへ 43 知能モジュール仕様記述 雛形ソース生成 知能モジュール仕様 <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リポジトリ RTシステムエディタ シミュレータ <rtmodule> <rtcs> : </rtcs> <configuration> : </configuration> : </rtmodule> 類似コンポーネント 44 RTシステム仕様記述 システム検証 生成 RTシステムエディタ 利用 利用 シミュレーション ロボットシステム <rtsystem> <rtcs> : </rtcs> <configuration> : </configuration> : </rtsystem> 利用 シナリオ等運用時 Real RT-System Nodes シミュレータ 実システム RT-Network 再利用 類似システム作成時 ロボットシステム仕様 <rtsystem> <rtcs> : </rtcs> <connections> : </connections> : </rtsystem> 類似システム 45 RTミドルウエアと 組込みシステム 46 ロボットのCPUとOS(1) • P2 – CPU:MicroSPARC II×4 – OS: VxWorks – L12DOF, A14DOF • P3 – CPU :MicroSPARC II(110MHz)×1 – OS: VxWorks – L12DOF, A14DOF • ASIMO – CPU:PowerPC? – OS:VxWorks – L12DOF,A14DOF,H3DOF, F4DOF,C1DOF http://www.honda.co.jp 47 ロボットのCPUとOS(2) • HRP-2 – OS:ART-Linux – CPU:Pentium!!!x2 – 30DOF • HRP-2m Choromet – OS:ART-Linux – CPU:SH4 240MHz • HRP-3 Promet Mk-II – OS:ART-Linux – CPU:Pentium4+CAN • HRP-4C – OS:ART-Linux – CPU:PentiumM 1.6GHz, VIA C7 1GHz http://www.aist.go.jp 48 ロボットのCPUとOS(3) • PaPeRo (NEC) – CPU: i386系(ノートPC) – OS:Windows – ARM9系+Linuxも? • HOPE-1/2 (富士通) – CPU:PentiumMMX 300MHz – OS:RT-Linux • WAKAMARU (三菱重工) http://www.nec.co.jp http://techon.nikkeibp.co.jp – CPU:ARMx7 – OS:Linux (MontaVista) • PR2 (Willow Garage) – OS:Linux (Xenomai) – CPU:PCx4+FPGAモータドラ イバ分散 http://www.mhi.co.jp http://www.willowgarage.com 49 ロボットとμITRON • サービスロボットでμITRONが使われることは (今のところ)稀である。 • そもそも、サービスロボットは組込みシステム とは言えない(かもしれない)。 しかし • 我々は組込みシステムおよびμITRON(特に TOPPERS)に着目。 なぜか? 50 なぜ「ロボット」で「組込み」か? • 分散化 – MPUモータドライバ+CAN、FlexRay、TTP/C、EtherCAT etc.. – 体内・体外ネットワーク • 安全性 – 機能安全:IEC61508 に注目 • NEDO生活支援ロボットPJ – ロボット安全に関する標準化の動き – 実用化には必須 • 実用化 – 安定性、堅牢性、長時間連続使用 – 信頼性(ディペンダビリティ) 51 知能化空間・ロボット住宅 (NEDOオープンイノベーションPJ) • 生活支援ロボット – 知能化空間+ロボット • RTM – 家屋内のセンサネットワ ーク構築 – センサ→ロボット – ロボット→アクチュエータ – Etc… すべてをRTMで統合 分散センサ・モータ→組込みデバイス 52 RTCチップ組み込みイメージ RTCチップ RTCチップには ・通信インターフェース ・チップ化されたRTCインターフェース ・基本的なI・Oインターフェース が組み込まれている 既存のロボット 既存のロボット 既存のデバイス 既存のデバイス 既存のロボット・デバイスを容易にRTC化 RTコンポーネント化 されたロボット RTコンポーネント化 されたロボット RTコンポーネント化 されたデバイス RTコンポーネント化 されたデバイス RTCチップ開発 • 目的: • reliabilityを考慮したRTMシステム構築のため • 様々なデバイスをRTC化 • 電灯、スイッチ、単機能センサ、etc… • RTCチップまたは軽量RTC • デバイスに接続すればRTMに参加可能 • 名刺半分サイズ • @2000円以下 機能安全とIEC61508 • 機能安全(Functional Safety) – システムの安全を確保す る機能を持つ – リスクを許容目標へ軽減 する – ⇔本質安全(固有安全) 1. 全安全ライフサイクルの導 入 2. 安全度水準(SIL)という定 量的尺度の導入 3. 機能安全管理に対するコ ンピテンシーの採用 ハードウエア ソフトウエア 200の技法 100の技法 ライフサイクル ライフサイクル 規定 規定 技術要因 組織の機能安全管理 人的要因(個人コンピテンシー) http://systemsafety.fc2web.com/ 安全関連系とRTミドルウエア • 安全関連系 – 必要なリスク軽減を達成 するシステム • RTCが安全関連系に 組み込まれる RTC RTM OS – OSレスまたは認証済み OSを使用することが望 ましい VxWorks or TOPPERS が有力 安全関連系を構成する デバイスRTC 56 RTC-Liteから TOPPERS版OpenRTM-aistへ 57 RTUnit(2003年~) /RTC-Lite(2005年~) • ネットワーク型マイコン機器 – small/μ RTUnitをRTMで統合 RTUnit 仕様 MPU Microchip PIC16F877A ROM 8kwords RAM 368 bytes EEPROM 256 bytes クロック max 20MHz A/D 10bit ×8ch DIO 24ch シリアル 2ch 通信 LANTRONIX XPort 電源 DC 5V small RTUnit μRTUnit 58 RTC-Lite:Proxy方式 PC フル規格RTCから Proxy Component RTC-Lite protocol RTC-Lite Small RT-Unit I/O フル規格RTCへ モデルに基づくコード生成 コンポーネント仕様 name: category: description: comp_type: act_type: InPorts: OutPorts: MyComp temp.sensor device temp. sensor RTC STATIC PERIODIC mode:TimedBool temp: TimedDouble 同一のRTC仕様からは 言語が異なっていても、 同じ(コンポーネントモデ ルの)RTCが生成される Template code generator RTC source for C++ class MyComp : public DataflowComponent { public: virutal onExecute(ec_id); : private: TimedBool m_mode; TimedDouble m_temp; }; C++ Java Python RTC-Lite backend backend backend backend RTC source for Java RTC source for Python import RTC.DataFlowComponent; public class MyCompImpl extends DataFlowComponent { public ConsoleInImpl(mgr) { } : }; #/usr/bin/env python import RTC class MyComp( DataFlowComponent): def __init__(self, manager): : def onExecute(self, ec_id): : RTC-Lite source for PIC C #include <16f877a.h> #include "rtc_base.c“ int main (void) { rtc_connect_proxy(); rtc_mainloop(); return 0; } RTC-Lite proxy code #/usr/bin/env python import RTC class Proxy( DataFlowComponent): def __init__(self, manager): : def onExecute(self, ec_id): : 60 RTC-Liteの応用 Communication Server Proxy Proxy small RT-Unit & RTC-Lite small RT-Unit & RTC-Lite Touch sensor メディアアート作品への適用 blue 移動プラットフォームへの適用 red Lamp red blue 様々な組込み向けRTC PCはオプショナル PCが必須 Proxy RTC Proxy RTC RTCLite eRTC TCP/IP Or other 通常RTC RTC-Lite eRTC RTC Activity RTC Activity RT-Unit RTC-Lite同士は 直接通信不可 RTC-Lite方式 TOPPERSで実現可能に CORBA RTC TCP/IP Or other CORBA RTC eRTC で通信 PC RTC-Lite で通信 PC 実現可能か? RT-Unit eRTC方式 通常RTC 通常RTC eRTC 軽量CORBA RTC RTC RT-Unit RTC同士は 直接通信可 OSが必要 それなりのCPUが必要 軽量CORBA方式 様々な組込み向けRTC 通常RTC 通常RTC CORBA RTC CORBA RTC TCP/IP Chip TCP/IP Chip RTC Proxy Chip RTC FPGA Chip RTC-Lite RTC-Lite RTC-Lite で通信 SPI or other RTC-Lite で通信 SPI or other RTC-Lite RTC-Lite RTC RTC RT-Unit RT-Unit CORBA RTC専用 MPU方式 CORBA RTC専用 FPGA方式 ORBexpress FPGA • XILINX Vertex シリーズをサポート – Vertex-4, Vertex-5 – Vertex-4:@$200~$2,000 (avnet調べ) • CORBAサポート – 標準オペレーション – すべてのデータ型 • μs以下のレインテンシ • IDLコンパイラが Lightweight VHDL を生成 • FPGA開発ツール一式があれば開発可能 http://www.ois.com 組込みLinux版OpenRTM このプロセスは1回のみ行えばよい OpenRTMをクロスビルド RTC用ROMイメージを作成 RTCをクロスコンパイル クロス開発環境 RTC用ROMイメージを書き込み RTCを書き込み 挿入 USBメモリ ターゲットCPUボード 65 TOPPERS版OpenRTM • TOPPERS – uITRON互換OS – オープンソース – 製品搭載実績多数 • RtORB – 産総研版CORBA – 軽量・高速 • coil RTC RTC RTC RTC RTC – OS抽象化層 RtORB OpenRTM-aist TINET coil OS (TOPPERS) 66 標準化 67 なぜ標準が必要? RTミドルウエアの目的 • 人々の間で共有される共通ソフトウエアモデル ≠ ソフトウエアモデルが共有されていないと… 意思疎通が困難に… 68 なぜ標準が必要? RTミドルウエアの目的 • 人々の間で共有される共通ソフトウエアモデル 複雑なRTシステム ComponentComponent command reply CORBA object Thread OutPort 0 RTComponent InPort 0 get put reply Activity get InPort n put OutPort n reply put get, subscribe reply push 共通コンポーネントモデルに基づいて考えると… RTシステムの構造を確実に相手に伝えられる。 69 なぜ標準が必要? RTミドルウエアの目的 • 人々の間で共有される共通ソフトウエアモデル • オープンな仕様を提供 – 誰でも実装可能→実装の多様性 – 仕様を策定することが主たる目的 – 実装(OpenRTM-aist):仕様の妥当性検証 オープン化 ミドルウエアが競争領域ではなくなる RTM仕様 RTM実装A RTM実装B RTM実装C 上に載せるロジック・コンポーネント 相互運用可能 の共有・競争の促進 70 なぜ標準が必要? RTミドルウエアの目的 • 人々の間で共有される共通ソフトウエアモデル • オープンな仕様を提供 – 誰でも実装可能→実装の多様性 – 仕様を策定することが主たる目的 – 実装(OpenRTM-aist):仕様の妥当性検証 • 実装技術に非依存なソフトウエアモデル – 特定の言語、OS、分散オブジェクトミドルウエアに依存しないモデル (PIM: Platform Independent Model) • →標準化が必要 – OMG (Object Management Group) における標準化 – オープンな標準化プロセス 71 OMGにおける標準化 • OMG (Object Management Group) – ソフトウエア標準化団体 – UML、CORBAなどの仕様策定で実績 • MDA – システムをPIM化することにより、抽象化されたモデルの寿命が延び 実行可能性変数(品質、コスト、寿命の積)が向上する。(MDA: Model Driven Architecture の考え方。) • PIM (Platform Independent Model) – プラットフォーム(ここでは、CORBA, JavaRMI, SOAP, HORB等分 散オブジェクトプラットフォームを指す。)に依存しないモデル。 • PSM (Platform Specific Model) – プラットフォーム毎にPSMから変換されたモデル。 – CORBA PSM, SOAP PSM etc… 72 OMGにおける標準化 • OMGからRFP (Request For Proposal)が出される。 • 標準化を希望するベンダが 提案を持ち寄る。 – 提案はPIMおよびPSM • 合意ベースのプロセスに基 づき標準仕様を策定。 • OMGにおける認定プロセ ス • OMG標準としてオープンに … OOの標準化に関して 提案がある人は手を 上げてください RFP Request for Proposal 提案A 提案B 提案C 提案者間の 合意に基づく 標準化プロセス OMG標準 73 OMGにおける標準化 ①OpenRTM-aistに基づく 初期提案の作成 ②共同提案書作成 のための詳細を議論 2005年 ③標準作業部会 への提出・採択 ④最終文書化委員会 における整合性の議論 2006年 2005.9 ① 2006.2 ② 2006.6 2007年 ③ 2006.9 ④ 2008年 2008.4 標準仕様の 公式リリース RFP発行 (RFP=標準仕様 提案の呼びかけ) Initial Submission Joint Submission Adopted Specification 74 OpenRTMとOMG RTC仕様 NEDO プロジェクト成果 2002-2005年 OpenRTM-aist 0.2.0 OMG RTC仕様 に準拠した始め てのバージョン OpenRTM-aist 0.3.0 OMGに提案 0.2.0のRTCを 元にした仕様案 を作成 2009年 RC1:5月 RELEASE:7月 OpenRTM-aist 0.4.0 OMG RTC仕様 採択 2007年9月採択 その後FTFにて 公式リリースに 向けて議論 OpenRTM-aist 1.0 OMG RTC仕様 正式リリース 2008年4月 75 OMG RTC の特徴 • コンポーネント間の状態を統一的に扱うライフサイク ル管理方法を提供 • コンポーネントおよび付随するオブジェクトを記述す るためのデータ構造を規定 • 基本的なデザインパターンを提供 – 細粒度コンポーネントの密な結合を実現するデータフロー 型コンポーネント – 有限状態マシンを有する stimulus-response 型コンポー ネント – 同期または非同期的なコンポーネントのコンポジションを 実現するモード型コンポーネント 76 PIM (Platform Independent Model) pd RTC Packages «profile» RTC SDOPackage Execution Semantics Introspection (from External Models) Lightw eight RTC (from Robotic Technology Components) • OMG RTC 仕様は3つ のパッケージから構成 される: – Lightweight RTC – Execution Semantics – Introspection 77 パッケージ1: Lightweight RTC pd RTC Packages «profile» RTC SDOPackage Execution Semantics Introspection (from External Models) Lightw eight RTC (from Robotic Technology Components) コンポーネント • Lightweight RTC – コンポーネント、ポート、コネ クタ等のスレレオタイプ – コンポーネントライフサイクル – 実行コンテキスト – コンポーネントのメタ情報を 取得するイントロスペクション 機能は含まれない – 静的に構成されるコンポーネ ント ポート 状態マシン 78 パッケージ2: Execution Semantics pd RTC Packages «profile» RTC SDOPackage Execution Semantics Introspection • Execution Semantics – (from External Models) Lightw eight RTC (from Robotic Technology Components) Data flow FSM request response ロボットシステム一般によく 用いられる振舞いのパター ンを提供する 1. 時刻に同期して、データの 流れにより駆動されるタイ プ(データフロー型) 2. Stimulus-response型ある いはイベントドリブン型の実 行タイプ (FSM) 3. 幾つかのモードを内包する モード型 Multi Modal 79 パッケージ2: Introspection pd RTC Packages «profile» RTC SDOPackage Execution Semantics Introspection (from External Models) Lightw eight RTC (from Robotic Technology Components) RTC SDO コンポーネント • Introspection – コンポーネントのメタ情 報取得のためのイン ターフェースを提供 – 別のOMG標準である SDO(Super Distributed Object) に準拠 – 動的な構成(コンポー ネント間の接続等)が 可能なコンポーネント ポート 状態マシン 80 PSM (Platform-Specific Models) • CORBA IDL – CORBA 2.x 準拠のIDL (Interface Definition Language) を提供 • CORBA Component Model – CCM (CORBAコンポーネントモデル)準拠の仕様を提 供 • Local components – 通信オーバーヘッドの少ない単一プロセスモデル – C++ マッピングとして提供 81 OMG RTC 仕様とOpenRTM-aist PIM (Platform Independent Model) level specification OMGにおける 標準仕様 <<PIM>> RTC Specification <<PIM> SDO model <<mapping>> PSM (Platform Specific Model) level specification <<PSM> RTC CORBA model <<use>> Extended interface for OpenRTM-aist <<interface>> OpenRTM ext. interface <<PSM>> RTC EJB model <<PSM>> RTC SOAP model RTM for other platforms <<interface>> OpenRTM basic interface <<implements>> Implementation 産総研による実 装 OpenRTM-aist OpenRTM-aist implementation Other RTM Implementation by other vendors 82 終わりに • RTミドルウエア – モジュール化による諸問題の解決 – 新たなロボットビジネス市場の創生 • OpenRTM-aistアーキテクチャ – コンポーネントフレームワーク • 開発の労力をコアロジックに集中 • 組込みシステム – 分散化、安全性、信頼性への要求の高まり – TOPPERS版OpenRTM-aistへ • RTCのOMGにおける標準化 – 競争領域、非競争領域の分離 83 RTミドルウエア関連情報 • OpenRTM-aist – http://www.openrtm.org/ • メーリングリスト – [email protected] • OpenHRP3 – http://www.openrtp.jp/openhrp3/jp/ • OpenRTP – http://openrtp.jp/ • OMG Robotics DTF – http://www.omg.org/robotics/ 84
© Copyright 2024 ExpyDoc