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

Nobuyuki Kita n.kita @ aist.go.jp
2008年 6月 13日 (金) 15:25:13 JST


安藤様

 corba.endpoint を設定して試してみましたが、
うまくいきません。

 長くなりますが、実行している環境を記載します。

 ネットワークは2台のThinkpadの有線LANポートを
直接つないで、プライベイトLANを構成しています。以下のように
invent-v0を169.254.1.1
invent-v3を169.254.1.2
としています。

nkita @ invent-v0:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:1C:25:20:A5:86  
          inet addr:169.254.1.1  Bcast:169.254.255.255  Mask:255.255.0.0
          inet6 addr: fe80::21c:25ff:fe20:a586/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:33115 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22013 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:4272209 (4.0 MB)  TX bytes:3839823 (3.6 MB)
          Base address:0x1840 Memory:fe200000-fe220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:16680653 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16680653 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2118431932 (1.9 GB)  TX bytes:2118431932 (1.9 GB)

nkita @ Invent-v3:~$ ifconfig 
eth0      Link encap:Ethernet  HWaddr 00:1A:6B:38:EF:F3  
          inet addr:169.254.1.2  Bcast:169.254.255.255  Mask:255.255.0.0
          inet6 addr: fe80::21a:6bff:fe38:eff3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8300 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:879578 (858.9 KB)  TX bytes:1035295 (1011.0 KB)
          Base address:0x1840 Memory:fe200000-fe220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:61565 errors:0 dropped:0 overruns:0 frame:0
          TX packets:61565 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:11360142 (10.8 MB)  TX bytes:11360142 (10.8 MB)

 どちらもLinuxでディストリビューションはubuntu7.10です。

nkita @ invent-v0:~$ uname -a
Linux invent-v0 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux

nkita @ Invent-v3:~$ uname -a
Linux Invent-v3 2.6.22-14-generic #1 SMP Tue Feb 12 07:42:25 UTC 2008 i686 GNU/Linux

 ファイアウォール設定などはデフォルトのままです。ちなみに、
nkita @ Invent-v3:~$ sudo iptables --list
[sudo] password for nkita:
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination      

 この環境でinvent-v0で、omniNamesを2809で起動しておき、

rtc.conf1
corba.nameservers: 169.254.1.1:2809
naming.formats: %n.rtc

rtc.conf2
corba.nameservers:169.254.1.1:2809
corba.endpoint: 169.254.1.2:
naming.formats: %n.rtc

rtc.conf3
corba.nameservers: 169.254.1.1:2809
corba.endpoint: 169.254.1.2:2809
naming.formats: %n.rtc

として、

C++版のConsoleOut、Java版のConsoleOutをそれぞれinvnet-v3で起動して、
invent-v0上のRtcLinkにどうあらわれるか試しました。

C++版、つまり、
root @ Invent-v3:/usr/lib/OpenRTM-aist/0.4/examples$ ./ConsoleOut.sh 
の場合は、rtc.conf1、rtc.conf2、rtc.conf3のいずれでも正しく
RTCとして認識されましたが、

Java版、つまり、
root @ Invent-v3:/usr/local/src/OpenRTM-aist-0.4.2/examples/SimpleIO# ./ConsoleOutComp
の場合は、rtc.conf1、rtc.conf2、rtc.conf3のいずれでも
RTCとしては認識されず、ゴースト表示になりました。

 Java版で作ったRTCを分散実行に成功されている方は、
環境を教えていただけると助かります。当方でも、引き続き
調査をいたしますので、よろしくお願いいたします。

喜多 伸之

> 喜多様
> 
> 安藤です
> 
> > さっそくの回答ありがとうございます。
> > 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 メーリングリストの案内