[openrtm-users 01350] Re: high CPU load when deactivate python component

Yosuke Matsusaka yosuke.matsusaka @ aist.go.jp
2010年 7月 6日 (火) 22:27:08 JST


栗原さん

松坂です。

2010/7/6 kurihara shinji <shinji.kurihara @ aist.go.jp>:
> 以下は、一つのExecutionContextに対して複数のRTCが登録された場合についてです。

この部分から誤解していたように思うので確認ですが、ExecutionContext (ECManager?)自体が
RTObjectとは独立したCORBA objectになっているという理解で良いでしょうか?

> RTCのリストに登録してある順番でRTCのon_execute()などを呼びますので、たとえば、
> 3つのRTC(A,B,C)が登録されていて、3つのRTCがACTIVE状態であれば、Aのon_execute
> ()が戻ってきて、Bのon_execute(),Cのon_execute()のようになります。
> よって、各コンポーネント同士が実行タイミングを通知しあっているのではなく、
> あるRTCのアクティビティ処理が終了次第、次のRTCのアクティビティ処理の実行をECが
> 行うといった仕様になっております。

上記のようになっているとすると、例えばECManagerが各RTCのステートマシンの最新の状態を把握
(各コンポーネントのonStateChangeイベントにサブスクライブ)しておき、そのコンポーネントが非アクティブ時には
on_execute()の呼び出しをスキップするなどの実装も可能と思うのですがどうでしょうか?

ステートマシンとECの関係の定義(RTMの仕様)次第ではありますが、、、。

-- 
Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
  Interaction Modeling Group /
  National Institute of Advanced Industrial Science and Technology (AIST)
  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/



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