宇田様
産総研 安藤です
お世話になっております。
OpenRTM-aist-0.2.0では、コンポーネントの名前は、
[モジュール名]+[インスタンス番号]
となります。インスタンス番号はマネージャがカウントしたものが
与えられますので、異なるマネージャでは、それぞれ0から始まってしまいます。
従いまして、当然異なるマシン上で生成されたコンポーネントでは、
それぞれ0から始まってしまいます。
コンポーネントはデフォルトではネームサーバ上に以下のフォーマットの名前として
登録されると思います。
[ホスト名]/[マネージャ名]/[カテゴリ名]/[モジュール名]/コンポーネント名
従いまして、ネームサーバ上では全てのコンポーネントは一意な名前として登録
されますので、これを利用すれば同一名称のコンポーネントを識別することが可能です。
ただし、エイリアスを使用してコンポーネントを登録している場合には、
名前の一意性を満たすのはユーザの責任となっております。
なお、0.4.0では名前を登録する方法はrtc.confで自由に変えられるようになっています。
> いつも御世話になります。宇田@NECシステムテクノロジーです
>
> 旧バージョンのお話しで恐縮ですが、OpenRTM-aist-0.2.0の振る舞い
> についてご教授ください。
>
> 下記のように、ローカルLANを介して複数のマシンがつながっており、
> 1台でネーミングサービスが稼動している状態で、他のマシン上で
> 「同じモジュール名で」createComponent()を行った場合、コンポー
> ネント番号は重複しないように調停されますでしょうか?
>
> それとも調停は行われず、各マシン毎に0から始まるコンポーネント
> 番号が割り振られますでしょうか?
>
>
> ネーミングサービス
> を起動
> ↓
> ┏━━━━━┓
> ┃ マシンA ┃
> ┗━━┳━━┛
> ┃
> ┃
> ┏━┻━┓
> ┃HUB┃
> ┗┳┳┳┛
> ┏━━━━━━┛┃┗━━━━━━┓
> ┃ ┃ ┃
> ┏━━┻━━┓ ┏━━┻━━┓ ┏━━┻━━┓
> ┃ マシンB ┃ ┃ マシンC ┃ ┃ マシンD ┃
> ┗━━━━━┛ ┗━━━━━┛ ┗━━━━━┛
> ↑ ↑ ↑
> │ │ │
> └───────┼───────┘
> │
> 各マシン上で同じ
> createComponent("SameModuleName", …);
> を実行(つまり同じプログラムを実行)
>
>
> またもし後者が正しい場合、同じコンポーネント名を持つ複数マシン
> 上のコンポーネントを識別する方法はございますでしょうか?
>
>
>
>
いつも御世話になります。宇田@NECシステムテクノロジーです
旧バージョンのお話しで恐縮ですが、OpenRTM-aist-0.2.0の振る舞い についてご教授ください。
下記のように、ローカルLANを介して複数のマシンがつながっており、 1台でネーミングサービスが稼動している状態で、他のマシン上で 「同じモジュール名で」createComponent()を行った場合、コンポー ネント番号は重複しないように調停されますでしょうか?
それとも調停は行われず、各マシン毎に0から始まるコンポーネント 番号が割り振られますでしょうか?
またもし後者が正しい場合、同じコンポーネント名を持つ複数マシン 上のコンポーネントを識別する方法はございますでしょうか?