[openrtm-users 03272] ネットワーク上のコンポーネントを交代で使いたい

8 個の投稿 / 0 new
最終投稿
masutani
オフライン
Last seen: 4年 11ヶ月 前
登録日: 2012-01-28 21:25
[openrtm-users 03272] ネットワーク上のコンポーネントを交代で使いたい

安藤様,MLの皆様,

大阪電通大の升谷です.
度々の質問で恐縮です(結構切羽詰っています).

大学の授業(学生実験)でネットワーク上のコンポーネントを,複数のPCのコ
ンポーネントから交代で接続して使うことをしようとしています.ところが,
コンポーネント間の接続がうまく行ったり行かなかったりで頭を悩ましていま
す.

まず,ファイアウォールの設定は全てのPCで無効にしています.ネットワーク
のインタフェースが一つだけになるようにもしました.

RT System Editorにおいて,リモートのコンポーネントとローカルのコンポー
ネントも表示できています.

ポート同士を接続しようとすると,Connector Profileで「OK」をクリックした
後,エラーが出ませんが,何も接続されないことがあります.

更新ボタンをクリックすると接続線が現れることもあります.

一方で,表示されている接続線が削除できないことがあります.

また,接続されているポートが緑色にならなかったり,接続されていないポー
トが緑色だったりします.

いつもうまくいかないのではなく,うまくいく場合もあります.再現の条件が
わからずに苦しんでいます.

どこかに蓄えられている情報が適切に更新されていないような感じですが,ど
のように対策すればいいかわかりません.

何を調べたらいいかなどの助言をいただけると幸いです.

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

未定義
Ando Noriaki
オフライン
Last seen: 1年 9ヶ月 前
登録日: 2011-09-04 17:20
[openrtm-users 03273] ネットワーク上のコンポーネントを交代で使いたい

升谷先生

安藤です

ネットワークの構成や、個々のPCのネットワーク設定などわからないので
何とも言えないのですがわかる範囲でお答えします。

> 安藤様,MLの皆様,
>
> 大阪電通大の升谷です.
> 度々の質問で恐縮です(結構切羽詰っています).
>
> 大学の授業(学生実験)でネットワーク上のコンポーネントを,複数のPCのコ
> ンポーネントから交代で接続して使うことをしようとしています.ところが,
> コンポーネント間の接続がうまく行ったり行かなかったりで頭を悩ましていま
> す.
>
> まず,ファイアウォールの設定は全てのPCで無効にしています.ネットワーク
> のインタフェースが一つだけになるようにもしました.

本当にファイアウォールがOFFになっているか今一度確認してみてください。
よくあるのが、WindowsのファイアウォールがOFFになっていても、
アンチウィルスソフトやセキュリティーソフトのインターネット保護機能の方が
さらにファイアウォールをかけているケースがあります。

GUI画面上でネットワークインターフェースが1つに見えていても、
実際には複数IFがあるケースもあります。怪しい場合は ipconfig /all で
再度確認の上、最終手段としては rtc.conf の corba.endpoints で
IPアドレスを強制的に指定してみてください。

> RT System Editorにおいて,リモートのコンポーネントとローカルのコンポー
> ネントも表示できています.

リモートのRTCが正常に見えていれば、ローカル側からはたいていの操作はOKです。
ゾンビになっている場合は、ネットワークの設定を見直してください。
ローカル側のRTCが見えている場合でも、先日のようなケースもありますので
注意が必要です。リモート側から必ずしも見えているとは限りませんので。

> ポート同士を接続しようとすると,Connector Profileで「OK」をクリックした
> 後,エラーが出ませんが,何も接続されないことがあります.

これは、一方のRTCからもう一方のRTCへ、ネットワーク的にunreachable
なケースが多いです。接続しに行こうとして接続先がないので、しばらくトライして
最終的にエラーになります。

もう一つ考えられるのは、ネットワークIFが複数あって、主IPが
他方からunreachableで、何度か接続をトライしてあきらめ、
主IP以外のアドレスにも接続に行くため時間がかかっているケースです。

> 更新ボタンをクリックすると接続線が現れることもあります.

後者の場合、こういうことが発生することもあります。

> 一方で,表示されている接続線が削除できないことがあります.

同様に、複数のIPアドレスがあり、主IPが他方からunreachableの場合
時間がかかって接続線が切断できないケースも考えられます。

