RT ミドルウエア - TOPPERS による組込み機器への展開-
安藤慶昭独立行政法人産業技術総合研究所知能システム研究部門
情報処理学会連続セミナー 2009
「進化する組込みシステム技術」2nd 組込みソフトウエアプラットフォーム
2
産総研• 独立行政法人産業技術総合研究所
– 「ライフサイエンス」「情報・通信」「環境・エネルギー」「ナノテク・材料・製造」「地質・海洋」「標準・計測」の 6 分野
– 研究者: 約 2000 名• 知能システム研究部門
– 「統合知能」 「タスク・ビジョン」 「ヒューマノイド」「インタラクティブモデリング」「ディペンダブルシステム」「サービスロボティクス」「フィールドロボティクス」の 7 グループ、「ソフトウエアプラットフォーム研究班」、「 AIST-CNRS ロボット工学連携研究体」
– 研究者: 約 60 名(全体約 150 名)
3
アナリシスからシンセシスへ
n a tu re
a n a ly s is s y n th e s isin te g ra t io n
a n im a lin s e c t
h u m a n b e in g
s c ie n t i f i cp r in c ip a ls
a r t i f a c t
ro b o t
R T b a s e d s y s te m
44
• RT = Robot Technology cf. IT
– ≠Real-time– 単体のロボットだけでなく、さまざまなロボット技術に基づく
機能要素をも含む ( センサ、アクチュエータ , 制御スキーム、アルゴリズム、 etc….)
• RT-Middleware ( RTM)– RT 要素のインテグレーションのためのミドルウエア
• RT-Component ( RTC)– RT-Middleware におけるソフトウエアの基本単位
RT-Middleware
+ + + + +
RT とは ?
産総研版 RT ミドルウエア
OpenRTM-aist
5
体系的システム開発
開発者の経験やノウハウに依存したロボットシステム開発
体系的システムデザイン : 分析、設計、実装の一連の流れ
6
RT ミドルウエアプロジェクトNEDO 21 世紀ロボットチャレンジプログラム( 2002-2004 年
度)
「ロボット機能発現のために必要な要素技術開発」• RT 分野のアプリケーション全体に広く共通的に使わ
れる機能および RT 要素の部品化(モジュール化)の研究開発
• 分散オブジェクト指向システムのミドルウェアである CORBA をベースとして行う。
• RT 要素の分類を行い、モジュール化の形態、必要な機能、課題、インタフェース仕様などを明確にする。
14年度成果報告書より
77
RT ミドルウエアの目的
モジュール化による問題解決• 仕様の明確化• 最新技術を容易に利用可能• 誰でもロボットが作れる
ロボットの低コスト化
多様なニーズに対応
コストの問題 技術の問題 ニーズの問題
! ! ! !
最新の理論・アルゴリズム
A 社製移動ベース B 社製アーム C 社製センサ・・・多様なユーザ
システム開発者カスタマイズが容易に
RT コンポーネント化
最新技術を利用可能
ロボットシステムインテグレーションによるイノベーション
モジュール化・再利用
仕様
8
概要
• RT とは?• RT ミドルウエア: OpenRTM-aist
• 次世代ロボット知能化技術開発プロジェクト
• RT ミドルウエアと組込みシステム• 標準化• 終わりに
9
RT-Middleware
OpenRTM-aist
10
従来のシステムでは…
Joystick
Robot Arm
Joysticksoftware
互換性のあるインターフェース同士は接続可能
Robot ArmControl software
11
ロボットによって、インターフェースは色々互換性が無ければつながらない
Joystick
Humanoid’s Arm
Robot Arm
Joysticksoftware
Humanoid’s ArmControl software
Robot ArmControl software
従来のシステムでは…
12
compatiblearm interfaces
RT ミドルウエアは別々に作られたソフトウエアモジュール同士を繋ぐための共通インターフェースを提供する
ソフトウエアの再利用性の向上RT システム構築が容易になる
Joystick
Joysticksoftware
Arm AControl software
Arm BControl software
Humanoid’s Arm
Robot Arm
RT ミドルウエアでは…
13
RTM 、 RTC とは?
従来ソフトウエアから分散オブジェクトへ
• オブジェクト指向開発• 言語・ OS の壁を越えて利用できる
– インターフェースを IDL で定義– 各言語へ自動変換– OS 、アーキテクチャの違いを吸収
• ネットワーク透過に利用できる– 分散システムを容易に構築可能
分散オブジェクトから RTC へ
• インターフェースがきちんと決まっている
– IDL で定義された標準インターフェース– 呼び出しに対する振る舞いが決まってい
る (OMG RTC 標準仕様 )– 同じ部品として扱える
• コンポーネントのメタ情報を取得することができる
– 動的な接続や構成の変更ができる• ロボットシステムに特有な機能を提供
– 後述
ライブラリ
OS
ライブラリ
アプリケーション
ソフトウエアアーキテクチャの違い
オブジェクトオブジェクト
ミドルウエア( CORBA )
アプリケーション
OS
RTCRTC
RTM
RTC ・アプリ
OS
ミドルウエア( CORBA )
14
ミドルウエア、コンポーネント、 etc…
• ミドルウエア– OS とアプリケーション層の中間に位置し、特定の用途に対して利便性、抽象化向上のために種々の機能を提供するソフトウエア
– 例: RDBMS 、 ORB等。定義は結構曖昧• 分散オブジェクト(ミドルウエア)
– 分散環境において、リモートのオブジェクトに対して透過的アクセスを提供する仕組み
– 例: CORBA 、 Java RMI 、 DCOM等• コンポーネント
– 再利用可能なソフトウエアの断片(例えばモジュール)であり、内部の詳細機能にアクセスするための(シンタクス・セマンティクスともにきちんと定義された)インターフェースセットをもち、外部に対してはそのインターフェースを介してある種の機能を提供するモジュール。
• CBSD ( Component Based Software Development )– ソフトウエア・システムを構築する際の基本構成要素をコンポーネン
トとして構成するソフトウエア開発手法
15
分散オブジェクトとは?• システムの機能分割と分散配置• ネットワーク透過なオブジェク
ト• コンポーネント化と再利用
オブジェクト指向+
ネットワーク
• 代表例– CORBA (Common Object Request Broker
Architecture)– CCM (CORBA Component Model)– JavaRMI (Java Remote Method Invocation)– EJB (Enterprise Java Beans)– DCOM, HORB etc…
計算機 AOS A
計算機 BOS B
計算機 COS C
計算機 DOS D
ミドルウエア
アプリ A アプリ B アプリ C
分散オブジェクト
プロキシオブジェクト
16
CORBA の例<<IDL 定義 >>interface MobileRobot { void gotoPos(in position pos);}
<< サーバ実装 >>class MobileRobot_Impl : public virtual POA_MobileRobot, public virtual
PortableServer::RefCountServantBase
{ void gotoPos(position pos) { MobileRobot::gotoPos の実装 }}
<< クライアント >>
MobileRobot_var robot;robot = {何らかの方法でオブジェク
ト参照を取得 }// robot = プロキシオブジェクトrobot->gotoPos(pos);
サーバ クライアント
IDL
メソッドgotoPos()呼び出し
サーバスケルトン クライアントスタブ
objectproxyobject
call
本題にたどり着くまでが面倒
RT ミドルウエアが全部面倒みます!!
17
RT ミドルウエアと RT コンポーネント
17
RTコンポーネントフレームワーク
RTコンポーネント
ロジック
ロジックを箱(フレームワーク)に入れたもの= RT コンポーネント( RTC )
RT ミドルウエア
RTC RTC RTC RTC RTC RTC RTC RTC
RTC の実行環境( OS のようなもの)= RT ミドルウエア( RTM )※RTC はネットワーク上に分散可能
・デバイス制御・制御アルゴリズム・アプリケーションetc…
Architecture of RT component
A c t iv i t y
R T C o m p o n e n t
R T C o m p o n e n t S e rv ic e
S D O In te r fa c e s R T C In te r fa c e s R T C E x In te r fa c e s
O u tP o r tIn P o r t
R T C S C o n s u m e r
In P o r t 0
In P o r t n O u tP o r t n
O u tP o r t0
S e rv ic e
S e rv ic e
re p ly
p u s hp u t
g e t , s u b s c r ib e
B u ffe r B u ffe r
B u ffe rB u ffe r
C o n s u m e r
P ro xy
C o n s u m e r
P ro xy
re p ly
g e tp u t
u se p ro v id ep ro v id e
S ta te M a c h in e
RT コンポーネントアーキテクチャ• メタ情報取得
– プロファイル– どんなコンポーネントか?
メタ情報取得• メタ情報
– コンポーネントのモデル≒仕様• RTC のことは RTC に聞けばわか
る (イントロスペクション機能)
– コンポーネントの名前・タイプ– ポートの数・種類– ポートのインターフェース情報– ポート毎のプロパティ– パラメータ情報– 実行コンテキスト情報
• システムの動的構成に不可欠
port0
port1
port2
port3
port4
port5
port6
port7Periodic 実行
名前値
パラメータ
実行コンテキスト
コンポーネント名 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)
コンポーネントメタ情報の例
ABC
DE
Architecture of RT component
A c t iv i t y
R T C o m p o n e n t
R T C o m p o n e n t S e rv ic e
S D O In te r fa c e s R T C In te r fa c e s R T C E x In te r fa c e s
O u tP o r tIn P o r t
R T C S C o n s u m e r
In P o r t 0
In P o r t n O u tP o r t n
O u tP o r t0
S e rv ic e
S e rv ic e
re p ly
p u s hp u t
g e t , s u b s c r ib e
B u ffe r B u ffe r
B u ffe rB u ffe r
C o n s u m e r
P ro xy
C o n s u m e r
P ro xy
re p ly
g e tp u t
u se p ro v id ep ro v id e
S ta te M a c h in e
RT コンポーネントアーキテクチャ• メタ情報取得
– プロファイル– どんなコンポーネントか?
• アクティビティ– ユーザ定義ロジックの実行
21
アクティビティ
センサ RTC
(センサからデータを読む)
実行コンテキスト
Inactive Active
Error
別々に作成された複数のコンポーネントをシーケンシャルにリアルタイム実行し制御等を行うことも可能→複合コンポーネント
• ロジックを実行する部分
• 共通の状態遷移を持つ– 初期化– 非アクティブ( OFF状
態)– アクティブ状態( ON状
態)– エラー(エラー状態)
Init
デバイス初期化処理
アーム停止
アームサーボ ON
アーム緊急停止
アームコンポーネントの例
制御 RTC
(制御出力計算)
アクチュエータ RTC
(アクチュエータを駆動)
Architecture of RT component
A c t iv i t y
R T C o m p o n e n t
R T C o m p o n e n t S e rv ic e
S D O In te r fa c e s R T C In te r fa c e s R T C E x In te r fa c e s
O u tP o r tIn P o r t
R T C S C o n s u m e r
In P o r t 0
In P o r t n O u tP o r t n
O u tP o r t0
S e rv ic e
S e rv ic e
re p ly
p u s hp u t
g e t , s u b s c r ib e
B u ffe r B u ffe r
B u ffe rB u ffe r
C o n s u m e r
P ro xy
C o n s u m e r
P ro xy
re p ly
g e tp u t
u se p ro v id ep ro v id e
S ta te M a c h in e
RT コンポーネントアーキテクチャ• メタ情報取得
– プロファイル– どんなコンポーネントか?
• アクティビティ– ユーザ定義ロジックの実行
• データポート– Data Centric な相互作用
データポート
コンポーネント B
23
データポート• データ指向ポート• 連続的なデータの送受信
– 位置制御サーボ• 位置・電圧値
– 画像処理• 画像データ• 処理結果
• 主にロボットの下位レベル処理に利用• 同じデータ型のポート同士接続可能• 動的に接続・切断可能
エンコーダコンポーネント
アクチュエータコンポーネント
カメランポーネントコ
ステレオビジョンコンポーネント
画像処理コンポーネント
制御器ンポーネントコ
1 TI s
TDs
Kp+-
目標値位置
位置
電圧
サーボの例
カメランポーネントコ
画像データ
画像データ
処理画像データ
位置データ
3D デプスデータ
画像処理の例
データポート
データの流れ
アクティビティ アクティビティ
コンポーネント A
データ変数 データ変数
データポート
データ生成 データ取得
データが自動的に伝送される
処理 処理
Architecture of RT component
A c t iv i t y
R T C o m p o n e n t
R T C o m p o n e n t S e rv ic e
S D O In te r fa c e s R T C In te r fa c e s R T C E x In te r fa c e s
O u tP o r tIn P o r t
R T C S C o n s u m e r
In P o r t 0
In P o r t n O u tP o r t n
O u tP o r t0
S e rv ic e
S e rv ic e
re p ly
p u s hp u t
g e t , s u b s c r ib e
B u ffe r B u ffe r
B u ffe rB u ffe r
C o n s u m e r
P ro xy
C o n s u m e r
P ro xy
re p ly
g e tp u t
u se p ro v id ep ro v id e
S ta te M a c h in e
RT コンポーネントアーキテクチャ• メタ情報取得
– プロファイル– どんなコンポーネントか?
• アクティビティ– ユーザ定義ロジックの実行
• データポート– Data Centric な相互作用
• サービスポート– request/response型相互作用
サービスポート
データポート
25
サービスポート• 任意に定義可能なインターフェース
を持つポート– コマンド・関数を自由に追加– 他のコンポーネントからアクセス可
能– (本当は標準化したい)
• 内部の詳細な機能にアクセス– パラメータ取得・設定– モード切替– 処理の依頼と結果取得– etc…
アームコンポーネント
アームの例
画像データ
3D デプスデータ
ステレオビジョンの例
アームインターフェース
・モード設定関数・座標系設定関数・制御パラメータ設定関数・ヤコビ取得関数・ステータス取得関数・ etc…
他のコンポーネント・上位アプリケーションから利用 手先位置・
速度データ
サービスポート
データポート
ステレオビジョンインターフェース
・モード設定関数・座標系設定関数・キャリブレーション - カメラパラメータ設定関数 - 実行関数 - パラメータ取得関数・ etc…
サービスポート
ステレオビジョンコンポーネント
他のコンポーネント・上位アプリケーションから利用
データポート
コンポーネント B
アクティビティ
コンポーネント A
サービスプロキシ
サービスインターフェース
の実体
実際の処理はここで行われる
サービスポート
サービス利用者(コンシューマ)
関数呼び出し
サービス提供者(プロバイダ)
Architecture of RT component
A c t iv i t y
R T C o m p o n e n t
R T C o m p o n e n t S e rv ic e
S D O In te r fa c e s R T C In te r fa c e s R T C E x In te r fa c e s
O u tP o r tIn P o r t
R T C S C o n s u m e r
In P o r t 0
In P o r t n O u tP o r t n
O u tP o r t0
S e rv ic e
S e rv ic e
re p ly
p u s hp u t
g e t , s u b s c r ib e
B u ffe r B u ffe r
B u ffe rB u ffe r
C o n s u m e r
P ro xy
C o n s u m e r
P ro xy
re p ly
g e tp u t
u se p ro v id ep ro v id e
S ta te M a c h in e
RT コンポーネントアーキテクチャ• メタ情報取得
– プロファイル– どんなコンポーネントか?
• アクティビティ– ユーザ定義ロジックの実行
• データポート– Data Centric な相互作用
• サービスポート– request/response型相互作用
• コンフィギュレーション– ユーザ定義の設定 サービスポート
データポート
コンフィギュレーション• コンフィギュレーション
– パラメータを管理– コンフィギュレーションセッ
ト• セット名、名前:値のリスト• 複数のセットを保持• セットを切替可能
名前値
セット名
名前値
セット名
Kp Ki Kd Inmax Inmin
0.6 0.01 0.4 5.0 -5.0名前値modeA複数のセットを
動作時に切り替えて使用可能
PID コントローラの例
Kp Ki Kd Inmax Inmin
0.8 0.0 0.01 10.0 -10.0名前値modeB
Kp Ki Kd Inmax Inmin
0.3 0.1 0.31 1.0 -1.0名前値modeC
Ki s
Kds
+-
Kp
PID 制御コンポーネント
リミッタ
制御対象やモードに応じて複数の PIDゲインおよび入力リミッタ値を切り替えて使用することができる。動作中の切り替えも可能。
RTC の分割と連携
(モジュール)情報の隠蔽と公開のルールが重要
音声合成ンポーネントコ
カメランポーネントコ
カメランポーネントコ
画像データ
画像データ ポートデータ・コマンドの流れ顔位置
合せ問
文字データ
音声データ
人物データ
カメラコントロール
表情データ
文字データ
ジェスチャ道データ軌
頭・腕駆動ンポーネントコ
マイクンポーネントコ
ステレオビジョンンポーネントコ
対話ンポーネントコ
音声認識ンポーネントコ
顔認識ンポーネントコ
ロボット体内のコンポーネントによる構成例
RT ミドルウエアによる分散システム
RTCRTCRTM
Windows
RTCRTCRTM
uITRON
RTCRTCRTMLinux
RTCRTCRTM
VxWorks
RTCRTCRTM
FreeBSD
RTCRTC
RTMARTLinux
RTC
アプリケーション 操作デバイス センサ
ロボット A ロボット Bロボット C
ネットワーク
RTM により、ネットワーク上に分散する RTC をOS ・言語の壁を越えて接続することができる。
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
ツールチェーン
31
RTCBuilderRT コンポーネント設計・コード生成
RTSystemEditor RTC を組み合わせてシステムを設計
コンポーネント設計をすばやく簡単にC++ 、 Java 、 Python 、 C# のコードを自動生成
RT システムを簡単に設計・操作可能オンライン編集機能オフライン編集機能
RTC ・ RTM 統合開発環境の整備RTC 設計・実装・デバッグ、 RTM によるインテグレーション・デバッグまでを
一貫して行うことができる統合開発環境を Eclipse上に構築
32
RTM を取り巻く状況• プロジェクト
– NEDO :オープンイノベーションプロジェクト ( 2008-2011 )– 経産省・ NEDO :次世代ロボット知能化技術開発プロジェクト
( 2007-2011 )– 産総研:産総研イニシアチブ (2006-2008)– 文科省:分散コンポーネント型ロボットシミュレータ (2005-2007)– NEDO :次世代ロボット共通基盤開発プロジェクト (2005-2007)– 科研費:ロボットシステムモデリングと分散ミドルウエア・アーキ
テクチャに関する研究 (2005-2006)– NEDO : 21 世紀ロボットチャレンジプログラム( 2002-2004 )– 等
• 国際標準– OMG Robotic Technology Component Specification
• 受賞– 今年のロボット大賞 2007 ・部品ソフトウエア部門優秀賞– 2007 年度計測自動制御学会・システムインテグレーション部門賞・
技術業績賞– 第20回日本ロボット学会研究奨励賞
2008 年 2009 年 2010 年2005 年 2006 年 2007 年2002 年 2003 年 2004 年
NEDO RT ミドルウエア
科振費 分散コンポーネントシミュレータ
NEDO 次世代ロボット共通基盤開発
産総研イニシアチブ UCROA
科研費 若手( B)
工業標準部 標準基盤研究
NEDO 戦略的先端ロボット要素技術開発
科振費 環境と作業構造のユニバーサルデザイン
経産省・ NEDO 次世代ロボット知能化技術開発プロジェクト
OpenRTM-aist0.2.0 リリース
OpenRTM-aist0.4.0 リリース
OMG RTC 標準仕様採択
年度
OMG RTC 仕様 初期草案提出
OMG RTC Spec.公式リリース
OpenRTM-aist1.0 リリース
RT ミドルウエアの広がり
さまざまなプロジェクトで標準ソフトウエアプラットフォームとして採用されている
今年のロボット大賞2007
優秀賞受賞
NEDO オープンイノベーション促進プロジェクト
NEDO生活支援ロボット実用化プロジェクト?
RT ミドルウエア開発体制
34
仕様記述方式
RTCProfileRTSProfile
ツール
RTCBuilderRTSystemEditor
組込み RTM
RTC-LiteuITRON 版
標準化
RTC 標準化D&C 標準化
NEDO 知能化 PJ
NEDO オープンイノベーション PJ
産総研標準基盤研究
産総研重点化予算
OpenRTM-aist
C++PythonJava
関連
利用
利用派生
RT ミドルウエア準拠
講習会 ML
Webコンテスト
ビジネス推進協議会
35
次世代ロボット知能化技術開発プロジェクト
36
次世代ロボット知能化技術開発プロジェクト
• 平成 19 年度( 12月)~平成 23 年度 ( 5 年間)• 平成 19 年度予算: 19億
– 5 年間総額で 70億程度になる見込み?• PL :東大 佐藤知正教授• 研究テーマ
– プラットフォーム、作業知能、移動知能、コミュニケーション知能 7つのテーマ
• 研究グループ– 15 グループ
37
プロジェクト参加組織• ①ソフトウエアプラット
フォーム– 「ロボット知能ソフトウェアプ
ラットフォームの研究開発」• 産総研• NEC• セック• マエカワ• ゼネラルロボティックス• 東大• (社)日本ロボット工業会
• ②作業知能(生産分野)の開発– 「世界標準を目指したロボットセル生
産用知能ハンドモジュール群とマニュアル作業激減知能モジュール群の開発と検証」
• IDEC株式会社– 「作業知能(生産分野)の開発(物理
的接触を伴う作業のための作業知能モジュール群の研究開発)」
• 東北大学
• ③作業知能(社会・生活分野)の開発
– 「施設内生活支援ロボット知能の研究開発」
• 安川電機、九大、九工大、産総研– 「ロバストに作業を実行するための作
業知能モジュール群の開発」 • 東芝、首都大、東大
38
プロジェクト参加組織• ④移動知能(サービス産業分野)の
開発– 「移動知能(サービス産業分野)の研
究開発」• 富士通、豊橋技科大、セック、東大
– 「移動知能(サービス産業分野)の研究開発」
• 筑波大、富士ソフト
• ⑤高速移動知能(公共空間分野)の開発
– 「高速移動知能(公共空間分野)の研究開発」
• SFC 、アイシン、自動車研
• ⑥移動知能(社会・生活分野)の開発
– 「搭乗用移動知能の構築を簡便にするモジュール群の開発 ~ 脚・車輪ロボット:環境インフラと連動するパーソナルモビリティ ~」
• 芝浦工大、千葉工大、 NEC ソフト– 「自律と操縦が融合したインテリ
ジェント立ち乗り電動モビリティシステム」
• 日本 SGI 、東北大、レスキューシステム研究機構、電通大
• ⑦コミュニケーション知能(社会・生活分野)の開発
– 「コミュニケーション知能の研究開発」
• NEC
– 「コミュニケーション知能(社会・生活分野)の研究開発」
• ATR 、阪大、オムロン、ヴイストン、イーガー、三菱重工
ソフトウエアプラットフォーム「ロボット知能ソフトウェアプラットフォームの研究開発」
• 産総研• NEC• セック
ソフトウェアツール群
要素機能開発
システム開発
アプリケーション開発
ロボット設計支援ツール
ソフトウェアプラットフォーム
仕様・記述方式の共通化
RTC ビルダ
RT システムエディタ
実時間 SW 設計ツール
シミュレータ
•ハードウェア仕様•知能モジュール仕様•ロボットシステム仕様•作業シナリオ記述 ・動作記述 ・動作制御記述
RTC デバッガ
シナリオ作成ツール
動作設計ツール
RTC リポジトリ
•RT ミドルウエアを基盤としたロボットソフトウエア開発のための統合プラットフォームを開発•共通のプラットフォーム上で、さまざまな知能モジュールを開発するOpenRT Platform (OpenRTP)
||OpenRTM+ツールチェーン
• マエカワ• ゼネラルロボティックス• 東大• (社)日本ロボット工業会
RTC RTC RTC RTC RTC RTC RTC RTC
RTC RTC RTC RTC RTC RTC RTC RTC
RTC RTC RTC RTC RTC RTC RTC RTC各コンソーシアムの技術をRT コンポーネントとして
集積相互利用・再利用を図る
40
プロジェクト体制
①プラットフォーム
ソフトウエアプラットフォーム
ハードウエアプラットフォーム
②作業知能(生産分野)
③作業知能(社会・生活分野)
④移動知能(サービス産業分野)
⑤高速移動知能(公共空間分野)
⑥移動知能(社会・生活分野)
⑦コミュニケーション知能(社会・生活分野)
プラットフォームツール提供
リファレンスハードウエア上で
検証
企画調整WG
グループ間でモジュールを流通させる
標準仕様記述方式を検討各研究組織は実際に使えるものを
作ることを要求される
各研究組織は開発成果を事業化することを求められる
OpenRT Platform によるロボット開発プロセス
• OpenRTP– RT ミドルウエアを基盤と
したロボット開発プラットフォーム
• システム開発にもモジュール化の原理を採用– 信頼性– ロバスト性– 柔軟性
• プロセス– 設計– コンポーネント開発– システム開発– シナリオ開発– 運用
RTコンポーネント開発プロセス
RTシステム開発プロセス
RTシステムシナリオ開発プロセス
RTシステム運用プロセス
デザインルール=
コンポーネント仕様記述方式
デザインルール=
システム仕様記述方式
デザインルール=
シナリオ仕様記述方式
ハードウエア等仕様記述方式コンポーネント要求仕様
モジ
ュー
ル化
され
た開
発プ
ロセ
ス
結合
結合
結合
コンポーネント指向ロボット開発
RT-コンポーネント開発
パッケージングツール
RT-システム開発
RT システム開発プロセス
設計設計 運用設計
テスト テスト実装 実装
RT-コンポーネントポジトリリ
foo Component
bar Component
ビルダ、開発・デバッグツール システムエディタ、シミュレータデプロイメントよび
ンフィギュレーションお
コRTCBuilder RTSystem
Editor
OpenHRP3
RTRipository
RTCDebuger
MotionPatternGenerator
ScenarioEditor
Real-TimeVerification
HardwareDesign Tool
Eclipse
開発プロセス間の行き来を容易にし開発者の負担を減らす統合開発環境を構築サービスロボット市場創生のための基盤
43
RT コンポーネントパッケージ
コンポーネント仕様
<rtcomponent> <profile> </profile> : <port> </port></rtcomponent>
RT コンポーネントビルダ
ウィザード・ GUI で入力
ソースコード
<rtcomponent> <profile> </profile> : <port> </port></rtcomponent>
バイナリ
デバッガへ
コンパイル
編集
ソースコード自動生成
開発・実装rtc-template
ソースコード仕様 バイナリRT リポジトリへ
RTC ビルダ
44
RT リポジトリfoo Component
bar Component
知能モジュール仕様
<rtmodule> <rtcs> : </rtcs> <configuration> : </configuration> :</rtmodule>
ソースコード
inv main(void) { int I; : if (a == b) { : } :}
RT コンポーネント検証
リポジトリ検索 システム構成 類似システム作成時
生成
検証
利用 利用 再利用
RT コンポーネントビルダRT コンポーネントデバッガ
RT リポジトリ 類似コンポーネント
ソースコード
inv main(void) { int I; : if (a == b) { : } :}
ソースコード
inv main(void) { int I; : if (a == b) { : } :}
知能モジュール仕様
<rtmodule> <rtcs> : </rtcs> <configuration> : </configuration> :</rtmodule>
利用
生成
雛形ソース生成
シミュレーション
シミュレータRT システムエディタ
利用
知能モジュール仕様記述
45
ロボットシステム
<rtsystem> <rtcs> : </rtcs> <configuration> : </configuration> :</rtsystem>
ロボットシステム仕様
<rtsystem> <rtcs> : </rtcs> <connections> : </connections> :</rtsystem>
Real RT-System Nodes
RT-Network
システム検証
シミュレーション シナリオ等運用時 類似システム作成時
生成
利用
利用 利用 再利用
RT システムエディタ
シミュレータ 実システム 類似システム
RT システム仕様記述
46
RT ミドルウエアと組込みシステム
ロボットの 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
47
http://www.honda.co.jp
ロボットの 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
48
http://www.aist.go.jp
ロボットの CPU と OS (3)• PaPeRo (NEC)
– CPU: i386 系(ノート PC )– OS : Windows– ARM9 系 +Linux も?
• HOPE-1/2 (富士通)– CPU : PentiumMMX
300MHz– OS:RT-Linux
• WAKAMARU (三菱重工)– CPU : ARMx7– OS : Linux (MontaVista)
• PR2 ( Willow Garage )– OS : Linux ( Xenomai )– CPU : PCx 4+FPGA モー
タドライバ分散
49
http://www.nec.co.jp
http://www.mhi.co.jp http://www.willowgarage.com
http://techon.nikkeibp.co.jp
ロボットと μITRON• サービスロボットで μITRON が使われることは(今のところ)稀である。
• そもそも、サービスロボットは組込みシステムとは言えない(かもしれない)。
50
• 我々は組込みシステムおよび μITRON(特に TOPPERS )に着目。
しかし
なぜか?
なぜ「ロボット」で「組込み」か?
• 分散化– MPU モータドライバ +CAN 、 FlexRay 、 TTP/
C 、 EtherCAT etc..– 体内・体外ネットワーク
• 安全性– 機能安全: IEC61508 に注目
• NEDO生活支援ロボット PJ– ロボット安全に関する標準化の動き– 実用化には必須
• 実用化– 安定性、堅牢性、長時間連続使用– 信頼性(ディペンダビリティ)
51
知能化空間・ロボット住宅( NEDO オープンイノベーション PJ )
• 生活支援ロボット– 知能化空間 + ロボット
• RTM– 家屋内のセンサネットワーク構築
– センサ→ロボット– ロボット→アクチュエ
ータ– Etc…
52
すべてを RTM で統合分散センサ・モータ→組込みデバイス
RT コンポーネント化されたロボット
RT コンポーネント化されたデバイス
RT コンポーネント化されたデバイス
RT コンポーネント化されたロボット
RTC チップ組み込みイメージRTC チップ
既存のロボット 既存のロボット 既存のデバイス 既存のデバイス
RTC チップには・通信インターフェース・チップ化された RTC インターフェース・基本的な I ・ O インターフェースが組み込まれている
既存のロボット・デバイスを容易に RTC 化
RTC チップ開発
• 目的:• reliability を考慮した RTM システム構築のた
め• 様々なデバイスを RTC 化
• 電灯、スイッチ、単機能センサ、 etc…
• RTC チップまたは軽量 RTC• デバイスに接続すれば RTM に参加可能• 名刺半分サイズ• @ 2000円以下
機能安全と IEC61508
• 機能安全 (Functional Safety)
– システムの安全を確保する機能を持つ
– リスクを許容目標へ軽減する
– ⇔本質安全 (固有安全 )1.全安全ライフサイクル
の導入2.安全度水準( SIL )とい
う定量的尺度の導入3.機能安全管理に対するコ
ンピテンシーの採用人的要因(個人コンピテンシー)
組織の機能安全管理
技術要因
ハードウエア
200 の技法
ライフサイクル規定
ソフトウエア
100 の技法
ライフサイクル規定
http://systemsafety.fc2web.com/
安全関連系と RT ミドルウエア
• 安全関連系– 必要なリスク軽減を達
成するシステム
• RTC が安全関連系に組み込まれる– OS レスまたは認証済
み OS を使用することが望ましい
56
OS
RTM
RTC
安全関連系を構成するデバイス RTC
VxWorksor
TOPPERSが有力
57
RTC-Lite からTOPPERS 版 OpenRTM-aist へ
RTUnit(2003 年~ ) /RTC-Lite ( 2005 年~)
• ネットワーク型マイコン機器– small/μ RTUnit を RTM で統合
58
small RTUnit
μRTUnit
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
RTC-Lite : Proxy方式
Proxy Component
Small RT-UnitI/O
PC
RTC-Lite protocol
フル規格 RTC へフル規格 RTC から
モデルに基づくコード生成
60
コンポーネント仕様MyComptemp.sensor devicetemp. sensor RTCSTATICPERIODICmode:TimedBooltemp: TimedDouble
name:category:description:comp_type:act_type:InPorts:OutPorts:
Template code generator
C++backend
Javabackend
Pythonbackend
RTC-Litebackend
RTC source for C++
RTC source for Java
RTC source for Python
RTC-Lite source for PIC C
RTC-Lite proxy code
class MyComp : public DataflowComponent { public: virutal onExecute(ec_id); : private: TimedBool m_mode; TimedDouble m_temp;};
import RTC.DataFlowComponent;public class MyCompImplextends DataFlowComponent{ public ConsoleInImpl(mgr) { } :};
#/usr/bin/env pythonimport RTCclass MyComp( DataFlowComponent): def __init__(self, manager): : def onExecute(self, ec_id): :
#include <16f877a.h>#include "rtc_base.c“
int main (void){ rtc_connect_proxy(); rtc_mainloop(); return 0;}
#/usr/bin/env pythonimport RTCclass Proxy( DataFlowComponent): def __init__(self, manager): : def onExecute(self, ec_id): :
同一の RTC 仕様からは言語が異なっていても、同じ(コンポーネントモデルの) RTC
が生成される
RTC-Lite の応用
small RT-Unit& RTC-Lite
small RT-Unit& RTC-Lite
Proxy Proxy
Communication Server
Touch sensor
Lampblue bluered red
移動プラットフォームへの適用
メディアアート作品への適用
様々な組込み向け RTC
Proxy RTC
RTC Activity
CORBA RTC
RTC-Lite
RTC-Lite
Proxy RTC
RTC Activity
CORBA RTCeRTC
eRTC
RTC
軽量 CORBA RTC
RT-Unit RT-Unit
RT-Unit
PC PC
PC が必須 PC はオプショナル
通常 RTC
eRTC
通常 RTC
通常 RTC
RTC-
Lite
で通
信
eRTC
で通
信
TCP/
IPO
r oth
er
TCP/
IPO
r oth
er
OS が必要それなりの CPU が必要
RTC-Lite方式 eRTC方式 軽量 CORBA方式
RTC-Lite同士は直接通信不可
RTC同士は直接通信可
実現済 実現済 実現可能か?
TOPPERS で実現可能に
様々な組込み向け RTC
RTC
CORBA RTC
RTC Proxy Chip
RTC-Lite
RTC-Lite
RTC
CORBA RTC
RTC FPGA Chip
RTC-Lite
RTC-Lite
RT-UnitRT-Unit
TCP/IP Chip TCP/IP Chip
通常 RTC 通常 RTC
RTC-Liteで通信
SPIor other
RTC-Liteで通信
SPIor other
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
65
OpenRTM をクロスビルド
RTC 用 ROM イメージを作成
RTC をクロスコンパイル
クロス開発環境 ターゲット CPU ボード
RTC 用 ROM イメージを書き込み
RTC を書き込み 挿入
USBメモリ
このプロセスは 1回のみ行えばよい
TOPPERS 版 OpenRTM
• TOPPERS– uITRON互換 OS– オープンソース– 製品搭載実績多数
• RtORB– 産総研版 CORBA– 軽量・高速
• coil– OS抽象化層
66
OS (TOPPERS)
TINET coil
OpenRTM-aistRtORB
RTC RTC RTC RTC RTC
67
標準化
68
なぜ標準が必要?
RT ミドルウエアの目的• 人々の間で共有される共通ソフトウエアモデル
≠
ソフトウエアモデルが共有されていないと…
意思疎通が困難に…
69
In P o r t 0 O u tP o r t 0
C O R B A o b je c tT h re a d
O u tP o r t n
co m m a n d re p ly
re p ly
re p ly
re p ly
p u s h
g e t
g e t
p u t
g e t , s u b s c r ib e
R T C o m p o n e n t
In P o r t n
A c t iv i ty
p u t
p u t
共通コンポーネントモデルに基づいて考えると…
なぜ標準が必要?
RT ミドルウエアの目的• 人々の間で共有される共通ソフトウエアモデル
RT システムの構造を確実に相手に伝えられる。
C o m p o n e n tC o m p o n e n t
複雑な RT システム
70
相互運用可能
なぜ標準が必要?
RT ミドルウエアの目的• 人々の間で共有される共通ソフトウエアモデル• オープンな仕様を提供
– 誰でも実装可能→実装の多様性– 仕様を策定することが主たる目的– 実装 (OpenRTM-aist) :仕様の妥当性検証
RTM 仕様 RTM 実装 A RTM 実装 B RTM 実装 C
オープン化ミドルウエアが競争領域ではなくなる
上に載せるロジック・コンポーネントの共有・競争の促進
71
なぜ標準が必要?RT ミドルウエアの目的• 人々の間で共有される共通ソフトウエアモデル• オープンな仕様を提供
– 誰でも実装可能→実装の多様性– 仕様を策定することが主たる目的– 実装 (OpenRTM-aist) :仕様の妥当性検証
• 実装技術に非依存なソフトウエアモデル– 特定の言語、 OS 、分散オブジェクトミドルウエアに依存しない
モデル( PIM: Platform Independent Model )
• →標準化が必要– OMG (Object Management Group) における標準化– オープンな標準化プロセス
72
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…
73
OMG における標準化• OMG から RFP (Request
For Proposal) が出される。• 標準化を希望するベンダ
が提案を持ち寄る。– 提案は PIM および PSM
• 合意ベースのプロセスに基づき標準仕様を策定。
• OMG における認定プロセス
• OMG 標準としてオープンに…
RFPRequest for Proposal
OO の標準化に関して提案がある人は手を上げてくださ
い
提案 A 提案 B 提案 C
提案者間の合意に基づく
標準化プロセス
OMG 標準
74
OMG における標準化
2005 年 2006 年 2007 年
RFP 発行( RFP=標準仕様提案の呼びかけ)
2005.9
Initial Submission
2006.2
Joint Submission
2006.6
Adopted Specification
2006.9 2008.4
標準仕様の公式リリース
①OpenRTM-aist に基づく初期提案の作成
①
②共同提案書作成のための詳細を議論
②
③標準作業部会への提出・採択
③
④最終文書化委員会における整合性の議論
④
2008 年
75
OpenRTM と OMG RTC 仕様
OpenRTM-aist0.2.0
OpenRTM-aist0.3.0
OpenRTM-aist0.4.0
OMG に提案 OMG RTC 仕様採択
OMG RTC 仕様正式リリース
OpenRTM-aist1.0
0.2.0 の RTCを元にした仕様案を作成
OMG RTC 仕様に準拠した始めてのバー
ジョン
2008 年 4月
2009 年RC1 : 5月
RELEASE : 7月
2007 年 9月採択
その後 FTF にて公式リリースに向けて議
論
NEDOプロジェクト成
果2002-2005 年
76
OMG RTC の特徴• コンポーネント間の状態を統一的に扱うライフ
サイクル管理方法を提供• コンポーネントおよび付随するオブジェクトを記述するためのデータ構造を規定
• 基本的なデザインパターンを提供– 細粒度コンポーネントの密な結合を実現するデータ
フロー型コンポーネント– 有限状態マシンを有する stimulus-response 型コン
ポーネント– 同期または非同期的なコンポーネントのコンポジ
ションを実現するモード型コンポーネント
77
PIM (Platform Independent Model)
pd RTC Packages
«profile»RTC
(from Robotic Technology Components)
Execution Semantics Introspection
Lightweight RTC
SDOPackage
(from External Models)
• OMG RTC 仕様は 3つのパッケージから構成される :
– Lightweight RTC– Execution
Semantics– Introspection
78
pd RTC Packages
«profile»RTC
(from Robotic Technology Components)
Execution Semantics Introspection
Lightweight RTC
SDOPackage
(from External Models)
パッケージ1 : Lightweight RTC
• Lightweight RTC– コンポーネント、ポート、
コネクタ等のスレレオタイプ
– コンポーネントライフサイクル
– 実行コンテキスト– コンポーネントのメタ情報
を取得するイントロスペクション機能は含まれない
– 静的に構成されるコンポーネント
コンポーネント
ポート
状態マシン
79
pd RTC Packages
«profile»RTC
(from Robotic Technology Components)
Execution Semantics Introspection
Lightweight RTC
SDOPackage
(from External Models)
パッケージ 2: Execution Semantics
• Execution Semantics– ロボットシステム一般に
よく用いられる振舞いのパターンを提供する
1. 時刻に同期して、データの流れにより駆動されるタイプ(データフロー型)
2. Stimulus-response型あるいはイベントドリブン型の実行タイプ (FSM)
3. 幾つかのモードを内包するモード型
Data flow
FSMrequestresponse
Multi Modal
80
pd RTC Packages
«profile»RTC
(from Robotic Technology Components)
Execution Semantics Introspection
Lightweight RTC
SDOPackage
(from External Models)
パッケージ 2: Introspection
• Introspection– コンポーネントのメ
タ情報取得のためのインターフェースを提供
– 別の OMG 標準であるSDO ( Super Distributed Objec
t )に準拠– 動的な構成(コン
ポーネント間の接続等)が可能なコンポーネント
コンポーネント
ポート
状態マシン
RTC SDO
81
PSM (Platform-Specific Models)
• CORBA IDL– CORBA 2.x 準拠の IDL (Interface Definition Language) を提供
• CORBA Component Model– CCM ( CORBA コンポーネントモデル)準拠の仕
様を提供
• Local components– 通信オーバーヘッドの少ない単一プロセスモデル– C++ マッピングとして提供
82
OMG RTC 仕様と OpenRTM-aist
<<PIM>SDO model
<<mapping>>
<<PIM>>RTC Specification
RTM for other platforms
OpenRTM-aist implementation
Extended interfacefor OpenRTM-aist
PSM (Platform Specific Model)level specification
Implementation
PIM (Platform Independent Model)level specification
Implementation by other vendors
<<use>>
<<implements>>
<<PSM>RTC
CORBA model
<<PSM>>RTC
EJB model
<<PSM>>RTC
SOAP model
<<interface>>OpenRTM
basic interface
OpenRTM-aist Other RTM
<<interface>>OpenRTM
ext. interface
OMG における
標準仕様
産総研による実装
83
終わりに• RT ミドルウエア
– モジュール化による諸問題の解決– 新たなロボットビジネス市場の創生
• OpenRTM-aist アーキテクチャ– コンポーネントフレームワーク
• 開発の労力をコアロジックに集中
• 組込みシステム– 分散化、安全性、信頼性への要求の高まり– TOPPERS 版 OpenRTM-aist へ
• RTC の OMG における標準化– 競争領域、非競争領域の分離
84
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/