Manager::getPOAからのPOA::reference_to_servantでWrongAdapterエラーが出てるのですが・・・

1 post / 0 new
Last post
ysuga
Offline
Last seen: 1 year 8 months ago
Joined: 2011-05-23 10:14
Manager::getPOAからのPOA::reference_to_servantでWrongAdapterエラーが出てるのですが・・・

お世話になります.菅です. CORBAの初歩的な質問かもしれませんが,どなたか教えてください.

v_repというシミュレータ内でManagerを立て,RTCを起動し,外からシミュレータ全体をサービスポートで制御するプラグインを開発をしています. そのサービスポートで,さらに外部プロセスのRTCのURIを投げると,その外部RTCに対して,シミュレータ内でSynchExtTriggerECを生成し,addComponentをするようにしています. 結果としてECが2つ,RTCに取り付く形になっちゃいますが,こうすると,何気なく起動したRTCを同期させることが出来ると考えています.

・・・が,上手く行きません.外部のRTCはJava版およびC++版のRTCですが同様の失敗です.シミュレータはC++版です. 上手く行かない症状は, 0.addComponentの返り値が2 (BAD_PARAMETER?)になる. 1.participantsのECがSystemEditorで上手く表示されない.rateなどがnullと表示されてしまう. 2.addComponentした直後のactivate_componentが失敗する.

C++のtrunkのコードを追っていくと,ECから外部のRTCのRTObject_ptrに対してaddComponent()をすると,RTObjectのattach_context()の呼び出し後に, RTObjectStateMachineを生成して,そのコンストラクタの中で,setComponentAction()メソッド内で, Manager::getPOA()で得たアダプタでreference_to_servantをやっているようですが,この部分で失敗しているようです. ログを見てみましたが,この辺のログ出力があまりないのです・・・が,おおよそこの辺で失敗して,CORBA::Exceptionを送出しているというのは分かりました. この部分のコードだけ取り出して実験してみたところ,reference_to_servantの部分でCORBA::WrongAdapterExceptionを送出してしまいます.

そもそもオブジェクトをactivateしたアダプタじゃないと,reference_to_servantできないと思うのですが, 僕の使い方が悪いのでしょうか?

どなたか詳しい方,回避方法など教えていただけませんか?

Undefined

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