[openrtm-users 01156] コンポーネントの実行周期に関して

ysuga ysuga @ pop07.odn.ne.jp
2010年 3月 11日 (木) 23:41:30 JST


OpenRTM-aist MLの皆さま:
早大の菅です.お世話になっております.
いつもお騒がせしてすみません.


今回はOpenRTM-aist1.0 C++リリース版の実行周期についてです.

RTCにPERIODICな実行コンテクストを設定した場合
(いまはこの場合がほぼすべてですが)
rtc.confの設定が強く反映されるべきだと思いますが,
自分の環境だとrtc.confの変更を行っても実行周期が変更されません.
(WinXP Pro, WinVista, Win7x64で確認)

現状での優先順位として,
rtc.conf < デフォルトの値
になっていますが,本来は
rtc.conf > コード内のデフォルトの値
でなくては,バイナリで配信する際に不便です.


C++版のコード状では,RTC::Manager::createComponentで
下記のようにデフォルトpropertyが空の場合に,
m_configで上書きするようになっていますが,
おそらくこの部分が良くないのではないかと思っています.

if (prop[inherit_prop[i]] == "")
  prop[inherit_prop[i]] = m_config[inherit_prop[i]];
}
(propはregisterFactoryメソッド時に渡した構造体の値,
m_configはrtc.confからの値)


本来のコードの流れとしては,
if (m_config[inherit_prop[i]] != "")
  prop[inherit_prop[i]] = m_config[inherit_prop[i]];
}
ではないでしょうか?
std::stringのoperator!=演算子をあまり使ったことがないので
よくわかりませんが,とりあえず狙い通りの動作はしました.


ほかに現状ではデフォルトの値をバイナリに含めない方法が有効ですが,
その場合は,rtc.confの設定が不足していた場合に
動作を保証できず危険だと思います.


それともほかの問題回避方法がありますか?
それともこういう仕様になったのでしょうか?
お教えいただけますでしょうか.

お忙しい中とは存じますがよろしくお願いします.

-- 
//////////////////////////////////////////////
 菅 佑樹 (すが ゆうき)
E-mail: ysuga @ ysuga.net
研究者関連: http://www.ysuga.net/research
ロボット関連: http://www.ysuga.net/robot
インラインスケート: http://www.ysuga.net/inline

おしらせ: RTミドルウエアやってます
 http://www.ysuga.net/robot/rtm
/////////////////////////////////////////////



openrtm-users メーリングリストの案内