[openrtm-users 01479] Re: rtc_handle for OpenrtM-aist-1.0.0 (ほぼ完成か?)

原 功 isao-hara @ aist.go.jp
2010年 11月 11日 (木) 08:03:35 JST


安藤さん:

原です。
connect()関数ですが、私もソースコードを追って見ました。RtORBの接続不良の原因は、RtORB側にありましたが、
実装上少し問題も残っています。

On 2010/11/11, at 1:27, Ando Noriaki wrote:
>> 
>> だとすると、残っているメモリもあると思われます。
> 
> 1.0をリリースするときに行ったメモリリークテストでは、データポート
> サービスポートともにメモリリークは発見されていませんので、
> (仕様に従って呼び出している限りは)たぶん大丈夫だと思います。
この仕様に従っているというのが曲者です。仕様にしたがっているからと言ってメモリーリークがないわけでは
ありません。その実装によると思います。


> OMG RTCの仕様ではどういう接続がnormativeであるかといったことは
> 詳しくは規定されていませんが、PortProfile.ports に格納されているポートに
> 対してnotify_connectを次々呼んでConnectorProfileを伝搬させるというふうに書いてあります。
> 参照:OMG RTC formal/08-04-04 p.75
> http://www.omg.org/spec/RTC/1.0/

この伝播指せるというのは、私も分かっていましたが、その実装の問題です。
OpenRTM-aist では、notify_connect の中で、ConnectorProfileにしたがって、
publishInterfaces を実行したあとに、その他のポートに対して、notify_connectを呼び出して、
返事が帰ってくるのを待っています。
返事が来ら、そのあとに、subscribeInterfacesを実行するというのが大まかな流れですね。
この時、CORBAが他のCORBA Objectからの読み出しを直ちに実行することができるという
前提になっていますが、CORBAの仕様には、そこまで規定していません。(未規定であるということ)
そのため、ConnectorProfileによっては、デッドロックを引き起こすこともあります。
幸い、現在は、2つのポートの接続なので、それは置きませんが。

> もう少し詳細な仕様については以下のようになっています。
> http://www.openrtm.org/OpenRTM-aist/documents/current/cxx/classreference_ja/classRTC_1_1PortBase.html#a139d07d2e94f7e793aedf4aa24b92462
> 
ここに、”connect() および途中の notify_connect() が ConnectorProfile::{name, ports} を変更することはない。” と書いてありますが、
notify_connect()をカスケード呼び出しするときには、ConnectorProfile::{name, ports} が変更されて呼び出されます。(IORが追加されます)
ここが、私がはまったところです。

> InPortからOutPortへの接続とOutPortからInPortへの接続で振る舞いが
> 違うというのは、SystemEditor側でどういうConnectorProfileをどのポートに
> 与えるかに依存するので、両社で異なるConnectorProfileを作っていて、
> かつどちらのポートにそれを渡すかによって違ってきます。
そうですね。どちらを起点に呼び出しても、OpenRTM側でうまく処理することが前提になっています。
接続するときには、どちらが、InPortかOutPortかは、分かっているのですから、ConnectorProfileをツールがうまく作ればよい
ということになりませんか?
実際に、RtcHandleでは、同じIDを使わないようにするという対処をしているのですから。

>> 
>> できれば、オフィシャルでダウンロードできるのは、最新で安定している方がよいと思います。
>> ご検討下さい。
> 
> 了解しました。パッチなどはできるだけアップするようにしたいと思います。


パッチの件は、お願いいたします。

現在、RtORBでも、一応 OpenRTM-aistが動作していますが、OpenRTM-aistに対して修正をする必要があります。
OpenRTM-aist-1.0-RELEASEに対して修正したものが、現在アップされていますが、そのパッチの作成もお願い
できないでしょうか?


------------------------------------------------------------
産業技術総合研究所   知能システム研究部門 インタラクションモデリングG
主任研究員 原  功 <Isao-Hara @ aist.go.jp>
Isao HARA, Senior Researcher, ISRI, ,AIST,Japan
TEL: +81-29-861-5973       FAX: +81-29-862-6631









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