[openrtm-users 00251] Re: ExecutionContextの差し替え

Ando Noriaki n-ando @ aist.go.jp
2007年 11月 9日 (金) 09:20:09 JST


金広様

安藤です

> OpenRTM-aist-0.4.1を用いて同期複合コンポーネントを作ろうと
> しています。
>
> examples/SimpleIOを改造して1つのプロセス内に2つのコンポーネント
> ConsoleIn, ConsoleOutを作り、ConsoleOutのExecutionContextを
> detach_executioncontext(0)でdetachし、CosoleInのExecutionContextを
> attach_executioncontext(ec)でattachしました。
>
> この場合、attachしたExecutionContextのidは1になるので、
> ConnectorComp.cppでeclisto[0]としているところをeclisto[1]とすることで
> ConsoleIn, ConsoleOutともactivateすることができ、通常どおり実行できる
> ことを確認しました。

RTObjectとExecutionContext(EC)の関連付けは、
ECに対してRTObjectをaddしてやる必要があります。
RTObjectに対してECをattachしても正しく関連付けられないかもしれません。

このあたりの処理シーケンスについては、OMGの以下のRTC仕様に従っています。
(28ページ目くらい)
http://www.omg.org/cgi-bin/doc?ptc/2007-08-18

ただ、現状ではユーザがここまでいじることを想定していなかったので、
マニュアル、クラスリファレンスなどには記載がありません。

> 次にConnectoCompを使うかわりにRTCLinkを使ってコンポーネントを
> activateしようと思ったのですが、ConsoleOutの状態がUnknownとなっており、
> activateできない状態です。

現在のRtcLinkではidが0のECのみを対象としており、
それ以外のECの状態は見えないようになっています。

残念ながら、現状ではRtcLinkでECの状態をみたり変更したりすることは出来ません。
次期バージョンでは、複数のECを扱えるように改良したいと思います。

ご指摘ありがとうございます。
-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                   知能システム研究部門 タスクインテリジェンス研究グループ
                   〒305-8568 茨城県つくば市梅園1-1-1 中央第2
                   TEL: 029-861-5981 FAX: 029-861-5971
                   n-ando @ aist.go.jp, n-ando @ ieee.org



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