[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 メーリングリストの案内