それから、RTSystemEditor側の問題の場合も考えられます。
RTSysteMEditorでは、すべてンコンポーネントの状態を内部に持っていて
それを表示に反映させる、同期フレームワークというのを持っているのですが、
RTCへのアクセスでエラーが多発すると、同期フレームワークのスレッドが
落ちるか、停まるため、画面上のRTCや接続状態がうまく反映されない場合があります。

その場合は、RTSystemEditorは一旦落として再起動してみてください。

> また,接続されているポートが緑色にならなかったり,接続されていないポー
> トが緑色だったりします.

これも、同様に同期フレームワーク上の問題のケースがあります。

以上、よろしくお願いいたします。

> いつもうまくいかないのではなく,うまくいく場合もあります.再現の条件が
> わからずに苦しんでいます.
>
> どこかに蓄えられている情報が適切に更新されていないような感じですが,ど
> のように対策すればいいかわかりません.
>
> 何を調べたらいいかなどの助言をいただけると幸いです.
>
> よろしくお願いいたします.
>

masutani
オフライン
Last seen: 4年 11ヶ月 前
登録日: 2012-01-28 21:25
[openrtm-users 03274] ネットワーク上のコンポーネントを交代で使いたい

安藤様,

大阪電通大の升谷です.アドバイスをいただきありがとうございました.

直接の原因は,私のミスでした.RT System EditorでプロファイルのXMLファイ
ルを読み込まそうとしてたのですが,複数台のPCで同じ設定で試しているつも
りが,一部のPCで同名の異なる内容のファイルを読み込ませていました.それ
に気づかず,見当違いの推測をしていました.お騒がせして申し訳ありません
でした.

以上を調べている際に次のようなことがあり,惑わされました.

不適切な内容のXMLファイルを読み込ませた後に,RT System Editorの挙動がお
かしくなりました.詳しく追及していませんが,Exitをしてもコンポーネント
の表示が消えなかったり,ActivateやDeactivateをしてもコンポーネントの色
が変わらないことがありました.

コンポーネントを終了する際に,RT System EditorのExitやCtrl+cではなく,
ウィンドウの×ボタンを使うと,その後に接続線が消えなかったり,相手側の
ポートの色が変わらなかったり,また,相手のコンポーネントの動作が停止す
ることがありました.×ボタンを使うと,終了処理が他の場合とは異なるので
しょうね.当初は,Ctrl+cと違いがないつもりでいましたので,混乱しました.

自分のミスを棚に上げて言うのも何ですが,プロファイルを復元できない場合
のエラーメッセージがもっと詳しい方がいいと思います.「○○という名前の
ポートはない」とか「○○ポートのデータタイプが一致しない」とか.そのよ
うな詳しい情報を見る方法が用意されていますか?

Ando Noriaki
オフライン
Last seen: 1年 9ヶ月 前
登録日: 2011-09-04 17:20
[openrtm-users 03275] ネットワーク上のコンポーネントを交代で使いたい

升谷先生

安藤です

問題なかったとのこと、良かったです。
ご指摘はとりあえずチケットとして記録しました。
よろしくお願いいたします。

http://redmine.openrtm.org/issues/3559
http://redmine.openrtm.org/issues/3558

2016年4月19日 23:00 MASUTANI Yasuhiro :

> 安藤様,
>
> 大阪電通大の升谷です.アドバイスをいただきありがとうございました.
>
> 直接の原因は,私のミスでした.RT System EditorでプロファイルのXMLファイ
> ルを読み込まそうとしてたのですが,複数台のPCで同じ設定で試しているつも
> りが,一部のPCで同名の異なる内容のファイルを読み込ませていました.それ
> に気づかず,見当違いの推測をしていました.お騒がせして申し訳ありません
> でした.
>
> 以上を調べている際に次のようなことがあり,惑わされました.
>
> 不適切な内容のXMLファイルを読み込ませた後に,RT System Editorの挙動がお
> かしくなりました.詳しく追及していませんが,Exitをしてもコンポーネント
> の表示が消えなかったり,ActivateやDeactivateをしてもコンポーネントの色
> が変わらないことがありました.
>
> コンポーネントを終了する際に,RT System EditorのExitやCtrl+cではなく,
> ウィンドウの×ボタンを使うと,その後に接続線が消えなかったり,相手側の
> ポートの色が変わらなかったり,また,相手のコンポーネントの動作が停止す
> ることがありました.×ボタンを使うと,終了処理が他の場合とは異なるので
> しょうね.当初は,Ctrl+cと違いがないつもりでいましたので,混乱しました.
>
> 自分のミスを棚に上げて言うのも何ですが,プロファイルを復元できない場合
> のエラーメッセージがもっと詳しい方がいいと思います.「○○という名前の
> ポートはない」とか「○○ポートのデータタイプが一致しない」とか.そのよ
> うな詳しい情報を見る方法が用意されていますか?
>

