[openrtm-users 01527] usage of manager

9 posts / 0 new
Last post
root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01527] usage of manager

OpenRTM-aist開発者の皆様

産総研の松坂です。

たびたびすいませんが、質問させてください。

現在開発中のコンポーネントをrtcdに対応させようとしているのですが、以下をどうすれば
よいか、教えていただけますでしょうか?

・rtcd_pythonとrtcdの共存について
python版で書いたコンポーネントをrtcd_python経由でロードしたいのですが、rtcd_python
を単独で起動(-dオプション)した場合は、うまくいくものの、rtcdと共存させようとして、rtcdを
先立ち上げてrtcd_pythonを後からスレーブとして立ち上げるとうまくロードができません
(ロードコマンドがrtcdに投げられてしまうようでロードエラーが出ます)。
rtshellを使って以下のようなコマンドを投げています。
$ rtcd -d
$ rtcd_python
$ rtmgr --load /home/matsusaka/OpenHRIWeb/openhriweb/JabberRTC.py
--init-func JabberRTCInit
/localhost/matsusaka-macbookpro.host_cxt/manager.mgr
正しい方法がありましたら教えてください。

・スタンドアロンコンポーネントから起動されたマネージャについて
スタンドアロンコンポーネントの場合も、起動時にマネージャが生成されていると思います。
ただそのようにして起動されたマネージャはプロパティを見てもLoaded modulesやLoadable moduleは
空です。
ただ、現在起動しているスタンドアロンコンポーネントの種類を知っていれば以下のようなこともできると
思います。
$ rtmgr --create JabberRTC /localhost/matsusaka-macbookpro.host_cxt/manager.mgr
モジュール名だけではなく、このインスタンス生成可能なコンポーネント名も分かると便利かと思うのですが、
何か方法はありますでしょうか?

よろしくお願いします。

Undefined
root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01531] usage of manager

松坂様

お世話になっております。
栗原です。

ご連絡が大変遅くなり、申し訳ございません。

> ・rtcd_pythonとrtcdの共存について
こちらに関しましては、rtcd_pythonをスレーブとして起動した場合は、スレーブとして
起動されたマネージャが管理するRTCがないため、すぐに終了してしまいます。
よって、
1. マネージャが自動終了しないようなオプションを指定する
 2. ホスト名:ポート番号を指定してrtcd_pythonを起動する
 3. 2.で指定したホスト名:ポート番号で動作しているマネージャに対してloadを行う。
といった手順が必要になるかと思います。
マスターとして起動されたrtcdがロードするモジュールの拡張子をみて、対応するスレー
ブrtcd(rtcd_pythonやrtcd_javaなど)にて対してloadを行うようにはまだなっておりませ
ん。

> ・スタンドアロンコンポーネントから起動されたマネージャについて
こちらに関しましては、まだ確認はしておりませんが、Manager.idlにて定義されている
get_factory_profiles()をコールすれば、取得できるのではと思っております。
ただ、rtmgrコマンドが対応している必要がございますが。

rtmgrに関しましては、ジェフさん、回答をお願い致します。

上記の件に関しましては、こちらでも実現可能か確認し、再度ご連絡させて
頂きます。

以上、宜しくお願い致します。

On Wed, 5 Jan 2011 16:24:49 +0900
Yosuke Matsusaka wrote:

> OpenRTM-aist開発者の皆様
>
> 産総研の松坂です。
>
> たびたびすいませんが、質問させてください。
>
> 現在開発中のコンポーネントをrtcdに対応させようとしているのですが、以下をどうすれば
> よいか、教えていただけますでしょうか?
>
> ・rtcd_pythonとrtcdの共存について
> python版で書いたコンポーネントをrtcd_python経由でロードしたいのですが、rtcd_python
> を単独で起動(-dオプション)した場合は、うまくいくものの、rtcdと共存させようとして、rtcdを
> 先立ち上げてrtcd_pythonを後からスレーブとして立ち上げるとうまくロードができません
> (ロードコマンドがrtcdに投げられてしまうようでロードエラーが出ます)。
> rtshellを使って以下のようなコマンドを投げています。
> $ rtcd -d
> $ rtcd_python
> $ rtmgr --load /home/matsusaka/OpenHRIWeb/openhriweb/JabberRTC.py
> --init-func JabberRTCInit
> /localhost/matsusaka-macbookpro.host_cxt/manager.mgr
> 正しい方法がありましたら教えてください。
>
> ・スタンドアロンコンポーネントから起動されたマネージャについて
> スタンドアロンコンポーネントの場合も、起動時にマネージャが生成されていると思います。
> ただそのようにして起動されたマネージャはプロパティを見てもLoaded modulesやLoadable moduleは
> 空です。
> ただ、現在起動しているスタンドアロンコンポーネントの種類を知っていれば以下のようなこともできると
> 思います。
> $ rtmgr --create JabberRTC /localhost/matsusaka-macbookpro.host_cxt/manager.mgr
> モジュール名だけではなく、このインスタンス生成可能なコンポーネント名も分かると便利かと思うのですが、
> 何か方法はありますでしょうか?
>
> よろしくお願いします。
>

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01535] usage of manager

