[openrtm-users 00478] Re: 別々のマシンで起動したJAVA版RTCをコネクトできない

Ando Noriaki n-ando @ aist.go.jp
2008年 6月 12日 (木) 18:41:43 JST


喜多様

安藤です

> さっそくの回答ありがとうございます。
> C++で書いたRTCの場合は問題ないのですが。
> ご回答のいずれかが原因であったとすると、C++の
> RTCでも問題は生じないでしょうか。

FWに関しては、OSレベルのことですので言語にかかわらず
こういった現象が発生する可能性があります。

CORBA の endpoint の問題は、CORBA の実装レベルの問題です。
omniORB はデフォルトでは他に NIC があるにも関わらず localhost を
endpoint にするということはないようです。
Java に関しては、明示的に指定しない場合 localhost もしくは 127.0.0.1 を
endpoint に設定された経験が(確かVineLinuxだったとおもうのですが)あります。

また、NIC が複数ある場合、endpoint を指定しなければ、どの NIC を
endpoint にするのかはそれぞれのCORBA次第です。

lo: 127.0.0.1
eth0: 192.168.0.10
eth1: 150.29.99.10
のようにインターフェースのアドレスが設定されている場合、
eth0 を endpoint にすべきか、eth1 を endpoint にすべきかは、
CORBA には判断できませんので、endpoint を明示的に与えてやるべきです。
また、環境や言語によっては endpoint として localhost を指定する CORBA も
ありますので、そういう場合もやはりendpoint を指定してやったほうが無難です。

そういうわけで、OpenRTMでは、corba.endpoint というオプションを用意しています。
詳細はソースの etc/rtc.conf.sample に以下のように書いていますが、
指定するときはアドレスとポートの区切りの「:」を忘れずに入れてください。
(たとえポートを明示的に指定しない場合でも「:」が必要です。)

#
# ORB endpoint
#
# If you have two or more network interfaces, ORB endpoint address and/or
# port have to be specified. If hostname or port number is abbreviated,
# default interface or port number is used. At least one colon ':'
# is needed when you specify this option.
#
# Examples:
#   corba.endpoint: myhost:      (use myhost and default port)
#   corba.endpoint: :9876        (use default addr and port 9876)
#   corba.endpoint: myhost:9876  (use myhost and port 9876)
#
corba.endpoint:



> 喜多 伸之
>
>> 考えられる原因は2つほどあります。
>>
>> 1.ファイヤウォールが有効になっている
>> ファイヤウォールが有効になっていると、コンポーネントを起動したノード
>> 以外で動いているRtcLinkからコンポーネントに接続できずにゴーストのように見えます。
>> CORBAの使用するポート番号を corba.endpoint オプションで指定して、
>> そのポートを開けてやれば見えるようにはなりますが、もしファイヤウォールがON
>> になっている場合はとりあえずOFFにしてみていただけますか?
>>
>> 2.CORBAのendpointがlocalhostになっている
>> ネームサーバなどに登録されるオブジェクトリファレンスは、そのオブジェクトが
>> 接続を待っているホスト名とポート番号が含まれています。
>> RTCがネームサーバにオブジェクトリファレンスを登録する際に、
>> ホスト名としてlocalhost あるいは 127.0.0.1 を登録したりすると、
>> そのホスト以外から見た場合、どこにあるのかわからなくなってしまいます。
>> (RtcLinkを起動したホストにオブジェクトを探しに行く。)
>> corba.endpoint オプションで外部から見えるアドレスを指定してみてください。
>>
>>
>> 2008/06/12 16:21 Nobuyuki Kita <n.kita @ aist.go.jp>:
>> > 関係各位、
>> >
>> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
>> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
>> > どのようにすればよろしいでしょうか。
>> >
>> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
>> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
>> > (CORBAオブジェクトとしては認識されるが、RTCとしては
>> > 認識されない)になり、
>> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
>> > 結局、コネクトできません。
>> >
>> > ネームサーバーの場所を変えてやってみても、症状は変わりません
>> > でした。
>> >
>> > よろしくご教示のほどお願いいたします。
>> >
>> > 喜多 伸之
>> > -----------------------------------------------
>> > 主任研究員 喜多伸之
>> > 独立行政法人 産業技術総合研究所 知能システム研究部門
>> > 自律行動制御研究グループ
>> > 〒305-8568 茨城県つくば市梅園1-1-1 つくば中央第2
>> > E-mail: n.kita @ aist.go.jp   http://www.is.aist.go.jp/nkita/
>> > TEL:029-861-5986  FAX:029-861-3443
>> >
>> >
>> >
>> >
>>
>>
>>
>> --
>> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>>  知能システム研究部門 タスクインテリジェンス研究グループ
>>  〒305-8568 茨城県つくば市梅園1-1-1 中央第2
>>  TEL: 029-861-5981 FAX: 029-861-5971
>>  n-ando @ aist.go.jp, n-ando @ ieee.org
>
>
>
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
 知能システム研究部門 タスクインテリジェンス研究グループ
 〒305-8568 茨城県つくば市梅園1-1-1 中央第2
 TEL: 029-861-5981 FAX: 029-861-5971
 n-ando @ aist.go.jp, n-ando @ ieee.org



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