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

13 posts / 0 new
Last post
root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00475] 別々のマシンで起動したJAVA版RTCをコネクトできない

関係各位、

 Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
どのようにすればよろしいでしょうか。

 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
(CORBAオブジェクトとしては認識されるが、RTCとしては
認識されない)になり、
マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
結局、コネクトできません。

 ネームサーバーの場所を変えてやってみても、症状は変わりません
でした。

 よろしくご教示のほどお願いいたします。

喜多 伸之

Undefined
root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00476] 別々のマシンで起動したJAVA版RTCをコネクトできない

喜多様

安藤です

考えられる原因は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 :
> 関係各位、
>
> Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
> 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
> どのようにすればよろしいでしょうか。
>
> 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
> 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
> (CORBAオブジェクトとしては認識されるが、RTCとしては
> 認識されない)になり、
> マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
> 結局、コネクトできません。
>
> ネームサーバーの場所を変えてやってみても、症状は変わりません
> でした。
>
> よろしくご教示のほどお願いいたします。
>
> 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00477] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

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

喜多 伸之

> 考えられる原因は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 :
> > 関係各位、
> >
> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
> > どのようにすればよろしいでしょうか。
> >
> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
> > (CORBAオブジェクトとしては認識されるが、RTCとしては
> > 認識されない)になり、
> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
> > 結局、コネクトできません。
> >
> > ネームサーバーの場所を変えてやってみても、症状は変わりません
> > でした。
> >
> > よろしくご教示のほどお願いいたします。
> >
> > 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00478] 別々のマシンで起動した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 :
>> > 関係各位、
>> >
>> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
>> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
>> > どのようにすればよろしいでしょうか。
>> >
>> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
>> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
>> > (CORBAオブジェクトとしては認識されるが、RTCとしては
>> > 認識されない)になり、
>> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
>> > 結局、コネクトできません。
>> >
>> > ネームサーバーの場所を変えてやってみても、症状は変わりません
>> > でした。
>> >
>> > よろしくご教示のほどお願いいたします。
>> >
>> > 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00479] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

 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 :
> >> > 関係各位、
> >> >
> >> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
> >> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
> >> > どのようにすればよろしいでしょうか。
> >> >
> >> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
> >> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
> >> > (CORBAオブジェクトとしては認識されるが、RTCとしては
> >> > 認識されない)になり、
> >> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
> >> > 結局、コネクトできません。
> >> >
> >> > ネームサーバーの場所を変えてやってみても、症状は変わりません
> >> > でした。
> >> >
> >> > よろしくご教示のほどお願いいたします。
> >> >
> >> > 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00480] 別々のマシンで起動したJAVA版RTCをコネクトできない

喜多様

安藤です

そちらの環境をメールから判断する限りは特に問題ないように思います。

念のためこちらでも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 :
> 安藤様
>
> 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 :
>> >> > 関係各位、
>> >> >
>> >> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
>> >> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
>> >> > どのようにすればよろしいでしょうか。
>> >> >
>> >> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
>> >> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
>> >> > (CORBAオブジェクトとしては認識されるが、RTCとしては
>> >> > 認識されない)になり、
>> >> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
>> >> > 結局、コネクトできません。
>> >> >
>> >> > ネームサーバーの場所を変えてやってみても、症状は変わりません
>> >> > でした。
>> >> >
>> >> > よろしくご教示のほどお願いいたします。
>> >> >
>> >> > 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00481] 別々のマシンで起動したJAVA版RTCをコネクトできない

喜多様

