[openrtm-users 02966] Re: ルータのLAN側にあるRTCの操作

Masayuki Shimizu tmsimiz @ ipc.shizuoka.ac.jp
2013年 11月 21日 (木) 21:35:55 JST


安藤様
菅様
末廣先生

清水です。

ありがとうございました。
安藤さんに教えて頂いた方法で上手くいきました。

CORBAの仕組みを分からずにマニュアル通りやっていましたが、
ようやくポイントが掴めてきました。

・CORBAエンドポイントはORB一つに対して一つのIPアドレス+ポートの
割り当てが必要で、それをcorba.endpoints のオプションで行う。
これはエンドポイントを実際に作成するため、既にそれが存在していればNG
(複数のORBで同じエンドポイントを共有できない)。
そのため、ORBの数だけエンドポイントが必要になる。
ルータ越えをする場合は、ORBの数だけ(RTCマネージャのプロセス数だけ)
ポートフォワードを設定する必要がある。
なお、一つのORBですべてのRTC, EC, Port等のCORBAオブジェクトを
扱うようにすれば(同一プロセス上ですべてのCORBAサーバントを動かせば)、
一つのポートフォワードでも実行可能。

・実際のエンドポイントに到達できるためには、それが同じサブネット上に
なければならない。しかし今回のようにルータでポートフォワードをしている場合は、
同一サブネット上に存在するポートフォワードのIPアドレス+ポートを
IIOPアドレスに加えてあげればよい。
この操作をするオプションが、corba.alternate_iiop_addresses である。

以上の理解で間違っていればご指摘ください。
この仕組みさえ分かっていれば、rtc.confの設定は容易にできますね。
また一つ勉強になりました。

これに関して問題があるとすればRTSEの反応の遅さですかね。
JavaのCORBA実装のせいのようですが、
あまりにも遅すぎて実用性に欠けるような気がします
(RTCをダイアログに表示させるのに1分ぐらい待たされるのはちょっとしんどい)。

RTCの操作には、omniORBで自作プログラムを組むか、
原さんが開発しているエディタ(CORBAはRtORBでしょうか)を
使った方がよさそうですね。

あと、VPNを使った方法もおもしろそうですね。
RTM専用のネットワークが作れればいいですよね。
ルータとかサブネットとか実際のネットワークを意識しなくてよくなりますし。

清水
--- On Thu, 2013/11/21, Ando Noriaki <n-ando @ aist.go.jp> wrote:

> 安藤です
> 
> すみません、corba.additional_ior_addresses は古いオプション名で
> corba.alternate_iiop_addresses が正しいです。Webページの方は直しました。
> 
> http://openrtm.org/openrtm/ja/content/rtcconf%E8%A8%AD%E5%AE%9A%E9%A0%85%E7%9B%AE%E4%B8%80%E8%A6%A7#toc23
> 
> この場合、ネームサーバがプライベート側にあるんですね。そうすると
> ネームサーバ用だけでなくRTC用にもポートフォワード設定をする必要があります。
> 
> 1. ポートフォワード設定: 29101→ 192.168.1.2:2810 を追加する
> 2. PC2のrtc.conf には以下のように記述
> 
> corba.nameservers: 192.168.1.2:2809
> corba.endpoints: 192.168.1.2:2910
> corba.alternate_iiop_addresses: 192.168.0.11:29101
> 
> これで、ネームサーバ上のRTCの参照には
> 
> - 192.168.1.2:2910
> - 192.168.0.11:29101
> 
> が含まれることになり、RTSEが 192.168.1.2:2910 にアクセスしてリーチしなかった
> 場合、つぎに 192.168.0.11:29101 にアクセスしに行き、結果としてルータの内側の
> RTCに到達できるはずです。
> 
> こちらで試していないので、うまくいくかどうかはわかりませんが、とりあえず
> これで試してみていただけないでしょうか。よろしくお願いいたします。
> 
> 
> 
> 
> 2013年11月20日 20:53 Masayuki Shimizu <tmsimiz @ ipc.shizuoka.ac.jp>:
> > 皆様
> >
> > 静岡大の清水です。
> > 標記の件で上手くいかずに困っています。
> > 方法をご存じの方がいれば教えて頂けると幸いです。
> >
> > (やりたいこと)
> > 192.168.0.0/24のネットワーク内にPC1とルータ1があり、
> > ルータ1のLAN側(192.168.1.0/24)にあるPC2でRTCが動作しているとします。
> > PC1で動くRTSEからPC2のRTCの操作(活性化など)をしたい場合、
> > どうすればよいのでしょうか。
> >
> > 少し複雑なので、IPアドレス等を整理します。
> > ・PC1: 192.168.0.10
> > ・ルータWAN側: 192.168.0.11
> > ・ルータLAN側: 192.168.1.1
> > ・PC2: 192.168.1.2
> > ・CORBAネームサーバ: 192.168.1.2:2809 (PC2の2809番ポート)
> > ・ルータのポートフォワード設定: 28091番ポート => 192.168.1.2:2809
> >
> > PC2上でRTCを起動させ、PC1のRTSEのネームサーバに
> > 192.168.0.11:28091を追加すると、そこにRTCのゾンビオブジェクトが見えます。
> > ただ、RTCとしては何も操作ができません。
> >
> > おそらく、何かのCORBAオブジェクトがPC2のネームサーバに登録されていることは
> > 分かるが、それがRTObjectとして機能していない状態だと思います。
> >
> > OpenRTMのHPの情報では、corba.alternate_iiop_addresses か何かを
> > rtc.confで設定しないといけないようですが、
> > そこに書いてあるやり方がよくわかりません。
> >
> > corba.alternate_iiop_addresses の項目なのに、設定例では、
> > corba.additional_ior_addresses になっていたり、
> > 上記の例のように、違う番号のポートに変換する場合はどうすべきかがわかりません。
> >
> > # OpenRTM-aistのソースをgrepしてみましたが、
> > # corba.additional_ior_addresses は指定しても意味がないように見えます。
> > # corba.alternate_iiop_addresses は実際にアドレスを追加する操作をしているので、
> > # こちらが正しいのはではないかと思いますが、どうなのでしょう。
> >
> > また、今回の場合、PC1のサブネット内(192.168.0.0/24)には
> > ネームサーバがないため、
> > LAN(192.168.1.0/24)内のネームサーバを使うしかありません。
> >
> > 上記の場合、rtc.confをどう書けばよいのでしょうか?
> > よろしくお願いいたします。
> >
> > 清水
> > --------------------
> > Masayuki Shimizu
> > Assistant Professor
> > Dept. of Mechanical Engineering, Shizuoka Univ.
> > 3-5-1, Johoku, Naka-ku, Hamamatsu 432-8561, JAPAN
> > TEL/FAX: +81-53-478-1061
> > Email: tmsimiz @ ipc.shizuoka.ac.jp
> > _______________________________________________
> > openrtm-users mailing list
> > openrtm-users @ openrtm.org
> > http://www.openrtm.org/mailman/listinfo/openrtm-users
> 


More information about the openrtm-users mailing list