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

5 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 3日 23時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01165] ポート名の設定について

産総研 安藤様

お世話になっております。
株式会社セックの大和田と申します。

ポート名に設定について2点質問があります。

1.
AddInPort/AddOutPort でポートを追加する場合に、
ポート名に"."を含んだ文字列を指定すると、
以下のように設定されてしまいます。
例)
コンポーネント名 :sample
追加するポート名 :device.port
予想されるポート名:sample.device.port
-------------------------------
設定されるポート名:sample.port

調査した結果、PortBase::setOwnerにて、
ポート名を"."区切りにして、その末尾だけを
取得しているようなのですが、
これにはどのような意図があるのでしょうか?

2.
また、1に関連して、
ポート名を PortBase::setNameを用いて変更することを
検討しているのですが、問題ないでしょうか?

以上、2点、ご教示いただけると幸いです。
宜しくお願い致します。

未定義
root
オフライン
Last seen: 3日 23時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01166] ポート名の設定について

大和田様

安藤です

ポート名の制限についてはドキュメントに記述がありませんが、
実際には "." を使用することができません。
申し訳ありませんが、"." を使用しないようにお願いいたします。

> 産総研 安藤様
>
> お世話になっております。
> 株式会社セックの大和田と申します。
>
> ポート名に設定について2点質問があります。
>
> 1.
> AddInPort/AddOutPort でポートを追加する場合に、
> ポート名に"."を含んだ文字列を指定すると、
> 以下のように設定されてしまいます。
> 例)
> コンポーネント名 :sample
> 追加するポート名 :device.port
> 予想されるポート名:sample.device.port
> -------------------------------
> 設定されるポート名:sample.port
>
> 調査した結果、PortBase::setOwnerにて、
> ポート名を"."区切りにして、その末尾だけを
> 取得しているようなのですが、
> これにはどのような意図があるのでしょうか?

複合コンポーネントを作成する際に、複合コンポーネントが
外部にexportするポートを名前で区別する必要があります。
そのために、現在ポート名は内部的に
<インスタンス名>.<ポート名>
として扱われています。

そういうわけですので、ポート名には"."を使用しないようにお願いいたします。

> 2.
> また、1に関連して、
> ポート名を PortBase::setNameを用いて変更することを
> 検討しているのですが、問題ないでしょうか?

ポート名はコンストラクタで渡したものを変更しないようお願いします。
どうしても名前を変更する必要があるようでしたら、
どのような理由で変更しなければならないか教えていただけますか?
後から変更する方法を提供することも検討したいと思います。

以上、よろしくお願いいたします。

> 以上、2点、ご教示いただけると幸いです。
> 宜しくお願い致します。
>

root
オフライン
Last seen: 3日 23時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01167] ポート名の設定について

安藤様

株式会社セックの大和田です。
ご回答ありがとうございます。

この度、異なるミドルウェア上にある複数のコンポーネントを複合化して、
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点、ご教示いただけると幸いです。
>> 宜しくお願い致します。
>>

root
オフライン
Last seen: 3日 23時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01168] ポート名の設定について

株式会社セック 大和田様

産総研 安藤です

複合コンポーネントでポートを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点、ご教示いただけると幸いです。
>>> 宜しくお願い致します。
>>>

root
オフライン
Last seen: 3日 23時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01169] ポート名の設定について

産総研 安藤様

株式会社セックの大和田です。

> 1) bool RTObject_impl::addPort(PortBase& port);
を使用してポートを追加しておりました。

> 2) bool RTObject_impl::addPort(PortService_ptr port);
については検討できておりませんでした。
ご指摘ありがとうございます。

しかし、
ブリッジRTCはOpenRTM-aistのコンポーネントですが、
複合化したいコンポーネントは別の異なるミドルウェア上の
コンポーネントですので、PortService_ptr が取得できません。

ブリッジRTCでは内部的にポートを作成し、
作成したポートを経由することで、複合化しているコンポーネントのポート
を利用できるような仕組みを検討しておりますので、
複合コンポーネントのように、下位コンポーネントのPortService_ptrを取得して
> 2) bool RTObject_impl::addPort(PortService_ptr port);
でポートを追加することができません。

ブリッジRTC内で作成(コンストラクト)したポートに対して、
1)ポート名変更
 void PortBase::setName(const char* name);
2)プロパティ初期化
 void InPortBase::init(coil::Properties& prop);
3)ポート登録
 bool RTObject_impl::addPort(PortService_ptr port);
とすることで、BridgeRTCに"Comp1.port"というポートを追加
することを検討しているのですが、コンストラクタで渡したポート名を
後から変更すると、具体的にどのような問題が生じますでしょうか?

以上です、宜しくお願い致します

Ando Noriaki さんは書きました:
> 株式会社セック 大和田様
>
> 産総研 安藤です
>
> 複合コンポーネントでポートを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点、ご教示いただけると幸いです。
>>>> 宜しくお願い致します。
>>>>

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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