[openrtm-users 00142] Re: 実時間制御RTコンポーネント

Ando Noriaki n-ando @ aist.go.jp
2007年 6月 26日 (火) 20:07:43 JST


筑波大学 佐藤様

産総研 安藤です

> 自分はART-Linuxによる実時間制御RTコンポーネントの
> 作成をしたいのですが,onExecute内のプログラムを
> 周期実行するためにARTの関数を使い,周期を1msecとしたところ,
> 実際には1msecで実行できていませんでした.
>
> これはonExecuteの呼び出しの周期が1msecより遅いせいである
> と思うのですが,これをもっと早くすることはできないのでしょうか?
> もしくは他に解決方法がありましたらよろしくお願いします.

onExecuteは、ExecutionContextというオブジェクトによって周期実行されています。
ExecutionContextはrtc.confに以下の項目を設定することで、
実行周期を制御することができます。

exec_cxt.periodic.rate: 1000

単位は[Hz]なので、上の例では1ms周期でonExecuteが実行されます。

ただし、リリース版のOpenRTMに付属しているExecutionContextでは
周期実行を単にusleepを使って待ちを入れているだけですので、
おそらく1ms周期を指定してもLinuxのスケジューリング周期の影響により
10ms前後での周期でしか実行されないと思います。

ART-Linuxのを利用する場合は、リアルタイム化されたExecutionContext
に差し替えることによって、onExecuteの実行をリアルタイム化するのが
本来のやり方です。

この方法を用いると、同じコンポーネントを再コンパイルせずに、
リアルタイム化することができます。

近いうちに、ART-Linux用のExecutionContextをWeb上にアップしますので、
今しばらくお待ちください。
-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                   知能システム研究部門 タスクインテリジェンス研究グループ
                   〒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 メーリングリストの案内