栗原さん

松坂です。

下記の情報、ありがとうございます。

2011/1/12 kurihara shinji :
>> ・rtcd_pythonとrtcdの共存について
> こちらに関しましては、rtcd_pythonをスレーブとして起動した場合は、スレーブとして
> 起動されたマネージャが管理するRTCがないため、すぐに終了してしまいます。
> よって、
> 1. マネージャが自動終了しないようなオプションを指定する
> 2. ホスト名:ポート番号を指定してrtcd_pythonを起動する
> 3. 2.で指定したホスト名:ポート番号で動作しているマネージャに対してloadを行う。
> といった手順が必要になるかと思います。

それぞれ以下のようなファイルを用意して

[rtcd.conf]
manager.name: manager
manager.is_master: YES
manager.corba_servant: YES
corba.master_manager: localhost:2810

[rtcd.conf]
manager.name: manager_python
manager.is_master: YES
manager.corba_servant: YES
corba.master_manager: localhost:2811

$ rtcd -f rtcd.conf
$ rtcd_python -f rtcd_python.conf

として起動したのですが、rtcd_python側で以下のようなエラーが出てしまいます。

2011-01-13 11:22:58,605 manager DEBUG Endpoint is : :2810
omniORB: Error: Unable to create an endpoint of this description: giop:tcp::2810

ここで

$ rtcd_python -d -p 2811

としても同様のエラーが出ます。
そもそもコマンドライン引数のパーシングがうまく行っていないように思うのですが、
確認していただけますでしょうか?

> マスターとして起動されたrtcdがロードするモジュールの拡張子をみて、対応するスレー
> ブrtcd(rtcd_pythonやrtcd_javaなど)にて対してloadを行うようにはまだなっておりませ
> ん。

了解しました。この部分に関しては次のバージョンを待ちます。

>> ・スタンドアロンコンポーネントから起動されたマネージャについて
> こちらに関しましては、まだ確認はしておりませんが、Manager.idlにて定義されている
> get_factory_profiles()をコールすれば、取得できるのではと思っております。
> ただ、rtmgrコマンドが対応している必要がございますが。
>
> rtmgrに関しましては、ジェフさん、回答をお願い致します。

これも了解しました。

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01537] usage of manager

松坂様

栗原です。

> [rtcd.conf]
> manager.name: manager_python
> manager.is_master: YES
> manager.corba_servant: YES
> corba.master_manager: localhost:2811
>
> $ rtcd -f rtcd.conf
> $ rtcd_python -f rtcd_python.conf
"-f"オプションにてrtcd_python.confを指定されてますが、rtcd_python.conf
の内容と上記のrtcd.confの内容は同じでしょうか?
rtcd_python.confにて、"corba.master_manger: localhost:2810"のような
記述はございませんでしょうか?

> ここで
>
> $ rtcd_python -d -p 2811
>
> としても同様のエラーが出ます。
rtcd_pythonは、デフォルトでカレントディレクトリのrtcd.confを
いうファイルを参照するようになってますので、"-f"にてconfファイルを指定
しない場合はrtcd.confの内容が読み込まれます。
(rtcd.pyを参照下さい。)
rtcd.confにて"corba.master_manger: localhost:2810"のような記述はございま
せんでしょうか?

こちらでも、上記のrtcd.confにて確認させて頂きましたが、ご報告頂きました
エラーは確認できませんでした。
rtcd.confとrtcd_python.conの内容をご確認頂けますでしょうか?

以上、宜しくお願い致します。

On Thu, 13 Jan 2011 11:36:27 +0900
Yosuke Matsusaka wrote:

