[openrtm-users 01113] Re: Managerのnamingformatの不具合

Geoff Biggs geoffrey.biggs @ aist.go.jp
2010年 2月 15日 (月) 22:05:02 JST


安藤様、皆様

ジェフです。

rtcshellではマネージャはまだネームサーバだけでアクセスできます。ただいま以下の流れを試しました:

$ rtmgr manager.mgr load
/home/geoff/share/OpenRTM-aist/examples/rtcs/ConsoleIn.so ConsoleInInit
$ rtcat manager.mgr
Name: manager
Instance name: manager
Process ID: 29600
Naming format: %h.host_cxt/%n.mgr
Refstring path: /var/log/rtcmanager.ref
Components precreate: 
Modules:
  Load path: ./
  Config path: 
  Preload: 
  Init function prefix: 
  Init function suffix: 
  Download allowed: 
  Absolute path allowed: YES
OS:
  Version: #2 SMP PREEMPT Thu Feb 4 08:08:28 JST 2010
  Architecture: x86_64
  Release: 2.6.31-gentoo-r6-gb
  Host name: odyssey
  Name: Linux
Loaded modules:
  Filepath: /home/geoff/share/OpenRTM-aist/examples/rtcs/ConsoleIn.so
Loadable modules:
$ rtmgr manager.mgr create
ConsoleIn?manager=localhost:2811&instance_name=ConsoleIn1234
[1] 29698
$ 
[1]+  Done                    rtmgr manager.mgr create
ConsoleIn?manager=localhost:2811
$ rtls ../
odyssey.host_cxt/  ConsoleIn0.rtc

コンポーネントは作成していますが、名前はConsoleIn1234ではなくてConsoleIn0です。そして、netstatに見たら、ポート2811には何もありません。たぶんConsoleIn0はマスターマネージャに機動しています。

次のバージョンをちゃんと以下のように使えるようにしたいと思います。

ところで、githubからrtcshellの一番新しいバージョンをダウンロードしたら、rtdelでゾンビーを消すことができます。


On Mon, 15 Feb 2010 12:43 +0900, "Ando Noriaki" <n-ando @ aist.go.jp>
wrote:
> コンポーネント生成の流れは、以下のようになります。
> 
> 1) RTCが起動される可能性のあるノード上では、rtcd は -d オプション付きで起動されているものとします。
> #Linuxではれば、/etc/init.d 以下の起動スクリプトなどで起動されているイメージ。
> 
> 2) 何らかのツール、コマンド、アプリケーションが、あるノードに対してコンポーネントを作成したい場合
>  まず、そのノードのマスタマネージャのオブジェクトリファレンスを取得します。
>  それは、ネームサーバからでもいいですし、corbaloc:iiop:hostname:2810/manager という URL を
>   ORB::string_to_object() 関数を使ってダイレクトにアクセスしてもかまいません。
> 
> 3) 何らかのツール、コマンド、アプリケーションが、あるノード上で、コンポーネントを起動する場合、
>  そのノードのマスターマネージャに対して create_component() をコールします。
>  mgr->create_component("ConsoleIn?manager=localhost:2811&instance_name=ConsoleIn1234")
> 
> 4) manager=localhost:2811 はローカルホスト上の 2811版ポート上で ConsoleIn という
>  コンポーネントを起動しなさい、という意味なので、マスターマネージャは、スレーブマネージャを
>  2811ポート上で起動し、そのマネージャに対して、create_component("ConsoleIn?instance_name=ConsoleIn1234")
>   をコールします。
> 
> 5) スレーブマネージャは、ポート2811上で起動し、ConsoleInを一つ生成します。
>  このとき、インスタンス名はConsoleIn1234 に指定されているのでインスタンス名はこの名前になり、
>  ネームサーバ上に登録される名前も、この名前になります。
> 
> 6) さらに、同じプロセス上で、ConsoleIn を起動したければ、
>   mgr->create_component("ConsoleIn?manager=localhost:2811&instance_name=ConsoleIn1235")
>  とをマスタマネージャに対してコールすればよく、異なるプロセスで起動したい場合は、
>   mgr->create_component("ConsoleIn?manager=localhost:2812&instance_name=ConsoleIn1235")
>  等とすれば、別のプロセス上でConsoleInが起動します。
> 
> 7) なお、そのノード上で起動しているコンポーネントの参照は、マスターマネージャから、
>   mgr->get_components() によって取得できます。
>  スレーブ上で起動しているすべてのコンポーネントの参照をマスターが収集して返しています。
> 
> 
> 一応、1.0-RELEASEのrtcdはこのような使い方を意図して実装されています。
> まだ、ツールの方でも対応しきれていないので、この使い方が実際利用できるのには
> 少々時間がかかると思いますが、RTSystemEditorやrtcshellなどで、
> 簡単にできるようにしていきたいと思います。
> #rtcshellについては、ジェフさんよろしく。




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