[openrtm-users 00736] Re: コンポーネントの複数起動に関して

Yuki Suga ysuga @ suou.waseda.jp
2009年 1月 15日 (木) 00:03:06 JST


産総研 末廣様:
早稲田の菅です.

丁寧な返信,ありがとうございます.
せっかくなので,僕の考え方も述べさせてください.

> ただコンポーネントの命名規則はアプリケーションに
> 依存する部分が大きいように思います。
-- 中略
> このような名前付けサービスはRTミドルウェアのコアな部分ではなく
> アプリケーション用のツール、アプリケーション用のミドルウェアで
> 吸収したほうが良いのではないかと思います。

ミドルウェアが独自の名前規則を利用して,
自動的に連番を振らない理由も無いと思いますがどうでしょう.

アプリケーションごとにツールを作成すると,
いちいち労力を割かれますし,
連番が自動的に振られない理由が無いと思うのです.


現状考えられる基本ルールとして,
rtc.confに書かれたnaming.formatsの値の%nの部分には,
RTC::ManagerクラスのcreateComponentメソッドに渡した
文字列に数字のサフィックスが追加された文字列になる
と解釈しています.


これを,createComponentメソッド内
(おそらくはcreateComponent内で呼ばれるより下層のメソッド内)で,
rtc.confの命名規則にしたがって名前文字列を形成して,
ネームサーバーに登録する直前に,
同一の名前があるかどうかチェックを行って,
存在する場合は数字のサフィックスをインクリメントする
という規則を追加できないか,と考えています.

また,コンポーネント自身がネームサービス上で
どのような名前になっているかを取得できるインターフェース
も必要になると思っています.


この機能が入っていて,不便になる状況はありますでしょうか?
自分では特に思いつかないのですが…



時間があるときにOpenRTM-aistのソースコードとにらめっこしてみます.



> それよりは、その部分は既存のスクリプト言語にお任せするのが
良いと思います。

たしかに.
あとはRTC_LauncherなるものをjavaかPythonで作って,
システムにインストールされたRTコンポーネントをそこから起動することで,
名前付けのルールをLauncherで吸収する方法も考えました.
この方法でもやれそうですね.

Launcherからコンポーネントが実行されるたびに
新しいrtc.confを生成して,名前のサフィックス番号を変更できますよね.





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