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

Yuki Suga ysuga @ suou.waseda.jp
2009年 1月 14日 (水) 14:54:59 JST


早大の菅です.

まずは問題としているユースケースについてお話します.


私の所属している研究室のプロジェクトで,
USBでPC(Windows)と接続できるサーボコントローラボードを使用しています.
そこで,このボード用のRTコンポーネントのソフトウェアを開発しました.

ソフトウェアはバイナリ(Setup.exe)の形式で配布しており,
1枚ずつ認識して制御するものです.
普通の機械工学科の学部生にとって,
ソースコードに触れることのメリットは少ないと思われます.

しかし,このボードを1台のPCで複数枚利用する場合が発生したため,
同じコンポーネントをスタートメニューから2つ起動したところ,
ネームサーバー上の名前が更新されないという症状が見られました.

原因は,2度目に起動したコンポーネントが1度目のコンポーネントの名前を
上書きしてしまうというものでした.
(rtc.confでは,命名ルールは%h/%n.rtcとしています.)

現状ではプログラムを複数枚認識用に変更して対応しています.
(ソフトを起動すると,使用枚数の入力を求めたのち,
MyModuleInit関数内でManagerクラスの
createComponent関数を複数回実行します.)


この変更は容易でしたが,このような名前付けサービスに関する実装は
RTミドルウェアのコアな部分(RTM本体か,CORBAか)で実装されるべきと考えて
メールを差し上げました.

rtc.confを容易したり,コンソールからコマンドラインで起動したり,
そう難しいことではないですし,
おそらく卒業論文の今の時期はこういった場当たり的な方法で解決します.

しかし,今後,よりユーザや開発者の負担を軽減できる仕組みとして,
自動的な名前解決機能の実装が必要と考えています.




> 産総研 末廣です。
> 問題の所在が良く理解できないので少し教えてください。
>
> たとえば、rtc.confに
>  naming.formats: myComp1.rtc
> などと明示的に記述しておけば
>  Naming Serviceには myComp1.rtc として登録されますよね。
> (rtclinkでの表示名はインスタンス名でプログラムごとに固定ですが)
>
> それではだめなのでしょうか?
> 結局コンポーネントごとに自分の好きな名前を書き込んだ
> confファイルを用意しておくということですが。
>
> よろしくお願いします。


//////////////////////////////////////////////////
Yuki Suga
Intelligent Machine Laboratory, Waseda Univ.
#59-325 3-4-1 Okubo Shinjuku-ku Tokyo, Japan
E-mail: ysuga @ suou.waseda.jp
URL:   http://www.sugano.mech.waseda.ac.jp/~ysuga
URL:   http://www.ysuga.net
//////////////////////////////////////////////////

Takashi Suehiro さんは書きました:
> 清水様、菅様、
> 
> 産総研 末廣です。
> 問題の所在が良く理解できないので少し教えてください。
> 
> たとえば、rtc.confに
>  naming.formats: myComp1.rtc
> などと明示的に記述しておけば
>  Naming Serviceには myComp1.rtc として登録されますよね。
> (rtclinkでの表示名はインスタンス名でプログラムごとに固定ですが)
> 
> それではだめなのでしょうか?
> 結局コンポーネントごとに自分の好きな名前を書き込んだ
> confファイルを用意しておくということですが。
> 
> よろしくお願いします。




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