[openrtm-users 01121] 1.0RELEASEのManagerの使い方についての質問

ysuga ysuga @ pop07.odn.ne.jp
2010年 2月 18日 (木) 18:16:30 JST


OpenRTM-aist MLの皆様:
早大の菅です.お世話になっております.

今回は新しいManagerの使い方についてお教え願いたく
ご連絡を差し上げました.


現在,私はRTミドルウエア上でMATLABのような科学技術計算を可能にする
RTC-scilabを開発しています.

http://www.ysuga.net/robot/rtm/rtc_scilab/

scilabはSimulinkのようなツールもあって非常に便利なのですが,
Managerの仕様が変わったので,RTC-scilabの実装が
少し困難になったのでお知恵をお借りしたいと思っています.


現状C++RC1対応版でのRTC-scilabは以下のように動作します.

まず,scilabを立ち上げ,scilab上で動くプログラムで,
C++版のDLLを読み込み,その中でManagerを立ち上げ,
あらかじめ実装した関数を呼び出すと,RTCが生成され,
ポートなども関数によって追加できる.

といった具合で動作します.


ただ,これでいくつか新しい実装だと上手く動かない問題があります.

1.スレーブのManagerを長時間待機出来ない点.
この場合,scilabからいつRTCが生成されるのか分からないので,
スレーブマネージャが落ちるとプログラム全体が落ちる設計はツライです.

2.マスターを複数立ち上げられない点
マスターがポートを占有してしまうので,
複数のマスターManagerを立ち上げられず,
複数のscilabプロセスを同一マシン上で立ち上げることが出来ません.
これは不便です.


以上の点に対して,こちらでの解決策として,

1.マスターManagerのポート番号を振り分ける
(これは有効なのか不明)
2.「scilabの1プロセスにつき,RTCは1つ」を守る
(先にRTCを立ち上げてしまうと,
スレーブManagerが落ちてもプロセスは落ちない?)

が考えられます.

Managerのみ立ち上げて,同一implementation_idのRTCを,
GUIの入力などによって複数個立ち上げるような
RTCの実装が,現状のManagerの実装方法では困難だと思います.

これについてはいかがお考えでしょうか?


そもそも邪道な開発かもしれませんが,
他のツールとの接続RTCなどを考えた場合,
この方法が最も早道だと思うのですが・・・


-- 
/***************************************
 * 菅 佑樹
 * ysuga @ ysuga.net
 * http://www.ysuga.net
 * お知らせ:RTミドルウエア始めました
 ***************************************/



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