Comments
Description
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