安藤です

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 :
> 喜多様
>
> 安藤です
>
> そちらの環境をメールから判断する限りは特に問題ないように思います。
>
> 念のためこちらでも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 :
>> 安藤様
>>
>> 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 :
>>> >> > 関係各位、
>>> >> >
>>> >> > Java版で作った2個のRTC(例えば、ConsoleInとConsoleOut)を、
>>> >> > 別々のマシンで起動し、RtcLinkでコネクトしたいのですが、
>>> >> > どのようにすればよろしいでしょうか。
>>> >> >
>>> >> > 例えば、マシンAでConsoleIn、マシンBでConsoleOutを
>>> >> > 起動します。マシンAで起動したRtcLinkだと、ConsoleOutがゴースト
>>> >> > (CORBAオブジェクトとしては認識されるが、RTCとしては
>>> >> > 認識されない)になり、
>>> >> > マシンBで起動したRtcLinkだと、ConsoleInがゴーストになり、
>>> >> > 結局、コネクトできません。
>>> >> >
>>> >> > ネームサーバーの場所を変えてやってみても、症状は変わりません
>>> >> > でした。
>>> >> >
>>> >> > よろしくご教示のほどお願いいたします。
>>> >> >
>>> >> > 喜多 伸之
>>> >> > -----------------------------------------------

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00482] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

 いろいろ調査していただきありがとうございます。

 産総研の堀さんより先に助言をいただいてまして
(堀さんありがとうございました。)、wiresharkなるツールで
パケットを調べてみました。

 C++版のConsoleOutを150.29.191.224なるIPのマシンで
起動したところ、添付ファイル(packet-C++.png)のように、
IIOP::Profile_hostが正しくセットされているようですが、
Java版のConsoleOutを起動したときには、
添付ファイル(packet-Java.png)のように、
IIOP::Profile_hostが127.0.1.1にセットされている
ようであることがわかりました。(さらに、
RtmNSHelper.pyで調べたほうがよいでしょうか。)

 127.0.1.1でぐぐったところ、
http://emasaka.blog65.fc2.com/blog-entry-220.html
がヒットしました。ubuntuの/etc/hostsは確かに、
127.0.0.1 localhost
127.0.1.1 invent-v3
となってました。これが原因かと喜んで、
127.0.0.1 localhost invent-v3
のように、同様にinvent-v0も修正して再起動して試しましたが、
がっくり、状況は変わりませんでした。

喜多 伸之

> 喜多様
>
> 安藤です
>
> Java版のOpenRTMのソースをちょっと見てみたのですが、
> corba.endpoint オプションがちゃんと実装されていないようです。
> ですので、Javaでは現在のところcorba.endpointオプションは使用できません。
> 申し訳ありません。
>
> corba.endpoint オプションが使えない場合でも、corba.argsオプションで、
>
> corba.args: -ORBInitialHost hostname -ORBInitialPort portnumber
>
> のように指定すれば、ホストアドレスとポート番号を指定できるはずなのですが、
> こちらも指定した通りORBが起動してくれていないようです。
>
> というわけで、Java版ではCORBAに希望のアドレスを使わせる方法が
> 今のところないようです。
>
>
> とりあえず、RtmNSHelper.py でRTCが使用しているアドレスとポートを
> 調べてみていただけないでしょうか?

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00483] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

RtmNSHelper.py の結果をお送りします。

