haraisao / RtORB

Light-weight CORBA implementation with C-Language.
Other
2 stars 1 forks source link

OpenRTM-aist-C(RtORB)のRTCをRT System EditorでExitした時の動きについて #5

Open moritaritsuko opened 9 years ago

moritaritsuko commented 9 years ago

[#3]、[#4]と関係があるのかもしれませんが、RT System Editorで、起動したRTコンポーネントをExitするとエラーとなります。

環境  Windows7(64bit)上のVMware(Ubuntu12.04) 手順  1.ネームサーバを起動  2.RTコンポーネントを起動  3.RT System Editorで、RTコンポーネントを接続後、「All Activate」を実行  4.RT System Editorで、「All Deactivate」を実行   ⇒RTコンポーネントがDeactivateされる (緑(Activate)→青(Deactivate)に変わる)  5.RTコンポーネントを選択後、「Exit」を実行   ⇒下記のように、結果が異なることがある   ①    ・RT System EditorのSystem Diagramに、RTコンポーネントが表示されたままとなる    ・NameServerViewからは、削除されたり、されなかったり。    ・RTコンポーネントを起動した際のコンソール画面に、下記のメッセージが表示される(コンソール画面は残る)     [NameServer] Unbinding RTC to NameServer is done.     [Exit] is done.   ②    ・RT System Editorで、下記のエラーがポップアップ表示される     「The server did not return any response.」 (画面タイトルは、「Time out」)    ・RT System EditorのSystem Diagramから、RTコンポーネントが削除される    ・NameServerViewには、ゾンビが残る    ・RTコンポーネントを起動した際のコンソール画面は終了される

 ★Exit実行時の動きとして、上記は正しいのでしょうか。   OpenRTM-aist-Pythonで作成したRTコンポーネントの場合、下記の動きとなっているため、   そうなることを期待していたのですが。   ・RT System EditorのSystem Diagramから、RTコンポーネントが削除される   ・NameServerViewから削除される   ・RTコンポーネントを起動した際のコンソール画面は終了される

haraisao commented 9 years ago

基本的に、Exitの動作は、   ・RT System EditorのSystem Diagramから、RTコンポーネントが削除される   ・NameServerViewから削除される   ・RTコンポーネントを起動した際のコンソール画面は終了される

が正しい動作です。ご指摘いただいた状況が発生する原因としては、RtORBは、IIOP1.0までしか対応できていません。また、ORBの動作として、CORBAの仕様書に従って実装しています。また、通信部分で、タイミング等によっては、連続したパケットが欠落する場合(というより欠落させてしまう場合)がある可能性があります。 CORBA自体は、単にSocket通信を行うミドルウェアで、IIOPの実装の仕方で若干動作が変わる場合があります。特にRtORBでは、シングルスレッドで実装していたために、実装ミスの部分があるかもしれません。

正確にデバッグするには、通信経路上のパケットをモニタリングし、内部の処理でかけている部分がないかどうかを確認する必要もあります。

ちなみに、RtORBでは、onewayのインターフェースには対応出来ていません。