masutani
オフライン
Last seen: 4年 11ヶ月 前
登録日: 2012-01-28 21:25
[openrtm-users 03276] ウィンドウを閉じた場合のコンポーネントの終了処理

安藤様,MLの皆様,

お騒がせしております.大阪電通大の升谷です.

昨日が最初の授業でした.事前に色々想定試験をし,相談に乗っていただいた
おかげで,何とか終わりました.

想定外の事態としては,学生が使っているのはPanasonicのCF-RZ4なのですが,
ハードウェア的な無線LANのスイッチをオフにしても,OS上では無線LANのイン
タフェースが活きているという問題が多発したことです.事後に私が同じ機種
で試しても,それが再現できないので困っています.これは,OpenRTMとは関
係のないことですね.

さて,

At Wed, 20 Apr 2016 08:52:01 +0900,
Ando Noriaki wrote:
> ご指摘はとりあえずチケットとして記録しました。
> よろしくお願いいたします。
>
> http://redmine.openrtm.org/issues/3559
> http://redmine.openrtm.org/issues/3558

前のメイルでは三つのことを書いたつもりです.

> > コンポーネントを終了する際に,RT System EditorのExitやCtrl+cではなく,
> > ウィンドウの×ボタンを使うと,その後に接続線が消えなかったり,相手側の
> > ポートの色が変わらなかったり,また,相手のコンポーネントの動作が停止す
> > ることがありました.×ボタンを使うと,終了処理が他の場合とは異なるので
> > しょうね.当初は,Ctrl+cと違いがないつもりでいましたので,混乱しました.

に関してはいかがでしょうか?

もう少し試したところ,この問題は,別のPC上のコンポーネントと接続してい
る場合にしか起きません.同じPC上のコンポーネントと接続している場合
は,×ボタンで終わっても,少しタイムラグはありますが,上述のような問題
は発生しません.

現象から推測しているのですが,

・RT System EditorでコンポーネントをExit.
・コンポーネントのウィンドウでCtrl+c.

・コンポーネントのウィンドウで×ボタンをクリック(ウィンドウを閉じる).

では,内部の終了処理が違うのではないでしょうか?

Windowsについて詳しく知らないのですが,少し調べてみたところ,×ボタンを
押すとWM_COLSEというメッセージが飛ぶそうで,これを捕まえないといけない
のですね.コンポーネントのライブラリの中では,それをやっているでしょう
か?

Ando Noriaki
オフライン
Last seen: 1年 9ヶ月 前
登録日: 2011-09-04 17:20
[openrtm-users 03279] ウィンドウを閉じた場合のコンポーネントの終了処理

升谷先生

安藤です

> 前のメイルでは三つのことを書いたつもりです.
>
> > > コンポーネントを終了する際に,RT System EditorのExitやCtrl+cではなく,
> > > ウィンドウの×ボタンを使うと,その後に接続線が消えなかったり,相手側の
> > > ポートの色が変わらなかったり,また,相手のコンポーネントの動作が停止す
> > > ることがありました.×ボタンを使うと,終了処理が他の場合とは異なるので
> > > しょうね.当初は,Ctrl+cと違いがないつもりでいましたので,混乱しました.
>
> に関してはいかがでしょうか?

×ボタンを押す、というのは非常事態時に強制終了するために行う操作でして
通常はやらないという想定になっております。Ctrl+Cで終了するようにしてください。

> もう少し試したところ,この問題は,別のPC上のコンポーネントと接続してい
> る場合にしか起きません.同じPC上のコンポーネントと接続している場合
> は,×ボタンで終わっても,少しタイムラグはありますが,上述のような問題
> は発生しません.

RTC自体は一応、相手のRTCが落ちた場合は接続などが残っていても
自動的にクリーンアップする仕組みが入っております。暫く待っていただければ
別PC上のRTCとの接続もおそらく消えるのではないかと思いますがいかがでしょうか?
相手側のIPがunreachableだと、その辺の処理がだいぶ時間がかかる可能性が
有りますが。また、RTSystemEditor側の同期フレームワーク自体にも
負担がかかっておかしくなる可能性もあります。

