PAGE TOP

 OpenRTC-aist »

   
Home Task Navi HRI REST_API
コミュニケーション知能モジュールパッケージ OpenHRI >> eSEAT (拡張対話制御RTC)

eSEAT (拡張対話制御RTC)

概要

eSEAT(Extended Speech Event Action Transfer)は、音声対話制御を実現するためのソフトウェアです。 OpenHRIで公開していた 簡易対話制御コンポーネント(SEAT) と2013年に公開した SUIT を融合させたコンポーネントです。

SEATからの拡張ポイント

eSEATでは、単にデータポートの拡張に加えて、最初にC言語で実装していたPythonスクリプトをスクリプトファイルに記述して、 簡単な処理を実行できる機能を復活させ、より汎用的な用途に使えるように下記の機能拡張を行っています。
  • 入出力データポートのデータ型の拡張( String, WString, Float, Double, Short, Long, Octet, Char, Boolean )
  • 入力データをSEAT内で処理する機能
  • 入力データに応じた動作としてPythonスクリプトまたは外部シェルの呼び出し機能入力データポートのデータ型の拡張に関しては、今までのSEATMLでは、 <key>タグ で入力データの文字列を指定していましたが、 これを <agent>タグ で定義したデータポート名を指定することで、上述の <script>タグ 内で rtc_in_data という変数に自動入力されるように変更しています。
また、今までのSEATでは入力データに応じた動作を <rule>タグ 内で <key>-<command> のペアを記述しその動作を定義していましたが、 この動作となる <command>タグ は原則として出力データから出力される文字列のみでした。 これをPythonスクリプトや外部シェルの呼び出しへ拡張するために、 <script>タグ と <shell>タグ を新たに追加定義することで、上述の2番目と3番目の機能を実現しています。
また、さらに
  • 入出力データポートのデータ型の拡張(OpenRTM-aistで標準にサポートしている全ての型への対応。独自データ型については未確認ですが可能だと思います。)
  • scriptタグのpythonコードを外部ファイルで指定可能。(この機能はeSEATの内部ではexefile関数コールで実装しています。そのため、対応するスクリプトがコールされる時に毎回評価されることになりますのでコンポーネントの動作中にファイルを書き換えるとコンポーネントの振る舞いも変更されますのでご注意下さい。)スクリプト内部では、データポートから来たデータは、rtc_in_data という大域変数に自動的に格納されます。また、スクリプトで処理したデータを出力データポートから送信したい場合は、rtc_result に代入することでスクリプト実行終了後に送信されます。
  • SUITコンポーネントで実装していた簡易GUI作成機能の統合のため ‘button,label,brk,space の追加と新たに一行入力のための input タグと文字列の出力用の text タグを追加しています。下のようなGUIパネルを生成することができます。
  • スキーマの変更。SEATMLを最初に作成した時と現在の実装がかけ離れて来ました。そのため、SEATMLのスキーマを変更することにしました。今の実装では、以前のスキーマも読み込めるようにはしていますが将来的にはなくすつもりです。
    • 変更されるタグ
      • agent → adaptor
      • command → message
  • Webアダプターを追加しました(2015-08-10)。この機能は、RTM-REST-APIと似たような機能を提供します。すなわち、これは、eSEATに簡単なCOMET機能をもつWebサーバーを実装したものであり、デフォルトでは、eSEATの起動ディレクトリの下の’html’というディレクトリをドキュメントルートとして動作しています。また、Webアダプタでは、簡単なCOMETインターフェースを実装していますので、PUSH配信可能になっています。Javascriptのコードを独自に実装することで、Webブラウザへコンポーネントの情報の出力、Webブラウザから情報の入力などが可能です。
詳細は、オフィシャルページのWebアダプターについてを参照してください。
  • 周期実行のタスク記述ができるように変更しました。(2015-08-19)これによってeSEATのonEecuteで実行するスクリプト定義をseatmlで行うことができますので、ロボットコントローラの実装をしやすくしています。

開発言語

eSEATは、Python2.7上で開発しています。現在は、OpenRTM-aist-1.1.0-RC3を用いています。 また、下記のパッケージを使用していますので、ソースコードを用いて実行させる場合には、各サイトからダウンロードし、インストール後、実行してください。
必要なパッケージ
OpenRTM-aist-1.1.0-RC3
ソースコードパッケージからのインストール
lxml
https://pypi.python.org/pypi/lxml/3.2.1 からインストーラをダウンロードします。 インストーラを起動し、インストールを完了します。
BeautifulSoup
http://www.crummy.com/software/BeautifulSoup/から Beautiful Soup 4のソースコードをダウンロードして展開します。 コマンドプロンプトを起動しset_up.py buildとset_up.py installを行いインストールを完了します。(2015.08現在は、Githubのリポジトリで同時配布していますので、別途インストールする必要はありません) また、eSEATをWindowsの実行ファイルにするには、下記のパッケージもインストールする必要があります。
setuptools
https://pypi.python.org/pypi/setuptools/0.8#windows から ez_setup.py をダウンロードします。 コマンドプロンプトで ez_setup.py と実行しインストールを完了します。
py2exe
http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/py2exe-0.6.9.win32-py2.6.exe/download からインストーラをダウンロードします。 インストーラを起動し、インストールを完了します。

ライセンス

OpenHRIに含まれているSEATは、EPL-1.0で配布しておりましたが、eSEATは、MITライセンスでの配布に変更しております。