[openrtm-users 00474] 同一PORT同士の多重接続について

1 post / 0 new
root
Offline
Last seen: 2 days 19 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00474] 同一PORT同士の多重接続について

産総研の中島です。

仕様通りかもしれませんが、報告まで。

(1)同一のデータPORT同士を多重に接続してしまった場合、
INPORT側で「isNew() -> read() -> データを取得」
という操作を行うと、データ取得時にエラーとなり、
onAbort(),onError()となる現象がありました。

(2) (1)において、InPORT側のRTC内でCallBackを入れると、
 エラーは起こらず、データの取得が可能である。

(3)同一のサービスPORT同士を多重に接続してしまった場合
 特に問題なく、そのまま処理は行われる。

--

(最近リリースされた、「OpenRTM-aist-0.4.2」と「OpenHRP-3.0.0-RC4」を使
 用して、SamplePDとVirtualRobotの間のデータポートをRtcLink上で接続した
 上で、GrxUIでシミュレーションをスタートすると、ロボット崩れ落ちる現象があり、
 この原因が、「OpenHRP-3.0.0-RC3」まではOpenHRP3と接続されるRTCも端末上
 でマニュアル起動が必要であったものが、「OpenHRP-3.0.0-RC4」では、別の
 手法で起動されるようになり不要となったにも関わらず誤ってRTCを起動して
 いたために、すでにリンクがはられたデータポート間に、さらにリンクをはっ
 てしまい、「2重接続」をしていたことが分かりました。

 操作時に注意すべきことで済むことですが、RtcLinkで同一PORT同士をいくつ
 でも接続可能であり、rtclinkファイルとしても保存可能であり、また、見た
 目には、複数接続されていることは分からない状態ではあります。 )

--

「OpenRTM-aist-0.4.2」と「OpenHRP-3.0.0-RC4」でのみ起きる現象かどうか確
かめるために、以下の環境で、RtcLink上で多重にPORTを接続して、調査した
結果を示します。

<環境>
OS: Ubuntu7.10
OpenRTM: 0.4.1 C++
OpenHRP3: RC3 C++
eclipse: 3.2
rtclink: 0.4.1

<調査内容>
 コンポーネントTestAとTestBにデータPORT,サービスPORTを用意し
 PORTを複数接続し、TestA --> TestBの方向にデータを送信する。

----
(1)同一のデータPORT同士を多重に接続した場合

(a)TestAdataPORT --> TestBdataPORT
connectProfile Name:[TestAdataPORT_TestBdataPORT]

(b)TestAdataPORT --> TestBdataPORT
connectProfile Name:[TestAdataPORT_TestBdataPORT]

(c)TestBdataPORT --> TestAdataPORT
connectProfile Name:[TestBdataPORT_TestAdataPORT]

(a)と(b)の組み合わせ、(a)と(c)の組み合わせで、
プロジェクトを保存した時の「〜〜.rtclink」ファイルの
XML記述は異なるが、双方とも同様にエラーとなりデータ取得不可。

(2)同一のデータPORT同士を多重に接続した場合(InPORT側にCallbackを実装)

(1)と同様の2種類の接続で確認したところ、callbackで呼ばれるた時に、
 受け取ったデータをデバッグしてみたところ、同じデータを2つ取得して
 はおらず、どちらかの接続からのデータのみ取得し、エラーは発生せず。

(Callbackを入れると、データが取れるようになる理由は不明。)

(3)同一のサービスPORT同士を多重に接続した場合
(InventGUI -> Obstacle start()を呼ぶ場合)

どのような方向の接続の仕方でも、幾つ同じ接続を行っても、
コンシューマからプロバイダを呼ぶのは1度のみ、エラーは発生せず。

以上です。

Undefined

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK