[openrtm-users 01541] Re: usage of manager

Ando Noriaki n-ando @ aist.go.jp
2011年 1月 14日 (金) 00:45:11 JST


松坂様

安藤です

まず、リリースノート
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 <yosuke.matsusaka @ aist.go.jp>:
> 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
> モジュール名だけではなく、このインスタンス生成可能なコンポーネント名も分かると便利かと思うのですが、
> 何か方法はありますでしょうか?
>
> よろしくお願いします。
>
> --
> Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
>  Interaction Modeling Group /
>  National Institute of Advanced Industrial Science and Technology (AIST)
>  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/
>
>



-- 
安藤慶昭@独立行政法人産業技術総合研究所 知能システム研究部門
    統合知能研究グループ 主任研究員, 博士(工学)
    〒305-8568 つくば市梅園1-1-1 中央第2
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org

Noriaki Ando, Ph.D.
    Senior Research Scientist, RT-Synthesis R.G., ISRI, AIST
    AIST Tsukuba Central 2, Tsukuba, Ibaraki 305-8568 JAPAN
    e-mail: n-ando @ aist.go.jp, web: http://staff.aist.go.jp/n-ando
    OpenRTM-aist: http://www.openrtm.org
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: クリップボード02.png
型:         image/png
サイズ:     170187 バイト
説明:       無し
URL:        <http://www.openrtm.org/pipermail/openrtm-users/attachments/20110114/48a57539/attachment-0001.png>


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