[openrtm-users 01168] Re: ポート名の設定について

Ando Noriaki n-ando @ aist.go.jp
2010年 3月 18日 (木) 17:46:30 JST


株式会社セック 大和田様

産総研 安藤です

複合コンポーネントでポートをaddPortで追加する際、
どちらの関数で行っていますでしょうか?

1) bool RTObject_impl::addPort(PortBase& port);
2) bool RTObject_impl::addPort(PortService_ptr port);

1) は内部的にポートを追加するための関数、
2) は外部のポートを自分のポートのように登録する関数
となっています。

複合コンポーネントを作成する際には、2) の addPort() を
使用することになると思うのですが、いかがでしょうか?
2) の関数の場合、ownerの設定は行わないので、ポート名は
書き換えられることはありませんが、1) の場合は、当該ポートを
自分のポートとして追加するためにポート名が書き換えられることになります。




> 株式会社セックの大和田です。
> ご回答ありがとうございます。
>
> この度、異なるミドルウェア上にある複数のコンポーネントを複合化して、
> OpenRTM-aistの一つのコンポーネントとして見せかけたいと考えております。
> (このコンポーネントを仮にブリッジRTCとします。)
> ブリッジRTCはRTシステムエディタ上で見たとき、
> 複合コンポーネントとして見せたいため、
> ブリッジRTCのポート名は下位コンポーネントのポート名と
> 同一にしたいと考えております。
>
> 以下の図のように、
> BridgeRTCのポートをComp1とComp2の持つ
> ポートと同一にしたい。
>
>            BridgeRTC
>            +------------+
>            |            ■Comp1.port
>            |            |
>            |            ■Comp2.port
>            +------------+
>                  |
> ------------------+-----------------
> |            |
>  +-------+            +-------+
>  |       |            |       |
>  |       ■Comp1.port |       ■Comp2.port
>  |       |            |       |
>  +-------+            +-------+
>   Comp1                Comp2
>
> ※ BridgeRTCはOpenRTM-aistとし、Comp1,2は異なるミドルウェアとする
>
> BridgeRTCに対して"Comp1.port"という名前でAddInPort/AddOutPortを行うと、
> "BridgeRTC.port"に変換されてしまうため、後から変更する方法を検討していました。
>
>
> 以上です、宜しくお願い致します。
>
>
> Ando Noriaki さんは書きました:
>> 大和田様
>>
>> 安藤です
>>
>> ポート名の制限についてはドキュメントに記述がありませんが、
>> 実際には "." を使用することができません。
>> 申し訳ありませんが、"." を使用しないようにお願いいたします。
>>
>>
>>> 産総研 安藤様
>>>
>>> お世話になっております。
>>> 株式会社セックの大和田と申します。
>>>
>>> ポート名に設定について2点質問があります。
>>>
>>> 1.
>>> AddInPort/AddOutPort でポートを追加する場合に、
>>> ポート名に"."を含んだ文字列を指定すると、
>>> 以下のように設定されてしまいます。
>>> 例)
>>> コンポーネント名 :sample
>>> 追加するポート名 :device.port
>>> 予想されるポート名:sample.device.port
>>> -------------------------------
>>> 設定されるポート名:sample.port
>>>
>>> 調査した結果、PortBase::setOwnerにて、
>>> ポート名を"."区切りにして、その末尾だけを
>>> 取得しているようなのですが、
>>> これにはどのような意図があるのでしょうか?
>>
>> 複合コンポーネントを作成する際に、複合コンポーネントが
>> 外部にexportするポートを名前で区別する必要があります。
>> そのために、現在ポート名は内部的に
>> <インスタンス名>.<ポート名>
>> として扱われています。
>>
>> そういうわけですので、ポート名には"."を使用しないようにお願いいたします。
>>
>>> 2.
>>> また、1に関連して、
>>> ポート名を PortBase::setNameを用いて変更することを
>>> 検討しているのですが、問題ないでしょうか?
>>
>> ポート名はコンストラクタで渡したものを変更しないようお願いします。
>> どうしても名前を変更する必要があるようでしたら、
>> どのような理由で変更しなければならないか教えていただけますか?
>> 後から変更する方法を提供することも検討したいと思います。
>>
>> 以上、よろしくお願いいたします。
>>
>>> 以上、2点、ご教示いただけると幸いです。
>>> 宜しくお願い致します。
>>>
>>> --
>>> 大和田資(Owada Tasuku)
>>> 株式会社セック(SEC Co.,LTD) 開発本部 第四開発部
>>> E-mail:oowada @ sec.co.jp
>>>
>>> 〒150-0031 渋谷区桜丘町22-14 NESビル
>>> Tel:03-5458-7743  Fax:03-5458-7726
>>>
>>> ======================================================================
>>> この電子メールの内容および添付されている情報は、機密情報であると同時に、
>>> 宛先として意図した特定の受信者のみに送信いたしております。当方の誤送信
>>> 等により、心当たりのない方が受信された場合は、大変お手数ですが、受信さ
>>> れましたメール内容は削除していただきますようお願いいたします。
>>> ======================================================================
>>>
>>>
>>>
>>
>>
>>
>
> --
> 大和田資(Owada Tasuku)
> 株式会社セック(SEC Co.,LTD) 開発本部 第四開発部
> E-mail:oowada @ sec.co.jp
>
> 〒150-0031 渋谷区桜丘町22-14 NESビル
> Tel:03-5458-7743  Fax:03-5458-7726
>
> ======================================================================
> この電子メールの内容および添付されている情報は、機密情報であると同時に、
> 宛先として意図した特定の受信者のみに送信いたしております。当方の誤送信
> 等により、心当たりのない方が受信された場合は、大変お手数ですが、受信さ
> れましたメール内容は削除していただきますようお願いいたします。
> ======================================================================
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒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 メーリングリストの案内