> 栗原さん
>
> 松坂です。
>
> 下記の情報、ありがとうございます。
>
> 2011/1/12 kurihara shinji :
> >> ・rtcd_pythonとrtcdの共存について
> > こちらに関しましては、rtcd_pythonをスレーブとして起動した場合は、スレーブとして
> > 起動されたマネージャが管理するRTCがないため、すぐに終了してしまいます。
> > よって、
> > 1. マネージャが自動終了しないようなオプションを指定する
> > 2. ホスト名:ポート番号を指定してrtcd_pythonを起動する
> > 3. 2.で指定したホスト名:ポート番号で動作しているマネージャに対してloadを行う。
> > といった手順が必要になるかと思います。
>
> それぞれ以下のようなファイルを用意して
>
> [rtcd.conf]
> manager.name: manager
> manager.is_master: YES
> manager.corba_servant: YES
> corba.master_manager: localhost:2810
>
> [rtcd.conf]
> manager.name: manager_python
> manager.is_master: YES
> manager.corba_servant: YES
> corba.master_manager: localhost:2811
>
> $ rtcd -f rtcd.conf
> $ rtcd_python -f rtcd_python.conf
>
> として起動したのですが、rtcd_python側で以下のようなエラーが出てしまいます。
>
> 2011-01-13 11:22:58,605 manager DEBUG Endpoint is : :2810
> omniORB: Error: Unable to create an endpoint of this description: giop:tcp::2810
>
> ここで
>
> $ rtcd_python -d -p 2811
>
> としても同様のエラーが出ます。
> そもそもコマンドライン引数のパーシングがうまく行っていないように思うのですが、
> 確認していただけますでしょうか?
>
> > マスターとして起動されたrtcdがロードするモジュールの拡張子をみて、対応するスレー
> > ブrtcd(rtcd_pythonやrtcd_javaなど)にて対してloadを行うようにはまだなっておりませ
> > ん。
>
> 了解しました。この部分に関しては次のバージョンを待ちます。
>
> >> ・スタンドアロンコンポーネントから起動されたマネージャについて
> > こちらに関しましては、まだ確認はしておりませんが、Manager.idlにて定義されている
> > get_factory_profiles()をコールすれば、取得できるのではと思っております。
> > ただ、rtmgrコマンドが対応している必要がございますが。
> >
> > rtmgrに関しましては、ジェフさん、回答をお願い致します。
>
> これも了解しました。
>

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01538] usage of manager

松坂です。

2011/1/13 kurihara shinji :
> rtcd_pythonは、デフォルトでカレントディレクトリのrtcd.confを
> いうファイルを参照するようになってますので、"-f"にてconfファイルを指定
> しない場合はrtcd.confの内容が読み込まれます。
> (rtcd.pyを参照下さい。)

ソースを読ませるのではなく、マニュアルを書いてください。

> rtcd.confにて"corba.master_manger: localhost:2810"のような記述はございま
> せんでしょうか?

前回のメールでは、二番目のrtcd.confがrtcd_python.confの間違いでした。
添付ファイルのようなものを使っているのですが、、、。

-fで指定されるファイルより優先度が高いファイルがどこかにあるのでしょうか?

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01539] usage of manager

松坂様

栗原です。

> ソースを読ませるのではなく、マニュアルを書いてください。
失礼致しました。
マニュアルを書くように致します。

> -fで指定されるファイルより優先度が高いファイルがどこかにあるのでしょうか?
rtcd.pyのバグにより、rtcd.pyが存在するディレクトリにあるrtcd.confが優先度が
高くなっておりました。申し訳ございません。
お手数ですが、インストール済みのrtcd.pyを添付のrtcd.pyと置き換えてご確認頂けます
でしょうか。

宜しくお願い致します。

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01536] usage of manager

栗原様、松坂様

ジェフです。

On 12/01/11 23:19, kurihara shinji wrote:
>> ・スタンドアロンコンポーネントから起動されたマネージャについて
> こちらに関しましては、まだ確認はしておりませんが、Manager.idlにて定義されている
> get_factory_profiles()をコールすれば、取得できるのではと思っております。
> ただ、rtmgrコマンドが対応している必要がございますが。

今テストして、get_factory_profiles()の結果は以下の用です。

