[openrtm-users 00199] Re: onActivated でのerror
Sakamoto Takeshi
tsakamoto @ tech-arts.co.jp
2007年 9月 7日 (金) 20:13:43 JST
清水様
いつもお世話になっております.
テクノロジックアートの坂本です.
> > OMGのRTC Specificationのステートマシン図でも、
> > ACTIVE状態からERROR状態への遷移のガード条件が、
> > [ReturnCode_t==ERROR]となっているので、
> > on_activated が ERROR のとき、直ちに遷移のトリガーがかかり
> > on_deactivated、on_abortingの順で実行されるものと思います。
>
> この説明によると,ACTIVE状態からERROR状態に遷移するときは,
> ERROR状態のentry関数の前にACTIVE状態のexit関数が呼ばれ
> なければいけないということでしょうか?
> それならば,onDeactivatedでエラーが起こった場合でも,
> onDeactivatedがまた呼ばれなければいけないということに
> なってしまい,なんかおかしな感じがします.
まず,Stateのexitアクションが呼ばれる条件に関してなのですが,
こちらは,
「状態からどのような遷移が行われるかに関わらず,
この状態から出た時に必ず実行」となります.
従いまして,ACTIVE状態から抜ける時には
(INACTIVE状態に遷移する場合でも,ERROR状態に遷移する場合でも)
必ずon_deactivatedが呼ばれます.
また,安藤様からもご説明がございましたが,
ガード条件は遷移が発生する前に評価されます.
このため,厳密にはon_deactivatedの返値は
Error状態へ遷移するかどうかの評価対象外となります.
よろしくお願いいたします.
----------------------------------
株式会社テクノロジックアート
坂本 武志
E-Mail:tsakamoto @ tech-arts.co.jp
openrtm-users メーリングリストの案内