[openrtm-users 00014] Re: RTコンポーネントの過渡状態のアクティビティオペレーションについて

Noriaki Ando n-ando @ aist.go.jp
2005年 8月 23日 (火) 12:10:12 JST


安藤@産総研です

> 寺田@IHIです。はじめまして。

はじめまして。よろしくお願いいたします。
 
> RTミドルウェアはほぼ素人ですが、
> 状態遷移モデリングの一般論として議論させてください。

逆に、私の方は状態遷移モデリングに関してそれほど経験があるわけでは
ないので、いろいろと教えていただければ大変助かります。

> > 安藤@産総研です
> > 
> <中略>
> 
> > こちらでも、マニピュレータの初期化を rtc_starting_entry() で行っていま
> > すが、
> > 初期姿勢に移行するまで待たせているので、3秒くらい STARTING 状態を
> > 保持しています。
> > do がある処理=定常状態がある
> > 
> > ということになっていまして、ACTIVE, READY, ERROR, FATAL_ERROR が
> > 定常状態がある状態ですので rtc_xxx_do() を用意しています。
> > さらに、定常状態では他の状態に遷移するために何らかのイベントが必要にな
> > ります。
> > (原則として外部からのコマンド(オペレーション)呼び出しによって遷移します
> > 。)
> 
> 上記説明でよく分かりました(分かった気がします)。
> 稲村さんが言うように、物理的に長い時間かかる処理が必要であったとしても、
> 論理的には(RTミドルウェア仕様では)それは定常状態と見なさない、
> ということですね。

そうですね。RTコンポーネントで定義している状態遷移は、あくまで
論理単位としてのコンポーネントの状態遷移であって、その内部で
動作する具体的なロジックの状態遷移とは別ということです。

ただ、現在のRTコンポーネントでは、コンポーネント内部のロジックに
働きかける方法が、InPort/OutPortとrtc_start()等のコマンドインターフェース
しか用意されていないので、少し複雑なことをしようとすると、
行き詰ってしまうのかもしれません。

現在、ユーザ定義のコマンドインターフェースを追加する方法を実装している
ところでして、次のバージョンでは自分で定義したコマンドで、
内部の処理(RTコンポーネントのではなくて)の状態を変えたり、
内部で持っているパラメータを変えたりできるようになります。

> 過去に私も失敗した経験があるのですが、これは状態遷移設計の落とし穴の
> 一つと思います。処理時間の「長い・短い」は自明ではなく、
> そのシステムの設計意図に依存している、
> という点をついつい見逃してしまいがちです。
> 
> 10秒かかる処理があろうとも、中断不能で後戻りしないと決めた
> 処理は、状態のアクティビティにしてはならない、という原則が
> ここでも適用されている、ということで良いのでしょうか?
 
そうですね。凡そ、そのように考えて状態遷移を定義しました。

この件に関しては、産総研(2人)と共同研究者であった松下電工さん(2人)と、
いろいろな場面を想定して議論してきました。

ただし、その議論で全ての場合を網羅できてるとはいえないと思いますので、
こういった議論は大変重要であると思っております。

また、状態遷移の設計論に関して、参考になる本や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 メーリングリストの案内