操作
機能 #3653
完了[FSM4RTC] HRTMのラッパーライブラリを作成する。
開始日:
2016/10/07
期日:
進捗率:
100%
予定工数:
説明
HRTM付属のサンプルコンポーネントがコンパイルできるように、libHRTMに相当するライブラリをlibRTCで実装する。
ファイル
n-ando さんが約8年前に更新
Fsmが落ちる問題→2回初期化が行われている?
Oct 06 22:20:07.539 TRACE: manager: Manager::initORB() Oct 06 22:20:07.543 TRACE: manager: Manager::initNaming() Oct 06 22:20:07.557 TRACE: manager: Manager::initFactories() Oct 06 22:20:07.559 TRACE: manager: Manager::registerFactory(PeriodicECSharedComposite) Oct 06 22:20:07.559 TRACE: manager: Manager::initExecContext() Oct 06 22:20:07.559 TRACE: manager: Manager::initComposite() Oct 06 22:20:07.559 TRACE: manager: Manager::initManagerServant() 2回目 Oct 06 22:20:07.564 TRACE: manager: Manager::initORB() Oct 06 22:20:07.564 TRACE: manager: Manager::initNaming() Oct 06 22:20:07.568 TRACE: manager: Manager::initFactories() Oct 06 22:20:07.568 TRACE: manager: Manager::registerFactory(PeriodicECSharedComposite) Oct 06 22:20:07.568 TRACE: manager: Manager::initExecContext() Oct 06 22:20:07.568 TRACE: manager: Manager::initComposite() Oct 06 22:20:07.568 TRACE: manager: Manager::initManagerServant() ここまで Oct 06 22:20:07.569 TRACE: manager: Manager::initLocalService() Oct 06 22:20:07.569 TRACE: manager: Manager::activateManager() Oct 06 22:20:07.569 TRACE: manager: Manager::registerFactory(Fsm)
n-ando さんが約8年前に更新
- ステータス を 新規 から 担当 に変更
- 進捗率 を 30 から 60 に変更
ComponentManager 初期化処理の変更¶
ComponentManagerの初期化処理を変更。ComponentManagerの初期化関数 instance() 内で static 変数 RTC::Manager::manager に ComponentManager のsingleton インスタンスへのポインタを代入。RTC::Manager の二重初期化を回避したことで、ほぼFsmCompが動くようになった。
--- hrtm/component_manager.cpp (リビジョン 2768) +++ hrtm/component_manager.cpp (作業コピー) @@ -56,6 +56,7 @@ } ComponentManager& ComponentManager::instance(int argc, char** argv) { + // DCL for singleton if (!manager) { @@ -63,6 +64,8 @@ if (!manager) { manager = new ComponentManager(); + RTC::Manager::manager = manager; + printf("init ComponentManager: %x\n", manager); manager->initManager(argc, argv); manager->initLogger(); manager->initORB();
h.2 ログの比較
FsmComp と ConsoleOutComp のログの先頭部分を比較。
時間はdiffを取るときに邪魔なので削除済み。
コンポーネント名やコンフィグの違い以外は、処理順序に違いなしなので、Manager初期化問題は解決とする。
--- consout_clean.log 2016-10-13 22:14:44.358732000 +0900 +++ fsm_clean.log 2016-10-13 22:14:57.642732000 +0900 @@ -15,7 +15,7 @@ - instance_name: manager - name: manager - naming_formats: %h.host_cxt/%n.mgr - - pid: 27892 + - pid: 27776 - refstring_path: /var/log/rtcmanager.ref - modules - load_path: ./ @@ -56,7 +56,7 @@ - hostname: ubuntu1404 - logger - enable: YES - - file_name: ./rtc27892.log + - file_name: fsm.log - date_format: %b %d %H:%M:%S.%Q - log_level: PARANOID - stream_lock: NO @@ -68,7 +68,7 @@ - naming - enable: YES - type: corba - - formats: %h.host_cxt/%n.rtc + - formats: %n.rtc - update - enable: YES - interval: 10.0 @@ -86,7 +86,7 @@ - exec_cxt - periodic - type: PeriodicExecutionContext - - rate: 1000 + - rate: 1.0 - sync_transition: YES - transition_timeout: 0.5 - sdo @@ -95,13 +95,12 @@ - enabled_service: ALL - consumer - enabled_service: ALL -- example - - ConsoleOut - - config_file: consout.conf - - ConsoleIn - - config_file: consin.conf - - ConfigSample - - config_file: configsample.conf +- logging + - loggers + - root + - level: trace + - HRTM + - level: trace - config_file: ./rtc.conf ESC[0mESC[32mOct 13 DEBUG: manager: ESC[0mcorba.endpoint: @@ -142,11 +141,11 @@ ESC[0mESC[32mOct 13 DEBUG: manager: ESC[0m- enabled_services: ALL - modules: -ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::registerFactory(ConsoleOut) -ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::createComponent(ConsoleOut) +ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::registerFactory(Fsm) +ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::createComponent(Fsm) ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mRTC basic propfile vendor: ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mRTC basic propfile category: -ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mRTC basic propfile implementation_id: ConsoleOut +ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mRTC basic propfile implementation_id: Fsm ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mRTC basic propfile version: ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::getORB() ESC[0mESC[36mOct 13 TRACE: manager: ESC[0mManager::getPOA()
操作