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

Ando Noriaki n-ando @ aist.go.jp
2009年 6月 4日 (木) 10:28:45 JST


小田桐さま

安藤です

すみません。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から値を
> 取得するようにしてはいかがでしょうか?
>
> 以上、ご検討をよろしくお願いいたします。
>
> -----------------------------------------------------------
>  株式会社セック 開発本部 第一開発部
>   〒150-0031 東京都渋谷区桜丘町 22-14 NESビル
>   TEL: 03-5458-7741    FAX : 03-5458-7726
>   URL: http://www.sec.co.jp
>
>  小田桐 康暁 (Yasuaki ODAGIRI)
>   E-Mail: odagiri @ sec.co.jp
> -----------------------------------------------------------
>
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                  知能システム研究部門 統合知能研究グループ
                  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                  TEL: 029-861-5981 FAX: 029-862-6631
                  n-ando @ aist.go.jp, n-ando @ ieee.org



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