[{'category': 'composite.PeriodicECShared', 'vendor': 'jp.go.aist',
'description': 'PeriodicECSharedComposite', 'language': 'C++',
'conf.default.exported_ports': '', 'type_name':
'PeriodicECSharedComposite', 'exported_ports': '', 'lang_type':
'compile', 'version': '1.0', 'conf.default.members': '',
'activity_type': 'DataFlowComponent', 'max_instance': '0',
'implementation_id': 'PeriodicECSharedComposite'}, {'category':
'Sensor', 'kind': 'DataFlowComponent', 'vendor': 'Geoffrey Biggs, AIST',
'description': 'Hokuyo laser scanner component.', 'language': 'C++',
'conf.__widget__.port_opts': 'text', 'type_name': 'RTC_HokuyoAist',
'conf.default.port_opts': 'type=serial,device=/dev/ttyACM0,timeout=1',
'lang_type': 'compile', 'version': '1.0', 'activity_type': 'PERIODIC',
'max_instance': '999', 'implementation_id': 'RTC_HokuyoAist'}]

> rtmgrに関しましては、ジェフさん、回答をお願い致します。

rtshellの場合はスタンドアロンコンポーネントのマネージャをrtmgrに使う時、
松坂様がおっしゃるとおりに--createを使えるはずですが、まだモジュールが見
えませんからできませんかもしれません。モジュールはrtcatで見えるはずです
が、get_factory_profiles()からもget_loaded_modules()からも見えませんから
まだできません。

よろしくお願いいたします。

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01541] usage of manager

松坂様

安藤です

まず、リリースノート
http://www.openrtm.org/openrtm/ja/node/849#toc6
にありますように、rtcdについては「試験的」実装ですので
動作の保証やドキュメントについては提供されないことをご理解ください。
#他にもいろいろとしなければならない作業があり、
#そこまで手がなかなか回っていません。
使用する際は、自己責任でお願いします。

で、松坂さんがやりたいことですが、C++のrtcdからpythonのrtcdの
コンポーネントをロード(1)してインスタンスを生成したい(2)ということだと思います。

現在のところ各言語版のrtcd間の連携は十分ではなく、それぞれの
言語版のrtcdのマスターとスレーブが最低限の連携をするだけになっています。
#まだいろいろとバグがありますし、Windows版ではloadablemoduleの
#リストを取得するのに時間がかかるなどの問題があります。

(1)についてはできません。直接Pythonのrtcdにアクセスしてモジュールを
 ロードする必要があります。

(2)については一応可能です。

では、こちらで試した方法を説明します。(Windows版で試しました。)

1)C++版のrtcdをマスターとして実行

C:\Program Files\OpenRTM-aist\1.0\bin>rtcd -d

2)Python版のrtcdをマスターとして実行
 このとき、マネージャのポートを2811とするところと名前をぶつからないようにするのがポイントです。
 またこのマネージャもマスターですので、C++のマネージャと親子関係にありません。

C:\Python26>rtcd.py -d -o corba.endpoint:localhost:2811 -o
manager.naming_formats:manager.mgr -o
corba.master_manager:localhost:2811 -o
manager.modules.load_path:"C:\\Program
Files\\OpenRTM-aist\\1.0\\examples\\Python\\SimpleIO\\"

ちなみに、-oオプションはコマンドラインから直接configurationを上書きするオプションです
ドキュメントはデベロッパーズガイド:Configuration(基礎編)で書くつもりだったのですが
まだできてません。すみません。

3)Pythonのrtcdの方で適当なモジュール(ここではConsoleIn)をロードする
 予めrtc.confなどでロードしておいてもいいかもしれません。

4)C++のrtcdでPythonのrtcdにcreate_componentコマンドを以下のように送る
ConsoleIn&manager=localhost:2811

http://www.openrtm.org/OpenRTM-aist/documents/current/cxx/classreference_ja/classRTC_1_1Manager.html#af8a336287c4557cf9c7b78ff26911e85

rtshellでどのようにやるのか分からないのですが、たぶんRTSEと同じだと思います。
ここで、createするマネージャをmanager=localhost:2811と指定しています。
実は、corbaloc URLさえわかっていればどこのホストのマネージャに対しても
createコマンドを送れてしまうという困った機能があります。

以上で、添付の画像のようにConsoleInが生成されました。

次のバージョンではもう少し使える程度に実装していきたいと思います。
その際にはドキュメントも提供できると思います。

ただし、マネージャのインターフェースや振る舞いについては、
現在OMGで標準化が進められていることもあり、まだいろいろと変わる可能性があります。
したがって、文書と振る舞いが違うなどの問題も出るかもしれませんが、
その際はソースをあたってみていただければと思います。
また、もしバグや改善点などご意見があればお寄せいただければと思います。

