[openrtm-users 00194] Re: onActivatedでのerror

Ando Noriaki n-ando @ aist.go.jp
2007年 9月 6日 (木) 00:03:10 JST


末廣様

安藤です

> 産総研の末廣です。
> FedraのVMWareImageでいろいろ試しているのですが
> onActivatedでのerrorに対する状態遷移について疑問があります。
>
> onActivatedの内部でエラーを発生させても、
> onActivatedをRTC::RTC_ERRORで終了させても、
> 必ず1回onExecuteが走った後に、onErrorに移ります。


ご指摘の通り、onActivatedがエラーの場合、onExecuteを通らないで、
ただちに、onDeactivatedおよびonAbortingが実行されるべきだと思います。

OMGのRTC Specificationのステートマシン図でも、
ACTIVE状態からERROR状態への遷移のガード条件が、
[ReturnCode_t==ERROR]となっているので、
on_activated が ERROR のとき、直ちに遷移のトリガーがかかり
on_deactivated、on_abortingの順で実行されるものと思います。

ステートマシンの解釈として、これで正しいでしょうか?>坂本様

> onExecuteに対するガードとしての役割を考えるとバグっぽいのですが、
> それともこれは仕様でしょうか。
>
> RTCのspecificationの遷移図を見ても、
> 私には良く分かりませんでした。
>
> よろしくお願いします。
>
> p.s.
> これに関してソースをチェックするとしたらどの
> ファイルを見たらよいのでしょうか?

StateMachine.hおよびPeriodicExecutionContext.[h|cpp]が
該当のファイルになると思います。
-- 
安藤慶昭@独立行政法人産業技術総合研究所 研究員
                   知能システム研究部門 タスクインテリジェンス研究グループ
                   〒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 メーリングリストの案内