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

Ando Noriaki n-ando @ aist.go.jp
2008年 6月 13日 (金) 17:48:10 JST


喜多様

安藤です

Java版のOpenRTMのソースをちょっと見てみたのですが、
corba.endpoint オプションがちゃんと実装されていないようです。
ですので、Javaでは現在のところcorba.endpointオプションは使用できません。
申し訳ありません。

corba.endpoint オプションが使えない場合でも、corba.argsオプションで、

corba.args: -ORBInitialHost hostname -ORBInitialPort portnumber

のように指定すれば、ホストアドレスとポート番号を指定できるはずなのですが、
こちらも指定した通りORBが起動してくれていないようです。

というわけで、Java版ではCORBAに希望のアドレスを使わせる方法が
今のところないようです。


とりあえず、RtmNSHelper.py でRTCが使用しているアドレスとポートを
調べてみていただけないでしょうか?

2008/06/13 17:34 Ando Noriaki <n-ando @ aist.go.jp>:
> 喜多様
>
> 安藤です
>
> そちらの環境をメールから判断する限りは特に問題ないように思います。
>
> 念のためこちらでもJava版のコンポーネントをUbuntu710(ただしx86_64)で起動し、
> 別のマシン上のRtcLinkからの操作と、別のマシン上のコンポーネントとの接続
> ができることを確認しました。(別マシン=Windows)
>
> 原因がよくわからないので、添付のRtmNSHelper.py でネームサーバに
> 登録されているオブジェクトの情報を調べてみていただけないでしょうか?
> (起動にはomniORBpyとPyYAMLが必要)
>
> ./RtmNSHelper.py ネームサーバのアドレス
>
> で起動すると、
>
> - ConsoleIn0|rtc: !!python/tuple
>  - IOR:
>    - ['Type ID: "IDL:openrtm.aist.go.jp/RTC/DataFlowComponent:1.0"']
>    - ['Profiles:']
>    - ['1. IIOP 1.2 150.29.148.101 40447 ".......
> ..[9................RootPOA.............."']
>    - ['            TAG_CODE_SETS char native code set: ISO-8859-1']
>    - ['                          char conversion code set: UTF-8', '
> 0x00010020']
>    - ['                          wchar native code set: UTF-16']
>    - ['                          wchar conversion code set: 0x00010100']
>    - ['            ']
>    - ['            unknown tag(0x00000026) 0x0002']
>    - ['']
>    - ['']
>
> このような情報が表示されます。
> このConsoleIn0が150.29.148.101:40447上にあることがわかります。
>
> よろしくお願いいたします。
>
>
>
> 2008/06/13 15:25 Nobuyuki Kita <n.kita @ aist.go.jp>:
>> 安藤様
>>
>> 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
>>>
>>
>>
>>
>>
>>
>>
>
>
>
> --
> 安藤慶昭@独立行政法人産業技術総合研究所 研究員
>  知能システム研究部門 タスクインテリジェンス研究グループ
>  〒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 メーリングリストの案内