以上、よろしくお願いいたします。

P.S
loadable_moduleやloaded_moduleについてはすでに栗原さんやジェフさんから
コメントがあったと思いますので、よろしいでしょうか?
基本的に、loadable_moduleやloaded_moduleはロードパス上にある
すべてのモジュールをリストアップするはずで、それにはコンポーネント以外の
DLL等も含まれてしまいます。
どういうコンポーネントが生成可能かはget_factory_profilesで取得するようになっています。

http://www.openrtm.org/OpenRTM-aist/documents/current/cxx/classreference_ja/classRTM_1_1ManagerServant.html

2011年1月5日16:24 Yosuke Matsusaka :
> OpenRTM-aist開発者の皆様
>
> 産総研の松坂です。
>
> たびたびすいませんが、質問させてください。
>
> 現在開発中のコンポーネントをrtcdに対応させようとしているのですが、以下をどうすれば
> よいか、教えていただけますでしょうか?
>
> ・rtcd_pythonとrtcdの共存について
> python版で書いたコンポーネントをrtcd_python経由でロードしたいのですが、rtcd_python
> を単独で起動(-dオプション)した場合は、うまくいくものの、rtcdと共存させようとして、rtcdを
> 先立ち上げてrtcd_pythonを後からスレーブとして立ち上げるとうまくロードができません
> (ロードコマンドがrtcdに投げられてしまうようでロードエラーが出ます)。
> rtshellを使って以下のようなコマンドを投げています。
> $ rtcd -d
> $ rtcd_python
> $ rtmgr --load /home/matsusaka/OpenHRIWeb/openhriweb/JabberRTC.py
> --init-func JabberRTCInit
> /localhost/matsusaka-macbookpro.host_cxt/manager.mgr
> 正しい方法がありましたら教えてください。
>
> ・スタンドアロンコンポーネントから起動されたマネージャについて
> スタンドアロンコンポーネントの場合も、起動時にマネージャが生成されていると思います。
> ただそのようにして起動されたマネージャはプロパティを見てもLoaded modulesやLoadable moduleは
> 空です。
> ただ、現在起動しているスタンドアロンコンポーネントの種類を知っていれば以下のようなこともできると
> 思います。
> $ rtmgr --create JabberRTC /localhost/matsusaka-macbookpro.host_cxt/manager.mgr
> モジュール名だけではなく、このインスタンス生成可能なコンポーネント名も分かると便利かと思うのですが、
> 何か方法はありますでしょうか?
>
> よろしくお願いします。
>
>

root
Offline
Last seen: 36 min 43 sec ago
Joined: 2009-06-23 14:31
[openrtm-users 01544] usage of manager

松坂です。

2011/1/14 Ando Noriaki :
> まず、リリースノート
> http://www.openrtm.org/openrtm/ja/node/849#toc6
> にありますように、rtcdについては「試験的」実装ですので
> 動作の保証やドキュメントについては提供されないことをご理解ください。
> #他にもいろいろとしなければならない作業があり、
> #そこまで手がなかなか回っていません。
> 使用する際は、自己責任でお願いします。

今回はrtcdについて質問しましたが、試験的でないところ(データポートの仕様やアクティビティの仕様など)でも
ドキュメントが足りていないのが現状です。また、マネージャのcorba化によってコンポーネントの立ち上げ時に
エラーメッセージが出るようになってしまい、コンポーネント開発者側にもクレームが来るようになってしまって
おり、、、。
もちろんソースを読めば解決できるし、私自身もその能力はあるのですが、それでもMLで質問しているのは
マニュアルを書いて欲しいからです。

RTMコンテストではあれだけマニュアルについてうるさく言われる(試験的機能なのに文書がないとケチョン
ケチョンにされます)のに、本家がこの状態なのはまずいと思います(と、参加して思いました)。

> P.S
> loadable_moduleやloaded_moduleについてはすでに栗原さんやジェフさんから
> コメントがあったと思いますので、よろしいでしょうか?
> 基本的に、loadable_moduleやloaded_moduleはロードパス上にある
> すべてのモジュールをリストアップするはずで、それにはコンポーネント以外の
> DLL等も含まれてしまいます。
> どういうコンポーネントが生成可能かはget_factory_profilesで取得するようになっています。

これについては栗原さん&ジェフさんのメールで理解できました。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK