4. 2013.5.22 ROBOMEC2013 RTM講習会 4
OpenRT Pl at f or m
ロボット知能ソフトウェアプラットフォーム
ht t p: / / www. openr t p. j p/ wi ki /
システム設計,シミュレーション,動作生成,シナリオ生成などを
サポート
OpenRT Pl at f or mツール群
コンポーネント開発,システム開発における各開発フェーズの作業
支援
開発プラットフォームにEcl i pseを採用
構成
RTCビルダ
RTCデバッガ
RTシステムエディタ
ロボット設計支援ツール
シミュレータ
動作設計ツール
シナリオ作成ツール
5. 2013.5.22 ROBOMEC2013 RTM講習会 5
統合開発環境Ecl i pse
オープンソース・コミュニティで開発されている統合開発
環境
マルチプラットフォーム対応. Wi ndowsやLi nuxなど複数OS上で利用
可能
「Pl ug- i n」形式を採用しており,新たなツールの追加,機能のカス
タマイズが可能
RCP( Ri ch Cl i ent Pl at f or m) を利用することで,簡単に単独アプリ
化が可能
Java VMJava VM
Eclipse PlatformEclipse Platform
JDTJDT
EclipseSDK
CDTCDT PyDevPyDev
RTCBuilderRTCBuilder・・・ RTSystemEditorRTSystemEditor ・・・
コミュニティから提供されているプラ
グイン
ユーザが開発したプラグイ
ン
9. 2013.5.22 ROBOMEC2013 RTM講習会 9
RTCBui l der 概要
RTCBui l der とは?
コンポーネントのプロファイル情報を入力し,ソースコード等の雛
形を生成するツール
開発言語用プラグインを追加することにより,各言語向けRTCの雛形
を生成することが可能
C++
Java
Pyt hon
※C++用コード生成機能は
Rt cBui l der 本体に含まれていま
す.
※その他の言語用コード生成機能
は追加プラグインとして提供さ
れています
19. 2013.5.22 ROBOMEC2013 RTM講習会 19
基本プロファイル
※エディタ内の項目名が赤字の要素は必須入力項目
※画面右側は各入力項目に関する説明
RTコンポーネントの名称など,基本的な情報を設
定
モジュール名: Fl i p
モジュール概要: 任意( Fl i p i mage
component )
バージョン: 1. 0. 0
ベンダ名: 任意( AI ST)
モジュールカテゴリ: 任意( Cat egor y)
コンポーネント型: STATI C
アクティビティ型: PERI ODI C
コンポーネントの種類: Dat aFl ow
最大インスタンス数: 1
実行型: Per i odi cExecut i onCont ext
実行周期: 1000. 0
21. 2013.5.22 ROBOMEC2013 RTM講習会 21
データポート・プロファイル
※データ型は,型定義が記載されたI DLファイルを設定画面にて追加するこ
とで追加可能
※OpenRTM- ai st にて事前定義されている型については,デフォルトで使用
可能
→[ RTM_Root ] r t m/ i dl 以下に存在するI DLファイルで定義された型
※各ポートに対する説明記述を設定可能
→記述した各種コメントは,生成コード内にDoxygen形式で追加される
生成対象RTCに付加するDat aPor t の情報を設定
①該当種類の欄の「Add」ボタンをクリック
し,ポートを追加後,直接入力で名称
設定
②設定する型情報を一覧から選択
22. 2013.5.22 ROBOMEC2013 RTM講習会 22
データポート・プロファイル
※Por t の設定内容に応じて,下部のBui l dVi ewの表示が変化
● I nPor t
ポート名: or i gi nal I mage
データ型: RTC: : Camer aI mage
変数名: or i gi nal I mage
表示位置: l ef t
● Out Por t
ポート名: f l i ppedI mage
データ型: RTC: : Camer aI mage
変数名: f l i ppedI mage
表示位置: r i ght
24. 2013.5.22 ROBOMEC2013 RTM講習会 24
コンフィギュレーション・プロファイル
※データ型は,shor t , i nt , l ong, f l oat , doubl e, st r i ngから選択可能( 直接入
力も可能)
※制約情報とWi dget 情報を入力することで,RTSyst emEdi t or のコンフィギュレー
ションビューの表示を設定することが可能
生成対象RTCで使用する設定情報を設定
①「Add」ボタンをクリックし,追
加後,
直接入力で名称設定
②詳細画面にて,型情報,変数名などを設
定
名称: f l i pMode
データ型: i nt
デフォルト値: 0
変数名: f l i pMode
制約条件: ( - 1, 0,
1)
Wi dget : r adi o
25. 2013.5.22 ROBOMEC2013 RTM講習会 25
制約条件,Widgetの設定方法
制約条件について
データポートとコンフィギュレーションに設定可能
チェックはあくまでもコンポーネント開発者側の責務
ミドルウェア側で検証を行っているわけではない
Wi dget
t ext (テキストボックス)
デフォルト
sl i der (スライダ)
数値型に対して範囲指定の場合
刻み幅をst epにて指定可能
spi n( スピナ)
数値型に対して範囲指定の場合
刻み幅をst epにて指定可能
r adi o( ラジオボタン)
制約が列挙型の場合に指定可能
制約の記述書式
指定なし:空白
即値:値そのもの
例) 100
範囲:<,>,<=,>=
例) 0<=x<=100
列挙型: ( 値1,値2,・・・)
例) ( val 0, val 1, val 2)
配列型: 値1,値2,・・・
例) val 0, val 1, val 2
ハッシュ型: { key0:値0, key1:値
1,・・・ }
例) { key0:val 0, key1:val 1}
※指定したWi dget と制約条件がマッチ
しない場合は,テキストボックス
を使用
31. 2013.5.22 ROBOMEC2013 RTM講習会 31
カメラ関連コンポーネントの起動
Nami ng Ser vi ceの起動
[ スタート] メニューから
[ プログラム] →[ OpenRTM- ai st 1. 1] →[ C++] →[ t ool s] →[ St ar t Nami ng
Ser vi ce]
Camer aVi ewer Compの起動
[ スタート] メニューから起動
[ プログラム] →[ OpenRTM- ai st 1. 1] →[ C++] →[ component s]
→[ opencv- r t cs] →
[ Camer aVi ewer Comp. exe]
Di r ect ShowCamCompの起動
[ スタート] メニューから起動
[ プログラム] →[ OpenRTM- ai st 1. 1] →[ C++] →[ component s]
→[ opencv- r t cs] →
[ Di r ect ShowCamComp. exe]
36. 2013.5.22 ROBOMEC2013 RTM講習会 36
ネームサービスに接続できない場合
ネットワークインターフェースが2つある場合
ネーム
サーバ
Addr ess A
Addr ess B
こちらのアドレスを基に
CORBA参照を生成
登録はアドレスB側の
ネームサーバ
登録はアドレスB側の
ネームサーバ
RTC- A
RTC- A (Addr ess B)RTC-A (Address B)
ってどこ?
RTC. conf について
RTC起動時の登録先Nami ngSer vi ceや、登録情報などについて記述
記述例:
cor ba. nameser ver s : l ocal host : 9876
nami ng. f or mat s : Si mpl eComponent / %n. r t c
cor ba. endpoi nt s : 192. 168. 0. 12:
37. 2013.5.22 ROBOMEC2013 RTM講習会 37
RTコンポーネントの動作
■各コンポーネント単位での動作変更 ■全コンポーネントの動作を一括変更
Act i vat e
アクション名
対象RTCを活性化する
説明
Deact i vat e 対象RTCを非活性化する
Exi t 対象RTCの実行主体( Execut i onCont ext ) を停止し,終了する
Reset 対象RTCをエラー状態からリセットする
St ar t 実行主体( Execut i onCont ext ) の動作を開始する
St op 実行主体( Execut i onCont ext ) の動作を停止する
※ポップアップメニュー中でのキーバインドを追加
※単独RTCのAct i vat e/ Deact i vat eについては,グローバルはショートカットキー定義
を追加
38. 2013.5.22 ROBOMEC2013 RTM講習会 38
接続プロファイル( Dat aPor t ) について
Name
項目
接続の名称
設定内容
Dat aType ポート間で送受信するデータの型.ex) Ti medOct et , Ti medShor t など
Dat aFl owType データの送信方法.ex) push, pul l など
Subscr i pt i onType
データ送信タイミング.送信方法がPushの場合有効.New, Per i odi c, Fl ushか
ら選択
I nt er f aceType データを送受信するポートの型.ex) cor ba_cdr など
Push Rat e データ送信周期( 単位:Hz) .Subscr i pt i onTypeがPer i odi cの場合のみ有効
Push Pol i cy
データ送信ポリシー.Subscr i pt i onTypeがNew,Per i odi cの場合のみ有効.
al l ,f i f o,ski p,newから選択
Ski p Count 送信データスキップ数.Push Pol i cyがSki pの場合のみ有効
Subscr i pt i onType
New :バッファ内に新規データが格納されたタイミングで送信
Per i odi c :一定周期で定期的にデータを送信
Fl ush :バッファを介さず即座に同期的に送信
Push Pol i cy
al l :バッファ内のデータを一括送信
f i f o :バッファ内のデータをFI FOで1個ずつ送信
ski p :バッファ内のデータを間引いて送信
new :バッファ内のデータの最新値を送信( 古い値は捨てられる)
39. 2013.5.22 ROBOMEC2013 RTM講習会 39
接続プロファイル( Dat aPor t ) について
Buf f er l engt h
項目
Buf f er f ul l pol i cy
Buf f er empt y pol i cy
Buf f er r ead t i meout
Buf f er wr i t e t i meout
バッファの大きさ
設定内容
データ書き込み時に,バッファフルだった場合の処理.
over wr i t e,do_not hi ng,bl ockから選択
データ読み出し時に,バッファが空だった場合の処理.
r eadback,do_not hi ng,bl ockから選択
データ読み出し時に,タイムアウトイベントを発生させるまでの時間( 単
位: 秒)
データ書き込み時に,タイムアウトイベントを発生させるまでの時間( 単位:
秒)
※Out Por t 側のバッファ,I nPor t 側のバッファそれぞれに設
定可能
※t i meout として「0. 0」を設定した場合は,タイムアウト
しない
Buf f er Pol i cy
over wr i t e : 上書き
r eadback : 最後の要素を再読み出し
bl ock : ブロック
do_not hi ng : なにもしない
※Buf f er Pol i cy = Bl ock+t i meout 時間の指定で,一定時間
後
読み出し/ 書き込み不可能な場合にタイムアウトを発生
させる
処理となる
40. 2013.5.22 ROBOMEC2013 RTM講習会 40
接続プロファイル( Ser vi cePor t ) について
Name
項目
インターフェース情報
接続の名称
設定内容
接続するインターフェースを設定.
接続対象のSer vi cePor t に複数のSer vi ceI nt er f aceが定義されていた場合,
どのインターフェースを実際に接続するかを指定
41. 2013.5.22 ROBOMEC2013 RTM講習会 41
画像処理関連コンポーネントの起動
画像処理用コンポーネントの起動
Fl i pコンポーネントの起動
先ほどコンパイルしたコンポーネントの起動
bi nar yにて指定したディレクトリ以下のSr c/ Debug内の
Fl i pComp. exeを起動
( [ プログラム] →[ OpenRTM- ai st 1. 1] →[ C++] →[ component s]
→[ opencv- r t cs] →
[ Fl i pComp. exe] )
[ スタート] メニューから起動
[ プログラム] →[ OpenRTM- ai st 1. 1] →[ C++] →[ component s]
48. 2013.5.22 ROBOMEC2013 RTM講習会 48
各種設定
Dat aPor t にて利用するデータ型の指定
→データ型を定義したI DLファイルが格納されているディレクトリ
を指定
①メニューから
「ウインドウ」-「設
定」
②「Rt cBui l der 」を
選択
③「新規」ボタンにて表示さ
れる
ディレクトリ選択ダイア
ログ
にて場所を指定
※独自に定義したデータ型を使用する場合のみ必要な設定
OpenRTM- ai st にて標準で用意されている型のみを使用する場合には設定不
要
・標準型の定義内容格納位置 : [ RTM_Root ] r t m/ i dl
→Basi cDat aType. i dl , Ext endedDat aTypes. i dl など
→デフォルト設定では,[ RTM_Root ] =C: / Pr ogr am Fi l es/ OpenRTM- ai st / 1. 1/
58. 2013.5.22 ROBOMEC2013 RTM講習会 58
コンフィギュレーション情報の設定方法
r t c. conf 内
コンフィギュレーションファイル内
[ カテゴリ名] .[ コンポーネント名] .conf i g_f i l e: [ コンフィギュレーショ
ンファイル名]
※例) exampl e. Conf i gSampl e. conf i g_f i l e: conf i gsampl e. conf
コンフィギュレーション情報
conf .[ コンフィグセット名] .[ コンフィグパラメータ名] : [ デ
フォルト値]
※例) conf . mode0. i nt _par am0: 123
Wi dget 情報
conf ._ _wi dget _ _.[ コンフィグパラメータ名] : [ Wi dget 名]
※例) conf . __wi dget __. st r _par am0: r adi o
制約情報
conf ._ _const r ai nt s _ _.[ コンフィグパラメータ名] : [ 制約情
報]
※例) conf . __const r ai nt s__. st r _par am0:
( bar , f oo, f oo, dar a)conf ._ _[ コンフィグセット名] .[ コンフィグパラメータ名] :
[ 制約情報]
※例) conf . __mode1. st r _par am0: ( bar 2, f oo2, dar a2)
RTCの利用者が設定
するのではな
く,RTC開発
者,RTC管理者が設
定することを想定
.
RTCBui l der を使用
することで設定可
能
59. 2013.5.22 ROBOMEC2013 RTM講習会 59
実行コンテキストビュー
RTコンポーネントが属する実行コンテキスト( EC) を一覧表
示
i d
属性名
ki nd
component st at e
st at e
owner
par t i ci pant s
ECのI D.オンラインの場合には,cont ext _handl e
を表示
説明
ECの種別( PERI ODI C/ EVENT_DRI VEN/ OTHER)
対象RTCの状態( ACTI VE/ I NACTI VE/ ERROR)
ECの状態( RUNNI NG/ STOPPI NG)
対象ECを所有しているオーナーRTCのインスタンス
名
対象ECに参加中のRTCの数
※対象ECの実行周期の変更,EC自身の動作開始/ 終了,新規RTCへのアタッチ
,アタッチ済みRTCのデタッチも可能
60. 2013.5.22 ROBOMEC2013 RTM講習会 60
マネージャビュー
RTコンポーネントの新規インスタンスの生成
RTC種別選択
コンフィギュレー
ション指定パラメー
タ設定
コンフィギュレーション指定パラ
メータ conf .[ Conf i gSet 名] .[ Conf i gパラメータ
名] =[ 設定値] の形式にてConf i gur at i onSet の値も
設定可能
62. 2013.5.22 ROBOMEC2013 RTM講習会 62
複合コンポーネント
複数のRTCをまとめて,1つのRTCとして扱うための仕組み
①複数RTCを選択している状態で右クリッ
ク
②複合コンポーネントのプロパティを設定
③複合コンポーネントを生成
Manager
項目
Name
Pat h
Por t
Type
複合コンポーネントを制御するマネージャを
選択
設定内容
複合コンポーネントのインスタンス名を入力
複合コンポーネントのパスを入力
外部に公開するポートを選択
複合コンポーネントの型を選択
※生成対象複合コンポーネント外部と接続されている
Por t は強制的に公開されます
複合コンポーネントの作成方法
63. 2013.5.22 ROBOMEC2013 RTM講習会 63
複合コンポーネント
複合コンポーネントのタイプについて
公開ポー
ト
非公開ポー
ト
※エディタ内に別RTCをDnDするこ
とで,
子コンポーネントの追加が可能
→追加したRTCのポートは
全て非公開に設定
※エディタ内のRTCを削除すること
で,
子コンポーネントの削除が可能
→削除されたRTCは,親エディ
Per i odi cECShar ed
タイプ名
実行主体であるExecut i onCont ext のみを共有
.
各子コンポーネントはそれぞれの状態を持つ
説明
Per i odi cSt at eShar ed
実行主体であるExecut i onCont ext と状態を共
有
Gr oupi ng 便宜的にツール上のみでグループ化
複合コンポーネントエディタ
複合コンポーネントをダブルクリックすることで表示
68. 2013.5.22 ROBOMEC2013 RTM講習会 68
設定画面
「RT Name Ser vi ce Vi ew」-「接続」 【接続周期】
ネームサービスビューが,ネームサーバに情報を問い合わせる周期
「RT Name Ser vi ce Vi ew」-「同期」 【タイムアウト待ち時間】
ネームサービスビューが,リモートオブジェクトのレスポンスを待つ時間
「RT Syst em Edi t or 」-「接続」 【接続周期】
システムエディタが,ネームサーバに情報を問い合わせる周期
【接続周期】をゼロに設定する
と
ネームサーバとの同期を行わな