[openrtm-users 00807] createComponentでのRTCのインスタンス名上書きについて

2 posts / 0 new
Last post
root
Offline
Last seen: 2 days 12 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00807] createComponentでのRTCのインスタンス名上書きについて

OpenRTM-aist開発者各位

お世話になっております。
セック 小田桐です。

先日、安藤様から、1.0.0ではManager::createComponent()の引数で
RTCのプロパティを与えることができるため、NumberingPolicyに
関係なくインスタンス名を強制的に上書きできる、とお聞きしました。
そこで、早速試してみたですが、一部うまく動作していない箇所が
ございましたので、ご報告いたします。

SimpleIOのConsoleInComp.cppにて、以下のように、
Manager::createComponent()呼び出し時にインスタンス名を与えました。
manager->createComponent("ConsoleIn?instance_name=Test");

RTCを生成した後、Manager::configureComponent()内で、与えられた
プロパティをRTCに上書き(追加)することで、インスタンス名が
上書きされるようにしているのだと思います。

しかし、この後、RTObject_impl::getInstanceName()を呼び出すと、
上書きしたインスタンス名(Test)ではなく、FactoryCXX::create内で
設定されたインスタンス名(ConsoleIn0)が返ってきます。

原因は、Manager::configureComponent()で上書きされるのは
RTObject_implクラスのメンバ変数m_propertiesですが、
RTObject_impl::getInstanceName()で取得できるインスタンス名は
別なメンバ変数m_profileから取得していることです。
m_profileは、Manager::configureComponent()では上書きされません。

RTObject_impl::get_component_profile()では、m_propertiesから
インスタンス名を取得しているため正しく動作します。

RTObject_implクラスからm_profileを削除し、getInstanceName()や
getTypeName()などのメソッドも全てm_propertiesから値を
取得するようにしてはいかがでしょうか?

以上、ご検討をよろしくお願いいたします。

Undefined
root
Offline
Last seen: 2 days 12 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00816] createComponentでのRTCのインスタンス名上書きについて

小田桐さま

安藤です

すみません。getInstanceName関数のことは忘れておりました。
修正いたします。

> OpenRTM-aist開発者各位
>
> お世話になっております。
> セック 小田桐です。
>
> 先日、安藤様から、1.0.0ではManager::createComponent()の引数で
> RTCのプロパティを与えることができるため、NumberingPolicyに
> 関係なくインスタンス名を強制的に上書きできる、とお聞きしました。
> そこで、早速試してみたですが、一部うまく動作していない箇所が
> ございましたので、ご報告いたします。
>
> SimpleIOのConsoleInComp.cppにて、以下のように、
> Manager::createComponent()呼び出し時にインスタンス名を与えました。
> manager->createComponent("ConsoleIn?instance_name=Test");
>
> RTCを生成した後、Manager::configureComponent()内で、与えられた
> プロパティをRTCに上書き(追加)することで、インスタンス名が
> 上書きされるようにしているのだと思います。
>
> しかし、この後、RTObject_impl::getInstanceName()を呼び出すと、
> 上書きしたインスタンス名(Test)ではなく、FactoryCXX::create内で
> 設定されたインスタンス名(ConsoleIn0)が返ってきます。
>
> 原因は、Manager::configureComponent()で上書きされるのは
> RTObject_implクラスのメンバ変数m_propertiesですが、
> RTObject_impl::getInstanceName()で取得できるインスタンス名は
> 別なメンバ変数m_profileから取得していることです。
> m_profileは、Manager::configureComponent()では上書きされません。
>
> RTObject_impl::get_component_profile()では、m_propertiesから
> インスタンス名を取得しているため正しく動作します。
>
> RTObject_implクラスからm_profileを削除し、getInstanceName()や
> getTypeName()などのメソッドも全てm_propertiesから値を
> 取得するようにしてはいかがでしょうか?
>
> 以上、ご検討をよろしくお願いいたします。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.1.0-RELESE Download page
2.0.1-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK