[openrtm-users 01073] Re: RT System Editorの排出するXMLファイル(RTSファイル?)の仕様について

ysuga ysuga @ pop07.odn.ne.jp
2010年 1月 14日 (木) 14:21:19 JST


セック小田桐様,ならびにOpenRTM-aist メーリングリストの皆様:
早大の菅です.お世話になっております.


RTS Profileの仕様についてです.

> これは、以前、[openrtm-users 00833]で私も
> 指摘させていただいています。

やはり既出でしたか…すみません.検索したつもりが…
やっぱり不便ですよね.

レスが付いていないのですが,
RTS Profileの件ですが,デイリービルドの最新版(rtmtools- 
r97-0912241200.zip)では改善されているようです.



独学なので言葉でうまく説明できないのですが,
たとえばサービスポートのコネクションに関するノードは,
以下のような構造になっています.
<rts:ServicePortConnectors>
   <rts:sourceServicePort>
     <rtsExt:Properties rtsExt:value="フルパス名" 
rtsExt:name="COMPONENT_PATH_ID"/>
   </rts:sourceServicePort>
   <rts:targetServicePort>
     <rtsExt:Properties rtsExt:value="フルパス名" 
rtsExt:name="COMPONENT_PATH_ID"/>
   </rts:targetServicePort>
</rts:ServicePortConnectors>


PropertiesのElementを見ればフルパス名が得られます.
今後はsource(target)ServicePortのアトリビュートになればシンプルかな,
と思います.



>    (ホスト名)_(PID)_(通常のRTCのインスタンス名).rtc

たしかに名前にPIDを使えば重ならなくなるのですが,
再現性が皆無になってしまうので使いづらい方法だと思いますがどうですか?
僕もNamingContextの部分にPIDを使っていましたが,
システムの自動再構成をするときに不便でした.


> インスタンス名を強制的に上書きできるようになります。
>    manager->createComponent("ConsoleIn?instance_name=Test");

この方法は美しいですね.
これ以外にRTObject_impl::setInstanceNameというメソッドがありますね.

こっちはC++版しか試していませんが,設定するとコンポーネントの
プロパティが変更になるだけで,CORBAネームサーバー上のBinding名が
変更になりませんね.

>安藤さん
内部で使っているのでしょうか?publicにする必要がないと思いますが.

これを使えばインスタンス名は簡単に変更が出来てしまうので,
識別子としての価値は皆無ですね.
GUIで表示するときの略称程度に思っています.


CORBAコンポーネントの名前はかなり重要ですが,
(本来はこれがInstanceNameと同じになるはず)
こっちはNamingContextを使えば重ならなく出来そうです.
もはやInstance名は必要無いと思います.


特にバージョン1.0からはManagerがかなり使えるようになっていますよね.
こういうツールを作りました.
RTC-Launcher : http://www.ysuga.net/robot/rtm/practical/rtclauncher.htm
特定のフォルダにあるDLLをすべて読みだして,
RTCを呼び出すことが出来るツールです.
Managerがパワフルなので簡単に作れます.
これならDefaultNumberingPolicyでも問題なく動きますよね?



あとはツール自体をインテリジェントにすれば良いと思います.
現在そういう開発を行っています.




/***************************************
  * 菅 佑樹
  * ysuga @ ysuga.net
  * http://www.ysuga.net
  * お知らせ:RTミドルウエア始めました
  ***************************************/

(2010/01/13 17:36), Yasuaki Odagiri wrote:
> 早稲田大学 菅様
>
> お世話になっております。
> 株式会社セックの小田桐です。
>
> ご指摘の問題には私もぶつかりました。
> RT System Editorが吐き出すXML(RTS Profile)のポート接続情報には、
> 対象ポートを持つRTCについて、インスタンス名とRTCの型情報しか
> 記述されていません。
> 現在のインスタンス名の命名規則では、別プロセスのRTC同士は
> インスタンス名が重複するため、問題が生じることがあります。
> これは、以前、[openrtm-users 00833]で私も
> 指摘させていただいています。
>
> 私もツールを作る上で困ったので、とりあえず現状では、
> 以下のようにRTCのインスタンス名にパスを付与することで
> 問題を回避しています。
>    (ホスト名)_(PID)_(通常のRTCのインスタンス名).rtc
>
> C++版以外はまだ見ていないのでわからないのですが、
> C++版の1.0.0系では、Manager::createComponent()を
> 以下のように呼び出せば、既存の命名規則を無視して、
> インスタンス名を強制的に上書きできるようになります。
>    manager->createComponent("ConsoleIn?instance_name=Test");
>
> ただし、RC1ではこの処理に少し問題があり、うまく動作しません。
> 一応、以下のようにRTObject_impl::initialize()を
> オーバライドすればほぼ正しく動くようになります。
>
> RTC::ReturnCode_t Sample::initialize()
>          throw(CORBA::SystemException)
> {
>    RTC::Properties dummy_prop;
>    setProperties(dummy_prop); // ★これを呼ぶとインスタンス名が正しく上書きされる
>    return DataFlowComponentBase::initialize();
> }
>
> ご参考になれば幸いです。
>
> 以上
>
> On Mon, 28 Dec 2009 20:17:23 +0900
> ysuga<ysuga @ pop07.odn.ne.jp>  wrote:
>
>> OpenRTM-aist メーリングリストの皆様:
>> お世話になっております.早大の菅です.
>>
>> さっそく本題です.
>> RT System Editorと連携できるツールを作っていますが,
>> System Editorの保存するXMLファイルの仕様が良くないです.
>>
>>
>> SystemEditorが吐き出すXMLファイルですが,
>> コネクションのデータ内にRTCのインスタンス名しか
>> 登録できていませんが,この仕様でよいのですか?
>> フルパスで指定できないと,重複の可能性がありますし,
>> 今作っているツールの用途だと不便になってしまいます.
>>
>> rts:sourceDataPortにrts:pathUriのアトリビュートを追加できませんか?
>> (若干ですが名前が誤解を生みそうですね.
>> rts:componentPathUriのほうがよさそうです.
>>
>>
>> こまかい話ですがご検討ください.
>>
>> ではでは
>>
>>
>> --
>> /***************************************
>>   * 菅 佑樹
>>   * ysuga @ ysuga.net
>>   * http://www.ysuga.net
>>   * お知らせ:RTミドルウエア始めました
>>   ***************************************/
>>
>
> -----------------------------------------------------------
>   株式会社セック 開発本部 第一開発部
>     〒150-0031 東京都渋谷区桜丘町 22-14 NESビル
>     TEL: 03-5458-7741    FAX : 03-5458-7726
>     URL: http://www.sec.co.jp
>
>   小田桐 康暁 (Yasuaki ODAGIRI)
>     E-Mail: odagiri @ sec.co.jp
> -----------------------------------------------------------
>
>>
> __________  ESET NOD32 Antivirus からの情報, ウイルス定義データベースのバージョン 4765 (20100112) __________
>
> このメッセージは ESET NOD32 Antivirus によって検査済みです。
>
> http://canon-its.jp
>
>
>
>



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