nkita@invent-v0:~/INVENT$ ./RtmNSHelper.py localhost:2809
ConsoleOut0|rtc: !!python/tuple
- IOR:
- ['Type ID: "IDL:openrtm.aist.go.jp/RTC/DataFlowComponent:1.0"']
- ['Profiles:']
- [1. IIOP 1.2 127.0.0.1 44029 "....... .t..................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']
- ['']
- ['']
bname:
- !!python/object:CosNaming.NameComponent {id: ConsoleOut0, kind: rtc}
id: ConsoleOut0
kind: rtc
objref: !!python/object/new:omniORB.CORBA.Object {state: 'IOR:010000003100000049444c3a6f70656e72746d2e616973742e676f2e6a702f5254432f44617461466c6f77436f6d706f6e656e743a312e3000000000010000000000000082000000000102000000000a3132372e302e302e3100abfd00000031afabcb00000000208174938900000001000000000000000100000008526f6f74504f410000000008000000020000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002'}
- null

喜多 伸之

> 安藤様
>
>  いろいろ調査していただきありがとうございます。
>
>  産総研の堀さんより先に助言をいただいてまして
> (堀さんありがとうございました。)、wiresharkなるツールで
> パケットを調べてみました。
>
>  C++版のConsoleOutを150.29.191.224なるIPのマシンで
> 起動したところ、添付ファイル(packet-C++.png)のように、
> IIOP::Profile_hostが正しくセットされているようですが、
> Java版のConsoleOutを起動したときには、
> 添付ファイル(packet-Java.png)のように、
> IIOP::Profile_hostが127.0.1.1にセットされている
> ようであることがわかりました。(さらに、
> RtmNSHelper.pyで調べたほうがよいでしょうか。)
>
>  127.0.1.1でぐぐったところ、
> http://emasaka.blog65.fc2.com/blog-entry-220.html
> がヒットしました。ubuntuの/etc/hostsは確かに、
> 127.0.0.1 localhost
> 127.0.1.1 invent-v3
> となってました。これが原因かと喜んで、
> 127.0.0.1 localhost invent-v3
> のように、同様にinvent-v0も修正して再起動して試しましたが、
> がっくり、状況は変わりませんでした。
>
> 喜多 伸之
>
> > 喜多様
> >
> > 安藤です
> >
> > Java版のOpenRTMのソースをちょっと見てみたのですが、
> > corba.endpoint オプションがちゃんと実装されていないようです。
> > ですので、Javaでは現在のところcorba.endpointオプションは使用できません。
> > 申し訳ありません。
> >
> > corba.endpoint オプションが使えない場合でも、corba.argsオプションで、
> >
> > corba.args: -ORBInitialHost hostname -ORBInitialPort portnumber
> >
> > のように指定すれば、ホストアドレスとポート番号を指定できるはずなのですが、
> > こちらも指定した通りORBが起動してくれていないようです。
> >
> > というわけで、Java版ではCORBAに希望のアドレスを使わせる方法が
> > 今のところないようです。
> >
> >
> > とりあえず、RtmNSHelper.py でRTCが使用しているアドレスとポートを
> > 調べてみていただけないでしょうか?
>
>
>

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00484] 別々のマシンで起動したJAVA版RTCをコネクトできない

喜多様

安藤です

やはり、オブジェクトリファレンスに127.0.0.1がセットされていましたね。
/etc/hosts には

127.0.01 localhost

のように記述されていますよね。
これを

150.29.191.224 localhost

として、JavaのRTCを起動してみてください。
#邪道なやりかたですが。。。

