OpenRTM / OpenRTM-aist

OpenRTM-aist: RT-Middleware and OMG RTC implementation in C++ implemented by AIST
https://openrtm.org/
Other
19 stars 12 forks source link

OpenCVCameraCompでエラー #319

Closed y-masutani closed 5 years ago

y-masutani commented 5 years ago

付属のOpenCVCameraCompを実行し,RT System EditorでActivateすると「エラーが発生しました。」というパネルが表示されます.ダイアグラム内のRTCの矩形は緑色になっており,カメラ画像の送出はできています.ロガーをONにしていると,Activateした直後に以下の出力がありました.

Mar 28 00:12:17.652 WARNING: ec_base: The component is not responding.
Mar 28 00:12:17.652 ERROR: ec_base: Unknown error: Invalid state transition.

Windows 10 64bitバージョン1809の環境で,OpenRTM-aist-1.2.0-RELEASE_x86_64.msiをインストールしました.

実害はないかもしれませんが,授業で使うつもりですので,避けたい現象です.解決方法をご教示いただけると幸いです.よろしくお願いいたします.

Nobu19800 commented 5 years ago

RTCのアクティブ化、非アクティブ化、リセット時には状態遷移したことを確認できるまで待機するようになっています。 ただこの待機する時間はデフォルトで0.5秒であるため、onActivated関数等で0.5秒以上の処理が実行されるとログにエラーが出力されます。時間が経てばアクティブ状態に遷移するため、実害はありません。

タイムアウトを長く設定するか、状態遷移まで待機する機能を無効にするかでこの現象は回避できます。

以下のようにrtc.confでタイムアウトを10秒などに設定すると、ログにエラーは出力されなくなります。

exec_cxt.activation_timeout: 10
exec_cxt.deactivation_timeout: 10
exec_cxt.reset_timeout: 10

また、以下のように記述することで状態遷移まで待機しなくなるため、この方法でも問題は回避できます。

exec_cxt.sync_activation: NO
exec_cxt.sync_deactivation: NO
exec_cxt.sync_reset: NO
y-masutani commented 5 years ago

早々にありがとうございます! rtc.confに以下を追加したところ,エラーが出なくなりました.

exec_cxt.activation_timeout: 1