haraisao / RtORB

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

OpenRTM-aist-C(RtORB)のRTCをRT System EditorでActivateされないことがある #4

Open moritaritsuko opened 9 years ago

moritaritsuko commented 9 years ago

#3 と関連があるのかもしれませんが、RT System Editorで、配置したRTコンポーネントがActivateされないことがあります。

環境  Windows7(64bit)上のVMware(Ubuntu12.04) 手順  1.ネームサーバを起動  2.RTコンポーネントを起動  3.RT System Editorで、RTコンポーネントを接続後、「All Activate」を実行   ⇒青(Deactivate)→緑(Activate)とならないRTコンポーネントが発生することがある    この時、単体で、「Activate」を実行しても、NG    RTコンポーネントを起動した際のコンソール画面には、特に何もエラー表示されていません。 ng_diagram

★どういったことが考えられるでしょうか?

haraisao commented 9 years ago

この状態ですが、青のコンポーネントは実際はどうなっているのでしょうか?Activeの状態であるならば、SystemEditorからのコンポーネントへのリクエストがうまく動作していません。動作している場合には、時間が経てば表示が変わると思います。

コンポーネントがDeactivateの状態のままである場合には、SystemEditorからのリクエストが正常に実行されていない(リクエストの通信がうまくいっていない)ということだと思います。

確認ですが、SimpleINXXはすべて同じプログラムでしょうか?

moritaritsuko commented 9 years ago

青のRTコンポーネントは、INACTIVE状態となっています。(Properties Viewでは) この状態で、単体で、「Activate」を実行しても、状況は変わりませんでした。

SampleIN**は、ベースは同じですが、送信データが異なる個別に作成したプログラムです。

haraisao commented 9 years ago

SampleN**ですが、送信データが違うということは、データポートの型が異なっているということでよいでしょうか? そうであれば、各コンポーネントのデータポートの型をお教えいただけないでしょうか。

よろしくお願いいたします。

moritaritsuko commented 9 years ago

SampleIN**コンポーネントですが、データポートの型は、全て「RTC_TimedString」で、 それぞれ異なる文字列を送信するようにしています。

先ほど、気付いたのですが、PSコマンドでプロセスの状態を表示した際、 「Ssl+」となっているRTコンポーネントは、Activateできましたが、 「Ss+」となっているRTコンポーネントは、Activateできませんでした。

haraisao commented 9 years ago

なるほど。Ssl+の方は、マルチスレッドで動作しているものですね。RTコンポーネントは、基本的にコンポーネントのスレッドと実行コンテキストのスレッドをもつようになっています。Ss+のRTコンポーネントには、実行コンテキストがないのではないでしょうか。RTSystemEditorで表示されている状態は、実行コンテキストの状態とおなじですので。 もう少し、コンポーネントの中身まで見てみないと、詳細なデバッグは、難しいので、動いているコンポーネントと動いていないコンポーネントのソースコードをお送りいただけないでしょうか。

よろしくお願いいたします。

moritaritsuko commented 9 years ago

下記のように、シェルを利用して全てのRTコンポーネントを起動していますが、 毎回、同じRTコンポーネントが、「Ss+」となるわけではないようです。  xterm -e ./SampleIN0Comp ./rtc0.conf &  xterm -e ./SampleIN1Comp ./rtc1.conf &   (省略)

moritaritsuko commented 9 years ago

現在使用しているソースコードをメールにて送付しましたので、確認をお願いします。

haraisao commented 9 years ago

ソースコードは、ほとんど同じでしたので、起動する、しないの問題は、コンポーネント側ではないようです。 昨日SystemEditorを実装された方にお聞きしたのですが、Java6でないと動作は保証できないということと SystemEditorからの命令のタイミングによって時間がかかっている場合もあるそうです。

Activateするプログラムを作成して確認しないと何とも言えない可能性があります。

moritaritsuko commented 9 years ago

回答ありがとうございます。 (RT System Editorを実装された方にも、確認して頂き、ありがとうございます。)

プロセスの状態が「Ss+」となるのは、RT System Editorとは関係ないのでは?と思いました。 (RT System Editorを起動していない状態で、RTコンポーネントを起動しても、 「Ss+」となるプロセスが発生するので)

シェルを利用しているせいかと思い、起動させる時間間隔をあけてみたり、 シェルを利用せず、それぞれ異なるターミナルから起動させてみたりしましたが、やはり、 ActivateされないRTコンポーネントが発生するようです。

同じ環境で、OpenRTM-aist-Pythonで作成していたRTコンポーネントでは、Activateされないといった 現象がおこらなかったのですが。