Robotic

Interaction Service (RoIS) Framework

RoIS Frameworkの目的

ロボットが人とインタラクションを行うために、人検出、個人同定、音声認識など、様々なHRI(Human Robot Interaction)機能が開発されています。ロボットのサービスアプリケーションは、これらのHRI機能を使うことにより開発されます。しかしながら、このようなHRI機能は、ロボットに依存した形で提供されており、サービスアプリケーションを作るためには、ロボット毎に異なる機能の使い方に精通する必要がありました。例えば、相手が誰か知るために顔認識を使うロボットとRFIDタグ検出を使うロボットでは、それぞれの機能を使うためのインタフェースが全く異なっています。車輪で動くロボットと二足歩行で移動するロボットでは、移動するためのインタフェースもそれぞれ異なっています。

従来のインタフェース

ところが、サービスアプリケーションを作るために重要なのは、「相手が誰なのか」「相手がどこにいるのか」「相手の場所まで移動したい」といった抽象レベルの目的であって、その実現手段は問わないことがほとんどです。この目的さえ満たされれば、どのようなロボットでも同様のサービスを行うことが可能となります。そこで、RoIS Frameworkでは、この抽象レベルの目的に着目して、サービスアプリケーションからHRI機能を使うためのインタフェースを共通化するための枠組みを規定し、この枠組みを使うことで、同じサービスアプリケーションが異なるロボットでも動作できるようにすることを目的としています。

標準化されたインタフェース

RoIS Frameworkの概要

サービスシナリオの例

サービスアプリケーションの多くは、ロボットの振る舞いを決定するためのサービスシナリオを記述することにより作成されます。このサービスシナリオには、ロボットや周囲のセンサなどから取得した情報に基いてロボットの動作内容の決定するためのルールと、指示する動作の内容が記述されます。ロボットやセンサから情報を取得するための方法には、大きく分けて、「人を見つけた」などの特定の状態が発生したことの通知を受け取る方法(イベント通知)と、「伝言がある」などのロボットがすでに持っている情報を問い合わせる方法(クエリ)の2種類があります。動作の指示は、使いたい機能に対してコマンドを送ることにより行うことができます。
そこで、RoIS Frameworkでは、サービスアプリケーションとHRI機能との間には、このコマンド、イベント通知、クエリの3つの目的を満たすためのインタフェースが必要であると考え、コマンド、イベント、クエリの3種類のメッセージ交換の方法とその内容について規定しています。

RoIS Frameworkの概念

コマンドは、サービスアプリケーションがHRI機能に動作指令を送るためのインタフェースです。HRI機能は、サービスアプリケーションからメッセージを受信すると、要求された動作を非同期で実行し、動作終了時に完了通知メッセージをサービスアプリケーションに送信します。このような非同期のメッセージ交換方式とすることにより、サービスアプリケーションは、必要に応じて複数の動作指令を行うことが可能となります。このインタフェースは、例えば、HRI機能の開始・停止などの動作指令を行う場合に用います。
クエリは、HRI機能の保持情報を取得するためのインタフェースです。HRI機能は、サービスアプリケーションからメッセージを受信すると、要求された情報をその場で返します。サービスアプリケーションはこれらの情報に基づいて次の動作内容を決定するため、このメッセージ交換は同期で行われます。このインタフェースは、HRI機能の内部状態や設定パラメータなどを参照する場合に用います。
イベントはHRI機能の状態変化のイベント通知に用います。サービスアプリケーションは、あらかじめ必要なイベントの登録を行い、HRI機能は登録された状態変化が発生すると、イベント通知メッセージをサービスアプリケーションに送信します。イベント通知の必要がなくなればイベントの解約を行います。状態変化の発生タイミングは、HRI機能の状態に依存するため、このメッセージ交換は非同期で行われます。このインタフェースは、HRI機能による検出結果や認識結果などが得られた場合の通知に用います。

HRIコンポーネント

