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

2 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 4日 6時間 前
登録日: 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から値を
取得するようにしてはいかがでしょうか?

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

未定義
root
オフライン
Last seen: 4日 6時間 前
登録日: 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から値を
> 取得するようにしてはいかがでしょうか?
>
> 以上、ご検討をよろしくお願いいたします。

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2210
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク