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

2 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 4日 5時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01121] 1.0RELEASEのManagerの使い方についての質問

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などを考えた場合,
この方法が最も早道だと思うのですが・・・

未定義
root
オフライン
Last seen: 4日 5時間 前
登録日: 2009-06-23 14:31
[openrtm-users 01123] 1.0RELEASEのManagerの使い方についての質問

菅様

安藤です

> OpenRTM-aist MLの皆様:
> 早大の菅です.お世話になっております.
>
> 今回は新しいManagerの使い方についてお教え願いたく
> ご連絡を差し上げました.
>
> 現在,私はRTミドルウエア上でMATLABのような科学技術計算を可能にする
> RTC-scilabを開発しています.
>
> http://www.ysuga.net/robot/rtm/rtc_scilab/
>
> scilabはSimulinkのようなツールもあって非常に便利なのですが,
> Managerの仕様が変わったので,RTC-scilabの実装が
> 少し困難になったのでお知恵をお借りしたいと思っています.

僕も、Simulink等とRTCをリンクできるものが
ほしいと思っていました。面白そうですね。

> 現状C++RC1対応版でのRTC-scilabは以下のように動作します.
>
> まず,scilabを立ち上げ,scilab上で動くプログラムで,
> C++版のDLLを読み込み,その中でManagerを立ち上げ,
> あらかじめ実装した関数を呼び出すと,RTCが生成され,
> ポートなども関数によって追加できる.
>
> といった具合で動作します.
>
>
> ただ,これでいくつか新しい実装だと上手く動かない問題があります.
>
> 1.スレーブのManagerを長時間待機出来ない点.
> この場合,scilabからいつRTCが生成されるのか分からないので,
> スレーブマネージャが落ちるとプログラム全体が落ちる設計はツライです.

rtc.conf に
manager.shutdown_auto: NO
と記述するか (詳細は rtc/rtc.conf.sample をご覧ください)
rtcd -o manager.shutdown_auto:NO
というオプション付きで起動するかすると
自動的に終了しなくなります。

ちなみに、Manager::init() に渡すコマンドラインオプションで、
-o の後に、rtc.conf に記述するオプションを与えることができます。

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

原則マスターは1個ですが、rtc.confの下記の記述

corba.master_manager: localhost:2810

を共有するマネージャはそれぞれマスターとスレーブの
関係を結ぶというだけですので、別のマスターマネージャとスレーブは

corba.master_manager: localhost:2811

というコンフィギュレーション値を共有すればいいのだと思います。

ただし、scilab上で生成するマネージャはマスターである必要は
無いように思いますが、どうでしょうか?

また、scilab側が、マスターマネージャが起動していることを
前提とすれば、それぞれのscilabで別々のスレーブを
マスター経由で起動すればいいだけのような気もします。

どうでしょうか?

>
>
> 以上の点に対して,こちらでの解決策として,
>
> 1.マスターManagerのポート番号を振り分ける
> (これは有効なのか不明)
> 2.「scilabの1プロセスにつき,RTCは1つ」を守る
> (先にRTCを立ち上げてしまうと,
> スレーブManagerが落ちてもプロセスは落ちない?)
>
> が考えられます.
>
> Managerのみ立ち上げて,同一implementation_idのRTCを,
> GUIの入力などによって複数個立ち上げるような
> RTCの実装が,現状のManagerの実装方法では困難だと思います.
>
> これについてはいかがお考えでしょうか?
>
>
> そもそも邪道な開発かもしれませんが,
> 他のツールとの接続RTCなどを考えた場合,
> この方法が最も早道だと思うのですが・・・
>
>

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2209
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク