[openrtm-users 01218] Re: rtc_handle for OpenrtM-aist-1.0.0

Ando Noriaki n-ando @ aist.go.jp
2010年 5月 18日 (火) 09:37:32 JST


末廣様

安藤です

> (10/05/18 1:33), Ando Noriaki wrote:
>
>>> 私は,あるコンポーネントが複合コンポーネントか単独のコンポーネントかは
>>> 実装の問題と考えていました.
>>> すなわち,1つのコンポーネントの中で名前の衝突はないということです.
>>
>> すみません。実装の問題というのはどういう意味なのか教えていただけ
>> ますでしょうか?
>
> ポート名が現状のように,コンポート名.ポート名と名付けられる
> としても,複合コンポーネントの各ポートの名称は,
> 複合コンポーネント名.ポート名となるべきではないかということです.
>
> 内部コンポーネント名.ポート名では,複合コンポーネントの
> 内部構造が変わるたびにポート名が変わってしまいますよね.
> 困りませんか?

現在の仕様では、
・ポート名は<もともとのownerRTC>.<ポート名>
・ポート名は複合化されても変わらない(変更できない)
・複合コンポーネントの親は、ポートのリファレンスを保持するだけで
 実際の管理はもともとの親が行う

となっていますので、上記の問題は起こりません。
ただし、複合コンポーネントのポートが子コンポーネント名.ポート名
となるのは、少々すっきりしないのもわかります。
一方で、複合コンポーネントをどんなに階層化しても、
もともとそのポートが何のどういうポートであるか、名前から
ある程度分かるという利点もあります。

> また今の仕様だと,コンポート名というのがコンポーネントの
> インスタンス名になっているのでインスタンスごとにポート名が
> 違うというのもやりにくくはないですか?
> こちらに関しては,プログラム的にはインスタンス名を削る
> だけですむのでまだよいのですが.

確かに、この仕様のために、実装が若干ややこしくなっているのは
否めません。ただし、複合コンポーネントで、ポート名がぶつかるケース
に対処するうまい方法が思いつきませんでした。

rtc_handleで仮に複合コンポーネントの作成、分解や、ポートの
公開、非公開を制御するAPIを提供するとしたら、末廣さんなら
どのようにしますか?

前提として、以下の制約および可能性があります。

・ポート名は基本的には外部からは変更できない(内部からはできる)
 PortProfile は2つの方法で取得される
 1) RTObject::get_component_profile() から ComponentProfile::port_profiles
 2) PortService::get_port_profile() から PortProfile
 前者は複合RTCの親ですり替えることは可能だが、後者は難しいので
・ポートのownerも基本的には外部から変更できない(変更されることはない)
・ポート名は(OMG RTCの仕様上は)同一RTC内で一意でなければならない
  formal/08-04-04 p.65
  Semantics
  Ports owned by an RTC are distinguished by their names.
  Therefore, this name should be unique within the target RTC.
 とある。

これらの前提を考えると、現在の実装のようにポート名を最初から
できるだけ一意になるように付ける、というのが実装的にもシンプルで
ベターな選択であると私は考えています。

上記の制約の上で、ポート名を純粋にポート名だけとして、
かつ複合コンポーネント等にもうまく対処できる方法を思いついた方が
いらっしゃいましたら、教えていただけないでしょうか?

#最終手段としてOMGでRTFを立ち上げて仕様を変えてしまう
#というのもありかもしれませんが。。。。

ジェフさん

> 安藤様
>
> ジェフです。
>
> rtctreeにとって、ポートはいつもコンポーネントかコネクタから取ります。コ
> ンポーネントの場合、もうどのコンポーネントからか分かるから問題ありませ
> ん。コネクタの場合、rtctreeは自動的にポートのownerを探して、その情報もも
> らいます。

了解です。ツールの方でうまく対処していただければと思います。
Pythonなら正規表現も簡単に使えますし。。。。


-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org



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