RoIS Frameworkでは、HRI機能を、使用するハードウェアや情報処理方法に依存しない抽象化したコンポーネントとして扱います。例えば、「顔認識」や「RFIDタグ認識」などはカメラ、RFIDタグといったセンサに依存した機能ですが、HRIコンポーネントでは、どちらも「人検出」「個人識別」という取り扱う情報に基づいて抽象化したコンポーネントとして扱います。動作に関わる機能においても、「車輪駆動」や「歩行」といったアクチュエータに依存した機能は「目的地移動」という目的動作に基づいて抽象化したHRIコンポーネントとして扱います。
また、通常、一台のロボットは複数の機能を搭載しており、異なるロボットがそれぞれ同じ機能をもつHRIコンポーネントを搭載していることが考えられます。そこで、RoIS Frameworkでは、ロボットなどの物理的な単位をHRIエンジンとして扱い、このHRIエンジンがHRIコンポーネントを統括するものとしています。複数のロボットを含む環境を使用する場合は、個々のHRIエンジンをサブHRIエンジンとして扱い、システム全体を、これらのサブHRIエンジンを統括するメインHRIエンジンとして扱い、サービスアプリケーションとのメッセージ交換はこのメインHRIエンジンを介してのみ行われるものとします。

HRIコンポーネントの例

また、RoIS Frameworkでは、サービスロボットで用いられる標準的なHRI機能を基本HRIコンポーネントとして、交換されるメッセージの内容を規定しています。この基本HRIコンポーネントには以下のものが含まれます。

  • システム情報(system information)
  • 人検出(person detection)
  • 人位置検出(person localization)
  • 個人同定(person identification)
  • 顔検出(face detection)
  • 顔位置検出(face localization)
  • 音検出(sound detection)
  • 音源位置検出(sound localization)
  • 音声認識(speech recognition)
  • ジェスチャ認識(gesture recognition)
  • 音声合成(speech synthesis)
  • 応答動作(reaction)
  • ナビゲーション(navigation)
  • 追従(follow)
  • 移動(move)
これらの基本HRIコンポーネント以外にも、独自のHRI機能をユーザ定義HRIコンポーネントとして設定する方法も規定されています。。

プロファイル

RoIS Frameworkでは、HRIエンジンやHRIコンポーネントの構成を表すためのプロファイルを規定しています。HRIエンジンおよびHRIコンポーネント開発者は、その提供機能の内容に応じたプロファイルを用意し、サービスアプリケーション開発者はこのプロファイルを参照することにより、HRIコンポーネントを使用するために必要なメッセージの構成などを知ることが可能となります。RoIS Frameworkでは、以下のプロファイルの書式を規定しています。
  • パラメータプロファイル:
  • HRIエンジンやHRIコンポーネントの設定値、各メッセージに用いられる引数等のパラメータのパラメータ名、データ型、デフォルト値を定義するプロファイル
  • メッセージプロファイル:
  • コマンド、クエリ、イベントの各インタフェースで交換されるメッセージのメッセージ名、メッセージに含まれる引数を定義するプロファイル。メッセージに含まれる引数は、それぞれパラメータプロファイルを用いて定義される
  • HRIコンポーネントプロファイル:
  • HRIコンポーネントのコンポーネント名、コンポーネントに含まれるコマンド、クエリ、イベントメッセージ、コンポーネントの設定値を定義するプロファイル。コンポーネントに含まれるメッセージは、それぞれメッセージプロファイルを用いて定義される。コンポーネントの設定値は、それぞれパラメータプロファイルを用いて定義される。
  • HRIエンジンプロファイル:
  • HRIエンジンのエンジン名、エンジンに含まれるHRIコンポーネント、エンジンの設定値を定義するプロファイル。エンジンに含まれるHRIコンポーネントは、それぞれHRIコンポーネントプロファイルを用いて定義される。エンジンの設定値は、それぞれパラメータプロファイルを用いて定義される
RoIS Frameworkは、現在OMGにて標準化を進めています。 RoISの仕様案やサンプルコードはダウンロードのページから ご覧いただけます。

参考文献




本ぺージの成果の一部は総務省の委託研究「ライフサポート型ロボット技術の研究開発」によるものです

Copyright  (C) ATR Intelligent Robotics and Communication Laboratories

Contact: irc-contact@atr.jp