[openrtm-users 02800] Re: RTCインスタンス名の動的変更について

Ando Noriaki n-ando @ aist.go.jp
2013年 5月 14日 (火) 09:49:01 JST


知久さま、皆様

安藤です

> 安藤様
>
> セック)知久です。
>
> 検討していたのは、下記ユースケースです。
> ・同じインタフェースの複数の機能を持ち、コンフィギュレーションの設定によ
> り機能を動的に切り替える
>
> この機能切り替え時に、機能と結びつくインタスタンス名を動的に変更しようと
> していました。
> ご指摘を踏まえ、機能選択の方法とタイミングを見直すことを検討しています。

なるほど、便利そうなコンポーネントですが、いわゆる何でもできるコンポーネント的
なもので、ちょっと危うい印象も受けますね。



それはさておき、現状OpenRTM-aistでは、Configurationの変更やポートの
接続、状態の遷移などを通知するためのフックが色々と用意されていますが、
残念ながら、コンポーネントのプロファイル(インスタンス名を含む)の変更を
通知する仕組みはいまのところ実装されていません。

1.1から追加されたSDO拡張モジュールのObserverには、ComponentProfile
を通知する仕組みらしきものを定義はしていますが、実装はありません。
http://svn.openrtm.org/OpenRTM-aist/branches/RELENG_1_1/OpenRTM-aist/src/ext/sdo/observer/ComponentObserver.idl


あと、標準仕様レベルの話ですと、OMGのRTC仕様では、インスタンス名を含む
ComponentProfileは以下のような説明になっていました。

Description
ComponentProfile represents the static state of an RTC that is
referred to here as the “target” RTC.

http://www.omg.org/spec/RTC/


"static state" とあるので、「普通は変わらない」プロファイルということなのだと思い
ますが、どの程度のスパンでstaticなのかは、明確には書いてません。
#仕様を作った時にはそこまで深く考えてませんでした。

RTCのライフサイクル>アプリケーションが同一状態にある間>RTCが同一状態にある間

など、スパンはいろいろ考えられると思います。実際、ComponentProfileのうち

- instance_name
- type_name
- description
- version
- vendor
- category

はライフサイクル中は static かな、と思いますが、

- port_profile: ポートの接続状態や動的追加により変わる
- parent (RTOBject): 複合コンポーネント化すると変わる
- properties: いろいろプロパティをいれると変わる

は変更される可能性は高いものと考えられます。なので、OpenRTM-aistとしても、
これらの変更に関するフックは今後実装するつもりです。

ただし、インスタンス名(およびtype_name等)を変更すると、
「じゃぁ、ネームサーバに登録されている名前も変更しなきゃいけないのでは?」
とか、「Aっていうコンポーネントからデータを受け取っていたと思っていたら、
いつのまにかBっていうコンポーネントからデータをもらっていた。何を言ってるのか(ry」
とか、いろいろ面倒なことが起こりそうなので、特にインスタンス名は静的な方がいいのでは?
と、は私自身は考えています。


ご意見有りましたらよろしくお願いします。


More information about the openrtm-users mailing list