プロジェクト

全般

プロフィール

機能 #3403

④ 起動時にコンポーネントをアクティベーションする機能(同一プロセス)

n-ando8年以上前に追加. 6年以上前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2015/12/22
期日:
2016/03/25
進捗率:

100%

予定工数:
30.00時間

説明

コンポーネント起動時に同一プロセス内のコンポーネントをコンポーネントコンフィギュレーションファイルに従いアクティベーションする機能を実装すること。

test_Manager_new.py (7.37 KB) test_Manager_new.py miyamoto, 2016/01/14 20:11

関係しているリビジョン

リビジョン 635 (差分)
miyamoto約8年前に追加

[incompat,new_func,->RELENG_1_2] add initPreActivation() to Manager. refs #3403

リビジョン 647 (差分)
miyamoto約8年前に追加

[incompat,new_func,->RELENG_1_2] add initPreActivation() to Manager. refs #3403

履歴

#1 miyamoto8年以上前に更新

  • 期日2016/03/25 にセット
  • 担当者miyamoto にセット
  • 対象バージョンRELEASE_1_2_0 にセット
  • 進捗率0 から 90 に変更
  • 予定工数30.00時間 にセット

#2 miyamoto8年以上前に更新

実装

ManagerクラスにinitPreActivation関数を実装した。
rtc.confに以下のように記述する事でRTCのアクティブ化が行われる。

manager.components.preactivate RTC1,RTC2

initPreActivation関数では以下の手順でRTCをアクティブ化している。

","で文字列を分割
comps = str(self._config.getProperty("manager.components.preactivate")).split(",")

["RTC1","RTC2"]

compsのそれぞれの要素からコンポーネントのオブジェクトを取得
comp = self.getComponent(c)

RTCをアクティブ化
ret = OpenRTM_aist.CORBA_RTCUtil.activate(comp.getObjRef())

initPreActivation関数をactivateManager関数で呼び出すことでRTCがアクティブ化される。

テスト

添付したテスト用コードでテストを行った。

テスト用コードの動作は以下のようになっている。

setUp関数

マネージャ初期化の引数設定
sys.argv.extend(['-o', 'manager.components.preactivate:TestComp10'])

マネージャ初期化
self.manager = OpenRTM_aist.Manager.init(sys.argv)
self.manager.setModuleInitProc(MyModuleInit)
self.manager.activateManager()


TestComp10,TestComp20の2種類のRTCが起動する。

test_PreActivation関数

アクティブ化しているかを確認
state = OpenRTM_aist.is_in_active(self.comp1)
self.assertTrue(state)

#3 miyamoto約8年前に更新

  • 進捗率90 から 100 に変更

#4 n-ando6年以上前に更新

  • ステータス新規 から 終了 に変更

他の形式にエクスポート: Atom PDF