[openrtm-users 03492] Re: OpenRTM-1.2.2でCORBA経由でRTCを生成する手順

金広文男 f-kanehiro @ aist.go.jp
2021年 1月 26日 (火) 19:50:55 JST


宮本様、

ご回答ありがとうございます。
教えて頂いた方法でコンポーネントを生成できることを確認しました。

load_module()がスレーブマネージャには伝わらないようなのですが、伝える方法は
ありますでしょうか?
伝えなくてもスレーブが探してくれるようですが、間違ったload_pathを指定したり、
パスが合っていてもロードしたときに見つからないシンボルがあったりすると、
自動的に探しにいってかえってトラブルの原因になったような記憶がありまして。

上記のトラブルが今も起こるかと思い、load_pathに/usr/libを指定して
ConsoleInのインスタンスを作らせようとすると、create_component()が
返ってこない、という結果になりました。
ご確認頂けないでしょうか。

差出人: openrtm-users <openrtm-users-bounces @ openrtm.org>
日付: 火曜日, 2021年1月26日 18:46
宛先: OpenRTM-aist mailing-list for generic users <openrtm-users @ openrtm.org>
件名: [openrtm-users 03491] Re: OpenRTM-1.2.2でCORBA経由でRTCを生成する手順
金広様

産総研の宮本です。

OpenRTM-aist-1.2.2ではマスターマネージャ上でRTCを起動することはできません。
1.1.2以前からマスターマネージャでは直接RTCを起動せずにスレーブマネージャ上で起動するのが正しい動作だったのですが、マスターマネージャ上でも起動できるようになっていたので正しい動作になるように修正しました。
1.2.2でcreate_component()でRTCを起動するためにはマスターマネージャとスレーブマネージャが1つは起動する必要があります。
マスターマネージャでRTCを起動する方法はないため1.1.2と同じ動作にはならないのですが、スレーブマネージャをマスターマネージャと同じポート番号2810で起動してcreate_component()を呼べば無理やりですが似たような動作にはなります。
そうする場合、rtc.confに以下のように記述してrtcdを実行します。あまりお勧めはしません。

manager.modules.load_path: {モジュールのパス}
corba.endpoints: :2810
manager.shutdown_auto:NO

create_component()の使用方法については以下のページに記載いたしましたので、参考にしていただければと思います。

https://openrtm.org/openrtm/ja/doc/developersguide/advanced_rt_system_programming/mastermanager_slavemanager


> これに限らず、1.1系と1.2系の違い、移行の方法等をまとめたものがありましたら教えて
> 頂けると助かります。

1.2.2の新機能の概要については以下のページに書いてありますが、移行の方法についてまとめたものは作成しておりません。

https://openrtm.github.io/openrtm12.html

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

From: openrtm-users <openrtm-users-bounces @ openrtm.org> On Behalf Of 金広文男
Sent: Monday, January 25, 2021 12:45 PM
To: openrtm-users @ openrtm.org
Subject: [openrtm-users 03490] OpenRTM-1.2.2でCORBA経由でRTCを生成する手順

金広@産総研です。

これまでOpenRTM-1.1.2を使っていたのでOpenRTM-1.2.2に移行できるかを確認しています。
rtcdを立ち上げて、CORBA経由でコンポーネントファクトリをロードしたり、コンポーネントを
生成したり、という使い方をこれまでして来たのですが、rtcdの挙動が異なるようなので教えて
下さい。

1.1.2の場合はload_module()、create_component()を呼び出すとmaster manager上にそのまま
RTCが作られるのですが、1.2.2の場合、create_component()を呼び出すと、内部で
createComponentByManagerName()が呼び出され、managerの名前としてmanager_%pが
使われるのですが、これが見つからないためslave managerを起動してしまうようです。
1.1.2と同じ挙動にさせる方法はありますでしょうか?

ログレベルをPARANOIDとした時のrtcdのログを添付します。

これに限らず、1.1系と1.2系の違い、移行の方法等をまとめたものがありましたら教えて
頂けると助かります。

-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://www.openrtm.org/pipermail/openrtm-users/attachments/20210126/58b357c8/attachment-0001.htm>


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