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

1 つの投稿 / 0 new
最終投稿
ysuga
オフライン
Last seen: 1年 8ヶ月 前
登録日: 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できないと思うのですが, 僕の使い方が悪いのでしょうか?

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

未定義

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2195
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク