2007.9.14 OS: RTミドルウエアとオープンシステム 2I1 9:15 ~ 12:00 RTコンポーネントのリアルタイム化を 実現する実行コンテキストの拡張 ○安藤慶昭,清水昌幸,尹祐根,神徳徹雄 独立行政法人産業技術総合研究所 知能システム研究部門 概要 • • • • • • RTミドルウエア RTコンポーネントアーキテクチャ コアロジックと実行コンテキストの拡張 リアルタイム実行の実現 実験 まとめ 2 RTミドルウエアとRTコンポーネント コアロジック ・デバイス制御 ・制御アルゴリズム ・アプリケーション etc… RT コンポーネント フレームワーク RT コンポーネント ロジックを箱(フレームワーク)に入れたもの=RTコンポーネント(RTC) RTC RTC RTC RTC RTC RTC RTC RTC RTミドルウエア RTCの実行環境(OSのようなもの)=RTミドルウエア(RTM) ※RTCはネットワーク上に分散可能 3 RTコンポーネントアーキテクチャ • メタ情報取得 – プロファイル – どんなコンポーネントか? • アクティビティ – ユーザ定義ロジックの実行 • データポート SDO Interfaces – Data Centric な相互作用 • サービスポート RTC Interfaces RTCEx Interfaces RTComponent Service RTCS Consumer – request/response型相互作用 • RTComponent Consumer コンフィギュレーション Service Proxy – ユーザ定義の設定 provide Consumer Proxy Activity Service provide use Architecture of RT component State Machine OutPort0 InPort 0 Buffer InPort n put Buffer get Buffer OutPort n Buffer reply InPort put get, subscribe reply push OutPort アクティビティ • ロジックを実行する部分 • 共通の状態遷移を持つ アームコンポーネントの例 – – – – 初期化 非アクティブ(OFF状態) アクティブ状態(ON状態) エラー(エラー状態) • 各状態毎の処理 – 実行コンテキストが実行 • 実行コンテキスト – スレッドを論理的に表現した オブジェクト デバイス 初期化処 理 アーム 停止 Init Inactive Active アーム サーボON Error アーム 緊急停止 実行コンテキスト 5 RTCコアロジックの実行 ・実行コンテキスト(ExecutionContext) = 実行主体 ≒スレッド ・RTコンポーネント⇔実行コンテキスト:動的に関連付けられる RTミドルウエア 標準コンテキスト 実行コンテキストB モジュールの 動的ロード RTコンポーネント RTコンポーネント 実行コンテキストA コンテキストをアタッチ コンテキストをアタッチ 異なる実行コンテキストを関連付けることにより 動作形態を動的に変更できる 6 リアルタイム実行の実現 • 従来のExecutionContext を拡張 • ARTLinuxを用いてリアルタ イム化 • PeriodicExecutionContext を継承 • コアロジック実行関数 – svc()内でARTLinux APIを呼 び出す – ループ前:art_enter() – ループ中: art_wait() – ループ後:art_exit() int ArtExecutionContext::svc(void) { //リアルタイムスレッドの開始 art_enter(ART_PRIO_MAX-1, ART_TASK_PERIODIC, m_usec); do { // コンポーネントのAction の実行 std::for_each(m_comps.begin(), m_comps.end(), invoke_worker()); art_wait(); } while (m_running); art_exit(); return 0; } 7 実験 • リアルタイムExecutionContextを適用 – ハプティックインターフェース (1ms) – HRP2 (5ms) 設定周期[ms] 平均[ms] 最大/最小[ms] 標準偏差[us] 1.00 1.00 1.03/0.98 6.74 5.00 5.00 5.02/4.98 6.14 RTコンポーネントを変更することなくリアルタイム化を実現 実行コンテキストによるオーバーヘッド問題は顕在化せず 8 その他の応用 シミュレータでは、関連する全コン ポーネントの実行タイミングを制御す る必要がある • 外部トリガ実行コンテキスト – インターフェースを拡張 – tick() オペレーションをコール – ロジックが1tick分だけ進む シミュレータ時間 • ロジックの実行タイミングを 外部から制御 – シミュレータ – デバッガ などに利用可能 tick! 外部トリガ 実行コンテキスト tick! 拡張インターフェース OpenHRP3において利用 同一のコンポーネントを 実機・シミュレータ両方で利用可能 9 まとめ • RT コンポーネントのコアロジックの実行 – 実行コンテキスト • 実行コンテキストの拡張により様々な実行形態を実 現する方法を示した。 – リアルタイム実行 – 外部トリガによる実行 • 2つのデバイスに対してリアルタイム実行コンテキス トを適用 • 今後の予定 – コンポーネントの複合化 – マルチレート実行 10 お知らせ • RTミドルウエアWebページ – Googleで検索「RTミドルウエア」or「OpenRTM」 – メーリングリストにご参加ください(詳細はWebで) • RTミドルウエアコンテスト – 募集要項1Fにて配布中 • 経済産業省「次世代ロボット知能化技術開発プロジェ クト」採択 – – – – 19億×5年、RTミドルウエア:約3億×5年 テクニカルスタッフ募集中 ポスドク募集中:ソフトウエアが好きな人 職員募集中:来年度から • まずはポスドクへご応募ください 11 RTCコアロジックの実行 ・実行コンテキスト(ExecutionContext:EC) ≒スレッド ・RTコンポーネント⇔実行コンテキスト:動的に関連付けられる 異なる実行コンテキストを関連付けることにより 動作形態を動的に変更できる 13 その他の応用 • ロジックの実行タイミン グを外部から制御 シミュレータでは、関連する全コン ポーネントの実行タイミングを制御す る必要がある – シミュレータ – デバッガ • 外部トリガ実行コンテキ スト – IDLを拡張 – tick() オペレーションをコ ールすると、ロジックが 1tick分だけ進む – シミュレータ: OpenHRP3へ適用 同一のコンポーネントを 実機・シミュレータ両方で利用可能 14 アクティビティ • ロジックを実行する部分 • ≒スレッド • 共通の状態遷移を持つ – – – – 初期化 非アクティブ(OFF状態) アクティブ状態(ON状態) エラー(エラー状態) アームコンポーネントの例 デバイス 初期化処理 アーム 停止 Init Inactive センサRTC (センサからデータを読む) 制御RTC (制御出力計算) アクチュエータRTC (アクチュエータを駆動) Active アーム サーボON Error アーム 緊急停止 別々に作成された複数のコンポーネントを シーケンシャルにリアルタイム実行し 制御等を行うことも可能 →複合コンポーネント 実行コンテキスト 15
© Copyright 2024 ExpyDoc