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

Noriaki Ando n-ando @ aist.go.jp
2005年 8月 22日 (月) 22:43:31 JST


安藤@産総研です

ご意見ありがとうございます。>稲村さん

> 稲村@IHIです。
> 
> > 
> > 親子の状態遷移を完全に一致させたい場合は、以前申し上げたような
> > 同期複合コンポーネントを使用すれば、このようなことができると思います。
> > 
> 
> 複数のコンポーネントの状態遷移を一致させるのであれば、この方法でよいと思います。
> しかしながら、コンポーネントを設計していると、過渡状態でも時間のかかる処理を行なう
> 場面が想定されるので、doオペレーションが必要と考えました。
> [openrtm-users 00009]は、その一例として、複数のコンポーネントを連携させる場合を
> 挙げましたがコンポーネント単体の処理でも必要ではないでしょうか。

こちらでも、マニピュレータの初期化を rtc_starting_entry() で行っていますが、
初期姿勢に移行するまで待たせているので、3秒くらい STARTING 状態を
保持しています。


do がある処理=定常状態がある

ということになっていまして、ACTIVE, READY, ERROR, FATAL_ERROR が
定常状態がある状態ですので rtc_xxx_do() を用意しています。
さらに、定常状態では他の状態に遷移するために何らかのイベントが必要になります。
(原則として外部からのコマンド(オペレーション)呼び出しによって遷移します。)

現在は、
ACTIVE: rtc_start()
READY: rtc_stop()
ERROR: rtc_reset(), rtc_exit()
FATAL_ERROR: rtc_kill()

というようになっています。

逆に、外部からのオペレーション呼び出しに依らない状態遷移は
過渡状態ということになっています。

したがって、STARTING, STOPPING を定常状態にするということは、
新たに外部からのオペレーション呼び出しインターフェースを追加する
必要があります。
そうすると、これまでは rtc_start() 一発で ACTIVE 状態になっていたところを、
READY -> rtc_starting?() -> STARTING -> rtc_activate?() -> ACTIVE
のように2段階にしなければならず、またSTARTINGにdoがないようなコンポーネント
をACTIVE化するためにも2回のオペレーション呼び出しが必要になるのでは
ないでしょうか。
もしくは、rtc_starting?() で ACTIVE->STARTING->ACTIVE へと連続的に
変化させることもできるかとは思いますが、そうするとコンポーネント間で
状態遷移をあわせた意味が薄れてしまいます。

状態遷移はあくまでコンポーネントの状態遷移であって、
内部の処理の状態遷移とは分けて考えた方がいいのではないでしょうか?

コンポーネントはあくまで、アクティブ状態か非アクティブ状態があるだけで、
そのほかの状態はおまけのようなものと考えてください。

一応、現在のところこのようなルールで状態遷移を定めていますので、
rtc_starting_entry, rtc_stopping_entry で多少長い処理を行っても
いいのではないかと思います。

ただ、STARTING, STOPPING で他のコンポーネントとの待ち合わせを行いたいという
ことであれば、それをサポートする機能は必要になってくるとは考えています。
なにかいいアイディアがあれば教えてください。

> > また、下位コンポーネントにたいして start, stop メッセージを
> > 送るような処理は、コンポーネントではなく、アプリケーションプログラム
> > から行うのではだめでしょうか?
> >
> コンポーネントを操作するアプリケーションプログラムという特別なものは存在せず、
> コンポーネントのみで構成されるフレームワークを考えております。

もう少し具体的に rtc_starting_do が必要な例を示していただければ、
OpenRTM-aist に必要な機能についていろいろ議論できると思います。

また、このMLをご覧の方でこういう意見をお持ちの方がいれば、
ぜひ議論に加わっていただきたいと思いますので、
よろしくお願いいたします。

          安藤慶昭@独立行政法人産業技術総合研究所 研究員
                    知能システム研究部門 タスクインテリジェンス研究グループ
                    〒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 メーリングリストの案内