...

第1部:OpenRTM-aist-1.0.0の新機能と今後の展望について

by user

on
Category: Documents
23

views

Report

Comments

Transcript

第1部:OpenRTM-aist-1.0.0の新機能と今後の展望について
ROBOMEC2010チュートリアル
OpenRTM-aist-1.0の新機能
O
RTM i t 1 0の新機能
および今後の展望について
日時: 2010年6月14日(月) 10:00場所:旭川地場産業振興センター・2F
(独)産業技術総合研究所 知能システム研究部門 安藤慶昭
概要
•
•
•
•
RTミドルウエア概要
ド
次世代ロボット知能化PJ
OpenRTM-aist-1.0.0の新機能・今後の展望
RTコンポーネントの作り方
2
RTとは?
• RT = Robot Technology
cf. IT
– ≠R
≠Real-time
l ti
– 単体のロボットだけでなく、さまざまなロボット技術に基づく機能要素
をも含む (センサ、アクチュエータ, 制御スキーム、アルゴリズム、
etc )
etc….)
産総研版RTミドルウエア
OpenRTM-aist
p
+
+
+
+
+
RT-Middleware
• RT-Middleware (RTM))
– RT要素のインテグレーションのためのミドルウエア
• RT-Component (RTC)
– RT-Middlewareにおけるソフトウエアの基本単位
RT Middlewareにおけるソフトウエアの基本単位
3
RTミドルウエアの目的
モジュール化による問題解決
ジ
ル化による問題解決
•
•
•
仕様の明確化
コストの問題
最新技術を容易に利用可能
誰でもロボットが作れる
A社製移動ベース
B社製アーム
技
技術の問題
ニーズの問題
ズ
最新の理論・
アルゴリズム
多様なユーザ
C社製センサ・・・
仕様
RTコンポーネント化
!
モジ
モジュール化・再利用
ル化 再利用
ロボットの低コスト化
!
!
!
システム開発者
最新技術を利用可能
カスタマイズが容易に
多様なニーズに対応
ロボットシステムインテグレーションによるイノベーション
4
RTミドルウエアとRTコンポーネント
ロジック
・デバイス制御
・制御アルゴリズム
制御アルゴリズム
・アプリケーション
etc…
RT
コンポーネント
フレームワーク
RT
コンポーネント
ロジックを箱(フレームワーク)に入れたもの=RTコンポーネント(RTC)
RTC
RTC
RTC
RTC
RTC
RTC
RTC
RTC
RTミドルウエア
RTCの実行環境(OSのようなもの)=RTミドルウエア(RTM)
※RTCはネットワーク上に分散可能
5
RTコンポーネントの主な機能
データポート
アクティビティ・実行コンテキスト
複合実行
共通の状態遷移
態
Inactive
•
デ タ指向ポ ト
データ指向ポート
連続的なデータの送受信
•
動的な接続・切断
•
センサRTC
Active
目標値
制御RTC
Error
ステレオビジョンの例
サービスポート
ステレオビジョン
インターフェース
・モード設定関数
・座標系設定関数
・キャリブレーション
・etc…
3Dデプス
データ
画像
データ
デ
タ
Kp
位置
制御器
コ ンポーネント
アクチュエータ
コンポーネント
コンフィギュレーション
定義可能なインターフェースを持つ
定義
能な
タ
を持
内部の詳細な機能にアクセス
パラメータ取得・設定
– モード切替
– etc…
etc
+
データ指向通信機能
サービスポート
–
1
TI s
TDs
ライフサイクルの管理・コアロジックの実行
•
電圧
-
アクチュエータRTC
エンコーダ
コンポーネント
ンポ ネント
•
サーボの例
位置
ステレオビジョン
コンポ ネント
コンポーネント
•
•
•
パラメータを保持する仕組み
いくつかのセットを保持可能
実行時に動的に変更可能
セット名
名前
セット名
名前
複数のセットを
動作時に
切り替えて
使用可能
値
値
データポート
サービス指向相互作用機能
6
リアルタイム実行コンテキスト
非
非リアルタイムLinux
タイム
リアルタイムLinux
タイム
リアルタイムスケジューラ
非リアルタイムスケジューラ
実行コンテキストを
実行
キ トを
動的に差し替える
ことが可能
ExecutionContext
ExecutionContext
非リアルタイム Linux用
実行コンテキスト
同一のRTコンポーネントバイナリ
リアルタイムLinux用
実行コンテキスト
非リアルタイムLinux環境で作られたRTコンポーネントを
再コンパイルせずにリアルタイムLinux上でリアルタイム実行可能
7
RTCの分割と連携
ロボット体内のコンポーネントによる構成例
画像データ
顔位置
問 合せ
カメラ
コ ンポーネント
画像データ
顔認識
コ ンポーネント
人物データ
表情データ
ステレオビジョン
コ ンポーネント
カメラ
コ ンポーネント
ポート
データ・コマンドの流れ
デ
タ コマンドの流れ
ジェスチャ
軌 道データ
カメラコントロール
音声データ
音声認識
コ ンポーネント
対話
コ ンポーネント
文字データ
頭・腕駆動
コ ンポーネント
音声合成
コ ンポーネント
文字データ
デ
マイク
コ ンポーネント
( ジ
(モジュール)情報の隠蔽と公開のルールが重要
)情報 隠蔽と公開
が重要
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
RTC
アプリケーション
RTC
操作デバイス
RTC
RTC
RTC同士の接続
は プログラム
は、プログラム
実行中に動的に
行うことが出来る。
センサ
開発環境
•
•
RTCBuilder (GUI版)
rtc-template (CUI)
– RTコンポーネントのコードジェネレータ
– GUI画面で必要事項を入力
– C++, Python, Java, C#等のコードを自
動生成
•
RTSystemEditor
RTCBuilder
– ネットワーク上のすべてのコンポー
す
ポ
ネントの操作が可能
– コンポーネントのON/OFF、パラ
メ タの変更、状態監視
メータの変更、状態監視
– コンポーネント間の接続
RTSystemEditor
RTC・RTM統合開発環境の整備
RTC設計・実装・デバッグ、RTMによるインテグレ
RTC設計・実装・デバッグ
RTMによるインテグレーション・デバッグまでを
ション・デバッグまでを
一貫して行うことができる統合開発環境をEclipse上に構築
RTUnit(2003年~)
年
/RTC Lite(2005年~)
/RTC-Lite
(
年 )
• ネットワーク型マイコン機器
ネ ト
ク型 イ
機器
– 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
11
モデルに基づくコード生成
コンポーネント仕様
name:
a e
category:
description:
comp_type:
act_type:
InPorts:
OutPorts:
MyComp
yCo p
temp.sensor device
temp. sensor RTC
STATIC
PERIODIC
mode:TimedBool
temp: TimedDouble
同一のRTC仕様からは
言語が異なっていても、
同じ(コンポーネントモデ
ルの)RTCが生成される
Template code generator
C++
backend
RTC source
for C++
class MyComp
: public DataflowComponent {
public:
virutal onExecute(ec_id);
:
private:
TimedBool m_mode;
TimedDouble m_temp;
};
Java
backend
RTC source
for Java
RTC source
for Python
import RTC.DataFlowComponent;
public class MyCompImpl
extends DataFlowComponent
{
public ConsoleInImpl(mgr)
p
p( g )
{
}
:
};
#/usr/bin/env python
import RTC
class MyComp(
DataFlowComponent):
__init__(self,
__(
manager):
g )
def __
:
def onExecute(self, ec_id):
:
Python
backend
RTC-Lite
backend
RTC-Lite
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
RTC
Lite proxy
code
#/usr/bin/env python
import RTC
class Proxy(
DataFlowComponent):
__init__(self,
__(
manager):
g )
def __
:
def onExecute(self, ec_id):
:
12
RTC Liteの応用
RTC-Liteの応用
Communication Server
Proxy
Proxy
small RT-Unit
& RTC-Lite
small RT-Unit
& RTC-Lite
Touch sensor
メディアアート作品への適用
blue
red
Lamp
red
blue
移動プラットフォームへの適用
組込みLinux版OpenRTM
このプロセスは1回のみ行えばよい
OpenRTMをクロスビルド
RTC用ROMイメージを作成
RTCをクロスコンパイル
クロス開発環境
RTC用ROMイメージを書き込み
RTCを書き込み
挿入
USBメモリ
ターゲットCPUボード
14
TOPPERS版OpenRTM
• TOPPERS
– uITRON互換OS
– オープンソース
オ プンソ ス
– 製品搭載実績多数
• RtORB
– 産総研版CORBA
– 軽量・高速
• coil
RTC
RTC
RTC
RTC
RTC
– OS抽象化層
OpenRTM-aist
RtORB
TINET
coil
OS (TOPPERS)
15
OpenRTM aist
OpenRTM-aist
•
•
コンポーネントフレームワーク + ミドルウエアライブラリ
コンポーネントインターフェース:
ポ
– OMG Robotic Technology Component Specification ver1.0 準拠
•
OS
– 公式:FreeBSD, Linux (Fedora, Debian, Ubuntu, Vine, Scientific), Windows
– 非公式:Mac OS X, uITRON, T-Kernel, VxWorks
•
言語:
– C++ (1.0.0), Python (1.0.0), Java (1.0.0)
– .NET (implemented by SEC)
•
CPU アーキテクチャ
キ ク
(動作実績):
動作実績
– i386, ARM9, PPC, SH4
– PIC, dsPIC, H8 (RTC-Lite)
•
ツール (Eclipse プラグイン)
– テンプレートソースジェネレータ: rtc-template、RTCBuilder
– システムインテグレ
システムインテグレーションツール:
ションツ ル: RTSystemEditor
– その他
• Pattern weaver for RT-Middleware (株式会社テクノロジックアートより発売中)
16
OpenRTMの利点
• 共通コンポーネントフレームワークを提供
– OMG標準
– コールバックベースの枠組み、共通状態マシン、複合化に対応
– 大部分のコード生成を自動化
大部分の
ド生成を自動化
• 多言語対応
– C++, Java, Python, .NET (by SEC)
• 多様なOSへのネイティブ対応
– FreeBSD, Linux, Mac OS X, Windows
– 試験的:TOPPERS,
試験的:TOPPERS T
T-Kernel
Kernel, VxWorks
• ツールの提供
– Eclipseベースのツール群 (RTCB, RTSE)
– コマンドラインツール群
コマンドラインツ ル群 (rtchell)
• デュアルライセンス (EPLと個別ライセンス)
– RTCにはラインセンスが及ばない(RTCのバイナリ供給が可能に)
– 商用化、事業化、組込み用途には個別ライセンスで対応
17
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
p
1.0リリース
科研費 若手(B)
科振費 分散コンポーネントシミュレータ
NEDO 次世代ロボット共通基盤開発
今年のロボット大賞2007
優秀賞受賞
工業標準部 標準基盤研究
科振費 環境と作業構造のユニバーサルデザイン
産総研イニシアチブ UCROA
さまざまなプロジェクトで
標準
標準ソフトウエアプラットフォーム
トウ
プ
ト
ム
として採用されている
2010年
NEDO 戦略的先端ロボット要素技術開発
経済産業省・NEDO
次世代ロボット知能化技術開発プロジェクト
OMGにおける標準化
①OpenRTM-aistに基づく
初期提案の作成
②共同提案書作成
のための詳細を議論
2005年
③標準作業部会
への提出・採択
④最終文書化委員会
における整合性の議論
2006年
2005 9
2005.9
①
2006 2
2006.2
②
2006 6
2006.6
2007年
③
2006 9
2006.9
④
2008年
2008 4
2008.4
標準仕様の
公式リリース
RFP発行
(RFP=標準仕様
提案の呼びかけ)
Initial Submission
Joint Submission
Adopted Specification
19
多様な実装
• OpenRTM-aist:
O
RTM i t 産総研実装
– C++, Python, Java の3種類
• OpenRTM.NET:
OpenRTM NET: 株式会社SEC版実装
– .NET版: VB, C#
• 韓国ETRI
– OPRoS コンポーネント:一部準拠
• PALRO:富士ソフト
– 小型ヒューマノイド制御フレームワークがC++ソースレベ
ルでOpenRTM互換
• GostaiRTC: 仏GOSTAI & Thales
– OMG RTC Local PSM に準拠
20
実用化・事業化
•
P
Pattern
W
Weaver
f RTM
for
– テクノロジックアートのUMLツールの拡張
•
J PARC(大強度陽子加速器施設)DAQシステム
J-PARC(大強度陽子加速器施設)DAQシステム
– KEKのDAQミドルウエアはRTM上に構築
•
HRP-2
– GRXのヒューマノイドロボット制御プログラムがOpenRTMへ移行予定
プ グ
•
HIRO
– GRXの双腕ロボットがQNX版OpenRTMへ移行予定
•
たいぞう
– GRX、産総研の体操ロボットがOpenRTMへ移行予定
21
書籍 (1)
•
•
はじめてのコンポーネント指向ロボットアプリケ
ーション開発 ~RTミドルウェア超入門~
長瀬 雅之、中本
長
、 本啓
啓之、
、 池添
添 明宏 著
•
•
UMLとRTミドルウェアによるモデルベースロボ
ットシステム開発
賢一,, 坂本 武
武志 著
水川 真, 大原 賢
22
書籍 (2)
• 第3章:ソフトウエア技術
第 章
ウ
技術
–
–
–
–
–
–
–
–
3.1 概論(安藤慶昭)
3 2 並列処理(山崎信行)
3.2
3.3 実時間処理(加賀美聡)
3.4 プログラミング言語(松井俊浩)
3.5 分散処理技術(成田雅彦)
分散処 技術 成 雅彦
3.6 ロボット用ミドルウェア(安藤慶昭)
3.7 ロボット開発プラットフォーム(金広文男)
(
男
3.8 標準化(水川真)
23
次世代ロボット知能化技術開発プロジェクト
•
•
平成19年度(19億円)~23年度(5年間)
開発が計画されている知能モジュ ル群
開発が計画されている知能モジュール群
– 作業知能(三菱電機、東芝、安川電機、産総研等)
– 移動知能(富士重工、富士通、アイシン、東大等)
– コミュニケーション知能(NEC、ATR等)
•RTミドルウエアを基盤とし
ド ウ
を基盤と
たロボットソフトウエア開発
のための統合プラットフォー
ムを開発
•共通のプラットフォーム上
で、さまざまな知能モジュー
ルを開発する
ソフトウェアプラットフォーム
仕様・記述方式の共通化
ソフトウェアツール群
要素機能開発
•ハードウェア仕様
•知能モジュール仕様
•ロボットシステム仕様
•作業シナリオ記述
作業シナリオ記述
・動作記述
・動作制御記述
RTCビルダ
RTCデバ ガ
RTCデバッガ
RTシステムエディタ
システム開発
ロボット設計支援ツール
RTCリポジトリ
シミュレータ
アプリケーション
開発
動作設計ツール
シナリオ作成ツール
実時間SW設計ツール
OpenRTプラットフォームは、RTシステム開発プロセスをEclipse上で一貫して行うためのツールチェーンを提供します
RTCビルダ
RTコンポーネント開発
システム開発
メリット①
Eclipseの豊富な既存の
開発環境を利用すること
ができる
シナリオエディタ
シナリオ開発
メリット②
統合プラットフォーム
なのでイテレーション
(繰り返し)が容易
完成
設
計
設
計
設
計
テス
ト
実時間ソフトウエア
設計支援ツール
RTシステムエディタ
テス
ト
実
装
実
装
テス
ト
実
装
「OpenRTプラットフォーム」
OpenRTプラットフォ ム」
RTミドルウエア + Eclipse + ツールチェーン
RTCデバッガ
ハードウエア
設計支援ツール
動力学シミュレータ
移動動作
設計ツール
動作パターン
設計ツール
※ 一部のツールは、OpenRTM-aist、OpenHRP3のWebページにて配布中です。
※ 動作パターン設計ツールはEclipseプラグインではありません。
25
知能化PJにおける
標準化の取り組み
• ソフトウエアプラットフォームコンソ
プ
– RTC仕様記述方式、RTS仕様記述方式
C仕様記述方式、 S仕様記述方式
• サブワーキンググループ
– 移動、対話、作業等で標準的に使用されるインタ
移動 対話 作業等 標準的に使用されるイ タ
ーフェース等を策定
• 共通インターフェースセット
• 共通データ型セット
• 再利用センター
– 作成されたRTCの検証、再利用性の評価
作成されたRTCの検証 再利用性の評価
26
OpenRTM開発体制(産総研)
NEDO知能化PJ
NEDOオープンイノベーションPJ
OpenRTM-aist
講習会
ML
産総研重点化予算
C++
Python
Java
コンテスト
利用
Web
派生
ツール
RTCBuilder
RTS t Edit
RTSystemEditor
組込みRTM
RTミドルウエア
準拠
利用
標準化
仕様記述方式
RTCProfile
RTSProfile
RTC-Lite
uITRON版
関連
RTC標準化
D&C標準化
産総研標準基盤研究
27
O
OpenRTM-aist-1.0.0の新機能
RTM i t 1 0 0の新機能
28
OpenRTM aist 1 0 0の新機能
OpenRTM-aist-1.0.0の新機能
•
•
•
•
•
•
データポートの高機能化
デ
ポ
高
サ ビスポ トの拡張
サービスポートの拡張
RTCマネージャの提供
OSサポートの強化
Coilの導入
ツールのユーザビリティの向上
29
データポートの高機能化
• データフロー制御機能
デ タフロ 制御機能
最新のデータだけ必要
– 多様なデータの利用の仕
方に対応
• シリアライズ機構の導入
– データポート内で直列化
– 多様な通信チャネルに対
応
MobileRobot
コンポーネント
Joystick
コンポーネント
DataLogger
コンポーネント
全てのデータが必要
• Rawソケット、共有メモリ
• バ
バッファリングポリシーの
グポ シ
導入
– バッファフル状態等の検出
Pushポリシー
all: N N N N
全てのデータを送信
最初に書き込まれた
データを送信
fifo: N N N N
N N N N
詳細は
次世代ロボット知能化技術開発プロジェクト
2A1-G03: 9:30-11:00
skip: N N N N
(skip count :1)
N N N N
new:
N: 新しいデータ
(未送信データ)
Skip countの値だけ
データを間引いて送信
最新のデータを送信
30
サービスポートの拡張
• 多くのインターフェース
が関連する複雑な接続
Required Interface
d
RTC
Ac1 Ap1
Provided Interface
d
RTC
Ap2
Ac2
– 実行時に接続インターフ
ェースペアを指定可能
A’p1
Port
• RTSystemEditor
– 接続関係を詳細に指定
可能なダイアログを追加
ダイアログで接続関係を指定
詳細は
次世代ロボット知能化技術開発プロジェクト
2A1 G01 9:30-11:00
2A1-G01:
9 30 11 00
31
RTCマネージャの導入
• RTシステムライフサイ
クル管理のためのプロ
グ
グラム
• RTCを遠隔から起動、
停止、削除可能
ツールのサポート
ルのサポ ト
• ツ
Application
Program
遠隔から操作
launch slave manager
manager,
create RTC, etc.
Slave Manager
RTC
Factory
RTC
RTC
create
Node
Master
Manager
Slave Manager
RTC
Factory
create
– RTSystemEditor
– rtcshell
詳細は
次世代ロボット知能化技術開発プロジェクト
2A1 G02 9:30-11:00
2A1-G02:
9 30 11 00
マネージャコントロールビューの追加
32
OSサポート
• Windowsインストーラ
– omniORB同梱
– RTSystemEditor (RCP版
版
) を同梱
– VC再配布ライブラリ同梱
• Mac OS Xサポート
– 公式サポ
公式サポート
ト
– MacPortsのportsファイル
を提供
– RTSE等の全部入りパッケ
ージを提供
33
その他
• coilil (Common Operating System Infrastructure Layer)
– ACEと同等の機能を実装(OpenRTMに必要なもののみ)
– uITRON(TOPPERS)に対応(0.4+TOPPERSで動作を
uITRON(TOPPERS)に対応(0 4+TOPPERSで動作を
確認)
– OS毎にソースを分割
– 対応プラットフォーム(Linux、Windows、uITRON、ACE)
対応プ
(
)
• ツールユーザビリティの向上
– RTCBuilder
• ヒントの追加、GUIの見直し
– RTSystemEditor
y
• ショートカットの追加
• GUIの見直し
34
今後の展望(1)
• OSサポートの追加
ポ
追
– TOPPERSを公式サポート予定
• RTCマネージャ機能
– すべてのRTCをシステム構成ファイルから自動起動
– オフラインエディタの活用
– 名前解決方法の追加:ブロードキャスト、URL
名前解決方法の追加 ブロ ドキャスト URL
• RTコンポーネント機能
– Raw TCPデータポート
– 共有メモリ型データポート
共有
リ型デ タポ
35
今後の展望(2)
• 新Webページ
新
ジ
– ドキュメント
– サンプルの追加
– ユーザプロジェクトペー
ジの追加
– コンポーネント一覧
• リポジトリ
– ツール自動更新機能の
追加
36
RT ンポ ネントプログラミング
RTコンポーネントプログラミング
37
OpenRTMを使った開発の流れ
OpenRTM
開発環境
ユーザが作った
ライブラリ・クラス
この部分がきちんと
できていることが
非常に大事
RTコンポーネント
分散システム
で利用
他のシステムで
再利用
OpenRTMを使えば
簡単に分散オブジ
簡単に分散オブジェ
クトになる。
フレームワークとコアロジック
RT コ ンポーネント
標 準インターフェース
RT コ ンポーネント
標 準インターフェース
ステレオビジョン
ア ルゴリズム
左目画 像 右目画 像
左目画 像 右目画 像
中身は空
+
=
デプスマップ
コアロジック
RT コ ンポーネント
フ レームワーク
デプスマップ
ステレオビジョン
RT コ ンポーネント
RTCフレームワーク+コアロジック=RTコンポーネント
OpenRTMを使った開発の流れ
コンポーネント
の仕様
どのようなコンポーネントか?
・名前
名前
・データポート
・サービスポート
・コンフィギュレーション
コ ドの雛型
コードの雛型
(C++のクラス)
RtcTemplate
コード生成
コアロジック
RTC開発者が
開発したプログ
ラム資産
コンパイル
.so or DLL
雛型にコアロジック
を埋め込む
マネージャ
ジ
(ミドルウエア)
実行
40
コード例
• 生成されたクラスのメン
バー関数に必要な処理
を 述
を記述
• 主要な関数
– onExecute (周期実行)
• 処理
–
–
–
–
InPortから読む
OutPortへ書く
サービスを呼ぶ
コンフィギュレーションを
コンフィギュレ
ションを
読む
41
コンポーネント内の状態遷移
0.2.0の状態遷移から変更
ユーザがあまり
意識しなくてよい部分
コンポーネント開発時に
必要な部分
ActiveDo/RTC::onExecuteはここに入る
(D Fl 型の
(DataFlow型のコンポーネントのとき)
ポ ネ トのとき)
コールバック関数
RTCの作成=コールバック関数に処理を埋め込む
コールバック関数 処理
onInitialize
初期化処理
onActivated
アクティブ化されるとき1度だけ呼ばれる
onExecute
アクティブ状態時に周期的に呼ばれる
onDeactivated
非アクティブ化されるとき1度だけ呼ばれる
ブ され
き 度だ
ばれ
onAborting
ERROR状態に入る前に1度だけ呼ばれる
onReset
resetされる時に1度だけ呼ばれる
onError
ERROR状態のときに周期的に呼ばれる
onFinalize
終了時に1度だけ呼ばれる
onStateUpdate
St t U d t
onExecuteの後毎回呼ばれる
E
t の後毎回呼ばれる
とりあえずは
この5つの関数
を押さえて
おけばOK
onRateChanged ExecutionContextのrateが変更されたとき1度だけ呼ばれる
onStartup
ExecutionContextが実行を開始するとき1度だけ呼ばれる
onShutdown
ExecutionContextが実行を停止するとき1度だけ呼ばれる
InPort
•
•
InPortのテンプレート第2引数:バ
ッファ
– ユーザ定義のバッファが利用
可能
I P tのメソッド
InPortのメソッド
– read(): InPort バッファから
バインドされた変数へ最新値
を読み込む
– >> : ある変数へ最新値を読
み込む
基本的にOutPortと対になる
データポートの型を
同じにする必要あり
InPort
read()
operator>>
最新値
バインドされた変数
リングバッファ
例
Sensor Data
Robot
C
Component
t
OutPort
•
•
OutPortのテンプレート第2引数:
バッファ
– ユーザ定義のバッファが利用
可能
OutPortのメソッド
– write(): OutPort バッファへ
バインドされた変数の最新値
として書き込む
– >> : ある変数の内容を最新
値としてリングバッファに書き
込む
OutPort
write()
operator<<
最新値
バインドされた変数
リングバッファ
基本的にInPortと対になる
例
Sensor
Component
データポートの型を
同じにする必要あり
Sensor Data
デ タ変数
データ変数
struct
t t TimedShort
Ti dSh t
{
Time tm;
short data;
};
struct
t t TimedShortSeq
Ti dSh tS
{
Time tm;
sequence<short> data;
};
•
•
基本型
シーケンス型
– data[i]: 添え字によるアクセス
– data.length(i):
data length(i): 長さiを確保
– data.length(): 長さを取得
– tm:時刻
– data: データそのもの
デ タそのもの
•
•
•
データを入れるときにはあらかじめ
デ
タを入れるとき はあらかじめ
長さをセットしなければならない。
CORBAのシーケンス型そのもの
今後変更される可能性あり
動作シーケンス
③ 参照を取得
ネームサーバ
ネ
ムサ バ
④ ポートを接続
① 参照を登録
② 参照を登録
47
ネットワークインターフェースが
ネットワ
クインタ フェ スが
2つある場合の注意
RTC-A (Address B)
RTC-A (Address B)
ってどこ?
Address B
登録はアドレスB側の
ネームサーバ
RTC-A
登録はアドレスB側の
ネームサーバ
ネーム
サーバ
サ
バ
Address A
こちらのアドレスを基に
CORBA参照を生成
48
Rtc confについて
Rtc.confについて
RT Component起動時の登録先NamingServiceや、登録
C
t起動時の登録先N i S i や 登録
情報などについて記述するファイル
記述例:
記述例
corba.nameservers: localhost:9876
naming.formats: SimpleComponent/%n.rtc
(詳細な記述方法は etc/rtc.conf.sample を参照)
以下のようにすると、コンポーネント起動時に読み込まれ
以下のようにすると、コンポ
ネント起動時に読み込まれ
る
./ConsoleInComp –ff rtc.conf
ネーミングサービス設定
corba.nameservers
b
host_name:port_numberで指定、デフォルトポートは
h
t
t
b で指定 デ
ルトポ トは
2809(omniORBのデフォルト)、複数指定可能
naming.formats
g
%h.host_cxt/%n.rtc
_
→host.host_cxt/MyComp.rtc
_
y
p
複数指定可能、0.2.0互換にしたければ、
%h.host_cxt/%M.mgr_cxt/%c.cat_cxt/%m.mod_cxt/%
n rtc
n.rtc
naming.update.enable
“YES” or “NO”: ネーミングサービスへの登録の自動アッ
プデート。コンポーネント起動後にネームサービスが起動
したときに 再度名前を登録する
したときに、再度名前を登録する。
naming.update.interval
アップデートの周期[s]。デフォルトは10秒。
timer.enable
“YES” or “NO”: マネージャタイマ有効・無効。
naming.updateを使用するには有効でなければならない
timer.tick
タイマの分解能[s]。デフォルトは100ms。
必須の項目
必須でないOption設定
ログ設定
l
logger.enable
bl
“YES” or “NO”
“NO”: ログ出力を有効・無効
グ出力を有効 無効
logger.file_name
ログファイル名。
%h:ホスト名、%M:マネージャ名,%p:プロセスID 使用可
logger.date_format
日付フォーマット。strftime(3)の表記法に準拠。
デフォルト:%b %d %H:%M:%S → Apr 24 01:02:04
logger.log_level
ログレベル: SILENT, ERROR, WARN, NORMAL,
INFO, DEBUG, TRACE, VERBOSE, PARANOID
SILENT:何も出力しない
PARANOID:全て出力する
※以前は
※以前はRTC内で使えましたが、現在はまだ使えません
内で使えましたが、現在はまだ使えません
。
必須の項目
必須でないOption設定
その他
corba.endpoints
IP_Addr:Port で指定:NICが複数あるとき、ORBをどちらで
listenさせるかを指定 Portを指定しない場合でも”:”が必要
listenさせるかを指定。Portを指定しない場合でも
: が必要。
例 “corba.endpoints: 192.168.0.12:” 使いたいNICに割り当てら
れているIPアドレス
NICが2つある場合必ず指定。
(指定しなくても偶然正常に動作することもあるが念のため )
(指定しなくても偶然正常に動作することもあるが念のため。)
corba.args
CORBAに対する引数。詳細はomniORBのマニュアル参照。
[カテゴリ名].
[コンポーネント名].
config_file
または
[カテゴリ名].
[インスタンス名].
config_file
コンポ ネントの設定ファイル
コンポーネントの設定ファイル
•カテゴリ名:manipulator,
•コンポーネント名:myarm,
•インスタンス名myarm0,1,2,…
インスタンス名
012
の場合
manipulator.myarm.config_file: arm.conf
manipulator.myarm0.config.file: arm0.conf
のように指定可能
必須の項目
必須でないOption設定
まとめ
• ロボット用ミドルウエア:OpenRTM
ボ
ド ウ
–
–
–
–
ロボットに適した共通フレームワークの提供
OMG国際標準
多様な実装、多様な言語、OSに対応
1.0.0新機能:データポート、RTCマネージャ
• 次世代ロボット知能化PJ
次世代
ッ
能
– ツールチェーン、プラットフォームの構築
• RTコンポーネントの作り方
RTコンポ ネントの作り方
53
Fly UP