eSEATの詳細
Simple Wiki Based Contents Management System
Home Projects Memo Misc Topics Software
ソフトウェア関連 >> RTコンポーネント関連 >> eSEAT2 >> eSEATの詳細

eSEATの詳細

eSEATは、元々、文法ベースの音声認識ソフトウェアJulianの音声認識結果に応じてライブラリの関数呼び出しやネットワーク上のソフトウェア(当時は、事情通ロボットの機能モジュールでした)に対してメッセージを送付することを目的として作成されたソフトウェアです。
開発当時は、Julianのサーバーモードをコントロールする機能も実装しており、外部依存ライブラリを持たない小さなプログラムでした。
その数年後、元産総研研究員の松坂要佐氏によりOpenRTM-aistへの対応も含めて、Pythonを用いて書き直されたものが、現在のeSEATのベースになっており、eSEATの内部処理は、当時からあまり変更されていません。
このサイトでは、現在のeSEATの内部構造と処理について記載していきたいと思います。

eSEATのクラス構成

eSEATのプログラム全体のモジュール構成については、こちらのページを参照してください。の
eSEATのプログラムを理解する上で、eSEAT, eSEAT_Core, eSEAT_Gui, SEATML_Parser, eSEATManagerをおさえておけばいいと思います。eSEATMangerは、RTCのマネージャークラスで、eSEAT1のコンポーネント生成をしています。
eSEATがRTCの本体になるのですが、OpenRTM_aist.DataFlowComponentBase, eSEAT_Core, eSEAT_Guiを継承しています。コアロジックは、eSEAT_Coreにまとめられており、eSEAT_Guiは、TkInterを使ったGUIの生成とイベントハンドリングに関するオペレーションがまとめられています。
eSEATの動作を理解するためには、eSEAT, eSEAT_Coreを読めば良いと思います。eSEATのポートや振る舞いを定義しているseatmlファイルの解釈は、SEATML_Parserにまとめられていますので、定義の変更や拡張を行う場合には、このクラスを修正していく必要があります。
以下では、eSEATの起動から順番にみていきたいと思います。

eSEATの動作の流れ

eSEATは、大きく分けて下のような流れで動作します。
  1. eSEATManageによるeSEATコンポーネントの生成
  2. SEATML_Managerによるseatmlファイルの読み込みと構文解析
    1. generalタグの解釈
      1. 各種ポートの生成
      2. 初期化スクリプトの実行
      3. onExecuteで実行するコード定義
    2. stateタグの解釈
      1. stateの生成とルールの定義
  3. eSEATコンポーネントの初期化プロセス(onInitialize)
  4. eSEATコンポーネントのアクティベーション後の振る舞い(ポートからの入力と現在のstateのルールに基づく反応処理の実行)
eSEATのメインの処理は、4のアクティベーション後の振る舞いに集約されますが、以下では、上記に沿って説明していきます。

資料