> 現象から推測しているのですが,

ご指摘の操作はそれぞれ内部でお行われる処理はだいぶ異なります。
それには、RTC≠プロセス(≒マネージャ)であることをまず念頭に置いてください。

> ・RT System EditorでコンポーネントをExit.

これは、RTCを終了する操作です。この操作ではRTCのみが終了します。
ただし、通常のRTCのスタンドアロンプログラムのプロセスでは、
RTCの終了後、他のRTCが全くない場合、マネージャも直ちに終了し
プロセスが終わります。

> ・コンポーネントのウィンドウでCtrl+c.

この場合は、プロセスに対してSIGINTシグナルが送られ、あらかじめ設定されたハンドラが
マネージャを終了させます。マネージャは終了する時に、諸々の修了処理を行う前に
そのマネージャ上で動いているRTCたちに対してexit()をコールして終了させ、終了処理実施後
最終的にメインスレッドを抜けてプロセスが終わります。

> と
>
> ・コンポーネントのウィンドウで×ボタンをクリック(ウィンドウを閉じる).

一方、コンソール画面の×ボタンは、動いているプロセスのメインスレッドを
問答無用で終了させます(と私は理解しています)。ご指摘のように、WM_CLOSEなど
をキャッチするハンドラを登録しておけば、何らかの処理を行うことができますが、
その時点ではすでにマネージャのスレッドやメインスレッドが強制的に終了しており、
一連の複雑な修了処理を行うことはもはやできないのではないかと思います。
したがって、ネームサーバ上には存ぼが残りますし、接続もそのままです。

×ボタンもそうですし、セグメンテーションフォルトやUNIX上での kill -9 コマンドなどで
強制終了した時も適切に終了処理ができればいいのですが、私が当時実装する時に
調べた限りでは、あまり有効な方法はなく、これらの部分は一般的なライブラリの
守備範囲外であるという結論に至りました。何か良い方法がございましたら
ご教示いただければ幸いです。

以上、よろしくお願いいたします。

> では,内部の終了処理が違うのではないでしょうか?
>
> Windowsについて詳しく知らないのですが,少し調べてみたところ,×ボタンを
> 押すとWM_COLSEというメッセージが飛ぶそうで,これを捕まえないといけない
> のですね.コンポーネントのライブラリの中では,それをやっているでしょう
> か?
>

Daiki Nakamura
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2014-09-19 19:18
[openrtm-users 03280] ウィンドウを閉じた場合のコンポーネントの終了処理

升谷様

電気通信大学の中村と申します.
Let's noteの無線切り替えスイッチは,
無線LAN,Bluetooth,WiMAX,ワイヤレスWANなど
電波を発する通信に関する切り替えスイッチだったと記憶しています.
物理スイッチをon/offした時に連動してon/offされる通信は
プリインストールされたソフトで設定できたと思います.

MASUTANI Yasuhiro
オフライン
Last seen: なし 前
登録日: 2016-04-22 09:00
[openrtm-users 03288] ウィンドウを閉じた場合のコンポーネントの終了処理

中村様,

At Fri, 22 Apr 2016 10:27:31 +0900,
"Daiki Nakamura" wrote:
>
> Let's noteの無線切り替えスイッチは,
> 無線LAN,Bluetooth,WiMAX,ワイヤレスWANなど
> 電波を発する通信に関する切り替えスイッチだったと記憶しています.
> 物理スイッチをon/offした時に連動してon/offされる通信は
> プリインストールされたソフトで設定できたと思います.

返信ありがとうございます.

Panasonicのフォルダの下にある,無線LAN関係のアプリケーションは,
・無線診断ユーティリティ
・無線ツールボックス
ですが,どちらもwirelessスイッチの設定はできそうにありません.

より具体的な情報がありましたら,教えていただけると幸いです.

Daiki Nakamura
オフライン
Last seen: 9年 3ヶ月 前
登録日: 2014-09-19 19:18
[openrtm-users 03290] ウィンドウを閉じた場合のコンポーネントの終了処理

升谷様

こちらのLet's noteでは「無線切り替えユーティリティ」というものがあり,
その設定で物理スイッチのon/offに連動する通信を指定できます.
手持ちの機種がCF-RZ4ではないため無用な情報でしたら申し訳ありません.

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク