Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
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
お世話になります.菅です. 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できないと思うのですが, 僕の使い方が悪いのでしょうか?
どなたか詳しい方,回避方法など教えていただけませんか?