RT ミドルウエア - TOPPERS による組込み機器への展開-

Preview:

DESCRIPTION

情報処理学会連続セミナー 2009 「進化する組込みシステム技術」 2 nd 組込みソフトウエアプラットフォーム. RT ミドルウエア - TOPPERS による組込み機器への展開-. 安藤慶昭 独立行政法人産業技術総合研究所 知能システム研究部門. 産総研. 独立行政法人産業技術総合研究所 「ライフサイエンス」「情報・通信」「環境・エネルギー」「ナノテク・材料・製造」「地質・海洋」「標準・計測」の 6 分野 研究者: 約 2000 名 知能システム研究部門 - PowerPoint PPT Presentation

Citation preview

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/

• メーリングリスト– OpenRTM-users@m.aist.go.jp

• OpenHRP3– http://www.openrtp.jp/openhrp3/jp/

• OpenRTP– http://openrtp.jp/

• OMG Robotics DTF– http://www.omg.org/robotics/

Recommended