2008/06/13 19:28 Nobuyuki Kita :
> 安藤様
>
> RtmNSHelper.py の結果をお送りします。
>
> nkita@invent-v0:~/INVENT$ ./RtmNSHelper.py localhost:2809
> ConsoleOut0|rtc: !!python/tuple
> - IOR:
> - ['Type ID: "IDL:openrtm.aist.go.jp/RTC/DataFlowComponent:1.0"']
> - ['Profiles:']
> - [1. IIOP 1.2 127.0.0.1 44029 "....... .t..................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']
> - ['']
> - ['']
> bname:
> - !!python/object:CosNaming.NameComponent {id: ConsoleOut0, kind: rtc}
> id: ConsoleOut0
> kind: rtc
> objref: !!python/object/new:omniORB.CORBA.Object {state: 'IOR:010000003100000049444c3a6f70656e72746d2e616973742e676f2e6a702f5254432f44617461466c6f77436f6d706f6e656e743a312e3000000000010000000000000082000000000102000000000a3132372e302e302e3100abfd00000031afabcb00000000208174938900000001000000000000000100000008526f6f74504f410000000008000000020000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002'}
> - null
>
> 喜多 伸之
>
>> 安藤様
>>
>> いろいろ調査していただきありがとうございます。
>>
>> 産総研の堀さんより先に助言をいただいてまして
>> (堀さんありがとうございました。)、wiresharkなるツールで
>> パケットを調べてみました。
>>
>> C++版のConsoleOutを150.29.191.224なるIPのマシンで
>> 起動したところ、添付ファイル(packet-C++.png)のように、
>> IIOP::Profile_hostが正しくセットされているようですが、
>> Java版のConsoleOutを起動したときには、
>> 添付ファイル(packet-Java.png)のように、
>> IIOP::Profile_hostが127.0.1.1にセットされている
>> ようであることがわかりました。(さらに、
>> RtmNSHelper.pyで調べたほうがよいでしょうか。)
>>
>> 127.0.1.1でぐぐったところ、
>> http://emasaka.blog65.fc2.com/blog-entry-220.html
>> がヒットしました。ubuntuの/etc/hostsは確かに、
>> 127.0.0.1 localhost
>> 127.0.1.1 invent-v3
>> となってました。これが原因かと喜んで、
>> 127.0.0.1 localhost invent-v3
>> のように、同様にinvent-v0も修正して再起動して試しましたが、
>> がっくり、状況は変わりませんでした。
>>
>> 喜多 伸之
>>
>> > 喜多様
>> >
>> > 安藤です
>> >
>> > Java版のOpenRTMのソースをちょっと見てみたのですが、
>> > corba.endpoint オプションがちゃんと実装されていないようです。
>> > ですので、Javaでは現在のところcorba.endpointオプションは使用できません。
>> > 申し訳ありません。
>> >
>> > corba.endpoint オプションが使えない場合でも、corba.argsオプションで、
>> >
>> > corba.args: -ORBInitialHost hostname -ORBInitialPort portnumber
>> >
>> > のように指定すれば、ホストアドレスとポート番号を指定できるはずなのですが、
>> > こちらも指定した通りORBが起動してくれていないようです。
>> >
>> > というわけで、Java版ではCORBAに希望のアドレスを使わせる方法が
>> > 今のところないようです。
>> >
>> >
>> > とりあえず、RtmNSHelper.py でRTCが使用しているアドレスとポートを
>> > 調べてみていただけないでしょうか?
>>
>>
>>
>
>
>
>
>
>

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00485] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

> やはり、オブジェクトリファレンスに127.0.0.1がセットされていましたね。
> /etc/hosts には
>
> 127.0.01 localhost
>
> のように記述されていますよね。
> これを
>
> 150.29.191.224 localhost
>
> として、JavaのRTCを起動してみてください。

成功しました。

> #邪道なやりかたですが。。。

endpointの設定ができるようになるまでは、これで
凌ぐことにいたします。(副作用が起こらなければ
いいですが、、、、、)

安藤様、堀様ありがとうございました。
みなさま、多くのメイルでお騒がせして、申し訳
ありませんでした。

喜多 伸之

>
> 2008/06/13 19:28 Nobuyuki Kita :
> > 安藤様
> >
> > RtmNSHelper.py の結果をお送りします。
> >
> > nkita@invent-v0:~/INVENT$ ./RtmNSHelper.py localhost:2809
> > ConsoleOut0|rtc: !!python/tuple
> > - IOR:
> > - ['Type ID: "IDL:openrtm.aist.go.jp/RTC/DataFlowComponent:1.0"']
> > - ['Profiles:']
> > - [1. IIOP 1.2 127.0.0.1 44029 "....... .t..................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']
> > - ['']
> > - ['']
> > bname:
> > - !!python/object:CosNaming.NameComponent {id: ConsoleOut0, kind: rtc}
> > id: ConsoleOut0
> > kind: rtc
> > objref: !!python/object/new:omniORB.CORBA.Object {state: 'IOR:010000003100000049444c3a6f70656e72746d2e616973742e676f2e6a702f5254432f44617461466c6f77436f6d706f6e656e743a312e3000000000010000000000000082000000000102000000000a3132372e302e302e3100abfd00000031afabcb00000000208174938900000001000000000000000100000008526f6f74504f410000000008000000020000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002'}
> > - null
> >
> > 喜多 伸之

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00486] 別々のマシンで起動したJAVA版RTCをコネクトできない

喜多様

安藤です

先日のエンドポイントの問題ですが、私の理解不足でORBのオプションを
間違えておりました。(テクノロジックアートの坂本さんのご指摘で分かりました。)

corba.args: -ORBServerHost -ORBServerPort

のように指定してみてください。
こちらでは、希望通りのアドレスとポート番号でORBを待ち受けさせることができました。
ちなみに、IPアドレスの部分に全く関係のないアドレスを指定することもできます。
その場合、オブジェクトリファレンスにそのアドレスがそのまま埋め込まれますので、
RtcLinkから見えないコンポーネントになってしまうのでご注意ください。

また、endpointオプションを修正したOpenRTMのjarファイルも添付いたします。
(拡張子をjarに戻してお使いください。)
これで試してみていただけますでしょうか?

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

> 安藤様
>
>> やはり、オブジェクトリファレンスに127.0.0.1がセットされていましたね。
>> /etc/hosts には
>>
>> 127.0.01 localhost
>>
>> のように記述されていますよね。
>> これを
>>
>> 150.29.191.224 localhost
>>
>> として、JavaのRTCを起動してみてください。
>
> 成功しました。
>
>> #邪道なやりかたですが。。。
>
> endpointの設定ができるようになるまでは、これで
> 凌ぐことにいたします。(副作用が起こらなければ
> いいですが、、、、、)
>
> 安藤様、堀様ありがとうございました。
> みなさま、多くのメイルでお騒がせして、申し訳
> ありませんでした。
>
> 喜多 伸之
>
>>
>> 2008/06/13 19:28 Nobuyuki Kita :
>> > 安藤様
>> >
>> > RtmNSHelper.py の結果をお送りします。
>> >
>> > nkita@invent-v0:~/INVENT$ ./RtmNSHelper.py localhost:2809
>> > ConsoleOut0|rtc: !!python/tuple
>> > - IOR:
>> > - ['Type ID: "IDL:openrtm.aist.go.jp/RTC/DataFlowComponent:1.0"']
>> > - ['Profiles:']
>> > - [1. IIOP 1.2 127.0.0.1 44029 "....... .t..................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']
>> > - ['']
>> > - ['']
>> > bname:
>> > - !!python/object:CosNaming.NameComponent {id: ConsoleOut0, kind: rtc}
>> > id: ConsoleOut0
>> > kind: rtc
>> > objref: !!python/object/new:omniORB.CORBA.Object {state: 'IOR:010000003100000049444c3a6f70656e72746d2e616973742e676f2e6a702f5254432f44617461466c6f77436f6d706f6e656e743a312e3000000000010000000000000082000000000102000000000a3132372e302e302e3100abfd00000031afabcb00000000208174938900000001000000000000000100000008526f6f74504f410000000008000000020000000014000000000000020000000100000020000000000001000100000002050100010001002000010109000000010001010000000026000000020002'}
>> > - null
>> >
>> > 喜多 伸之
>
>
>
>
>
>
>

root
Offline
Last seen: 1 day 11 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00487] 別々のマシンで起動したJAVA版RTCをコネクトできない

安藤様

 添付していただいたOpenRTMのjarファイルを使用して、
rtc.confファイル内の corba.endpoint 指定が有効に
働くことを確認しました。
ありがとうございました。

喜多 伸之

> 喜多様
>
> 安藤です
>
> 先日のエンドポイントの問題ですが、私の理解不足でORBのオプションを
> 間違えておりました。(テクノロジックアートの坂本さんのご指摘で分かりました。)
>
> corba.args: -ORBServerHost -ORBServerPort
>
> のように指定してみてください。
> こちらでは、希望通りのアドレスとポート番号でORBを待ち受けさせることができました。
> ちなみに、IPアドレスの部分に全く関係のないアドレスを指定することもできます。
> その場合、オブジェクトリファレンスにそのアドレスがそのまま埋め込まれますので、
> RtcLinkから見えないコンポーネントになってしまうのでご注意ください。
>
> また、endpointオプションを修正したOpenRTMのjarファイルも添付いたします。
> (拡張子をjarに戻してお使いください。)
> これで試してみていただけますでしょうか?
>
> 以上、よろしくお願いいたします。
n-ando@aist.go.jp, n-ando@ieee.org

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK