[openrtm-users 00782] Re: OpenHRPとRTコンポーネントの連動について

Takashi Suehiro t.suehiro @ aist.go.jp
2009年 4月 15日 (水) 11:42:56 JST


穴口様、

末廣です。

もう1つの方法として、入出力ポートのコールバック機能を使って
データ駆動的に動作させることも考えられます。

この場合の注意点としては、RTCが複数の入出力を持つときに
流れるデータの数が増幅しないようにするというものがあります。

Ando Noriaki さんは書きました:
> 穴口様
> 
> 産総研 安藤と申します。
> 
>> 穴口と申します。
>> 初めて投稿致します。
>>
>> OpenHRPシミュレータを用いて、
>> RTコンポーネントの作成をしております。
>>
>> シミュレータにコンポーネントAが接続し、
>> コンポーネントAがコンポーネントBに接続する場合の、
>> シミュレータとコンポーネントBの同期の取り方についての質問です。
>>
>> シミュレータにコンポーネントAはSynchExtTriggerECで接続されているので、
>>
>> 同期が取れますが、
>> コンポーネントAとコンポーネントBは、どのようにすればよいでしょうか。
> 
> 方法としては、シミュレータとRTC-AにアタッチされているSynchExtTriggerECを
> コンポーネントBにもアタッチすればできるとおもいます。
> (EC関連はバグがあるかもしれないです。すみません。)
> 
> 手順としては、以下のとおりです。
> 
> rtc_a_ref: コンポーネントAのオブジェクト参照
> rtc_b_ref: コンポーネントBのオブジェクト参照
> 
> ec_a_list = rtc_a_ref->get_contexts(); // AのECのリストを取得
> ec_ext = ec_a_list[?]; // ?はおそらく0だと思います。
> 
> ec_b_list = rtc_b_ref->get_contexts(); // BのECリストを取得
> ec_b = ec_b_list[0]; // デフォルトのECは0に入っている
> ec_b->stop(); // デフォルトのECを止める
> rtc_b_ref->attach_context(ec_ext); // AのECをBにアタッチ
> 
> 大まかな流ればこのようになります。
> C++でこのコードを書くのは面倒なので、末廣先生作のrtc_handle
> を使用すると比較的簡単にこういった操作ができます。
> http://staff.aist.go.jp/t.suehiro/rtm/rtc_handle.html
> 
> お試しください。


-- 
--- 2009/4/1より産総研から電通大に異動しました ----
Takashi Suehiro, Professor, Intelligent Systems Lab, Dep. of Human
Media Systems, Graduate School of Information Systems,
the University of Electro-Communications
Tel: +81-424-43-5655 Fax: +81-424-43-5682
E-mail: suehiro @ taka.is.uec.ac.jp
1-5-1 Chofugaoka, Chofu, Tokyo 1828585, Japan




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