説明

インタラクションシステム、インタラクティブシステム及びプログラム

【課題】インタラクションシステム、インタラクティブシステム及びプログラムにおいて、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することを目的とする。
【解決手段】インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、イベント情報に応じてインタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び動作情報を定義する動作情報定義を受け付ける受付部と、周期動作処理定義、イベント処理定義、及び動作情報定義を一括で更新する更新処理部を備えるように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、インタラクションシステム、インタラクティブシステム及びプログラムに関する。
【背景技術】
【0002】
ユーザとインタラクション(Interaction)を行うコミュニケーションロボットの振る舞い(又は、挙動)を生成するシステムにおいて、ユーザの生活習慣やロボットの置かれた状況に合わせた様々なインタラクションの内容をネットワーク配信又はコンテンツ配信により提供することで、癒しや見守り等のサービスを提供することが提案されている。図1は、この提案されたシステムの一例を示す機能ブロック図である。
【0003】
図1に示すシステム1は、サーバ2、インタラクションシステム3、及びロボット4を有する。サーバ2とインタラクションシステム3は、有線又は無線ネットワークを介して接続される。インタラクションシステム3とロボット4は、有線又は無線ネットワークを介して接続される。インタラクションシステム3は、イベント受信部11、動作情報管理部12、及び周期処理部13を有する。動作情報管理部12には、イベント処理12−1及び動作情報12−2が含まれる。又、周期処理部13には、周期動作処理13−1が含まれる。
【0004】
インタラクションシステム3では、イベント受信部11がロボット4内のセンサ(図示せず)から非同期に出力されるセンシング情報等をイベントとして受信する。動作情報管理部12のイベント処理12−1は、イベント受信部11が受信したイベントを呼び出して、イベントを解釈した結果に応じて動作情報12−2を更新する。周期処理部13の周期動作処理13−1は、周期的に実行されてロボット4の振る舞い(又は、アクション)を指示するアクション指示を出力する。周期動作処理13−1は、各周期での振る舞いを動作情報12−2を参照することで決定する。周期動作処理13−1の実行中は動作情報12−2が変更されないように、周期動作処理13−1とイベント処理12−1の排他制御を行うか、或いは、周期動作処理13−1の直前に必要に応じてイベント処理12−1が非同期で更新する動作情報12−2と周期動作処理13−1が変更する動作情報の同期を取る。
【0005】
周期動作処理13−1は、ロボット4のモータやスピーカ等(図示せず)への指示を含むアクション指示を変更してロボット4の振る舞いを変更する。ここで、周期動作処理13−1がロボット4の振る舞いを決定するため、ロボット4の振る舞いを変更するためには周期動作処理13−1で用いるパラメータを変更する。生き物のような動きをするロボット4は、イベントの発生をトリガとして初めて動作するのではなく、イベントの発生の有無にかかわらず自律動作を行う。又、このようなロボット4は、イベントに対しても複数のイベントや、イベントの時系列の組み合わせに等によって異なる動作を行えることが望ましい。
【0006】
一方、コミュニケーションロボットで実現したいインタラクションは多様である。ロボット4の多様なインタラクションをネットワークから入れ替える(又は、切り替える)ためには、周期動作処理13−1のみではなく、イベント受信部11がロボット4から受信したイベントを解釈する非同期のイベント処理12−1も入れ替える必要がある。これは、インタラクションの内容によっては、同じイベントが別の意味として解釈され得るからである。このため、周期動作処理13−1がユーザとシステム1とのインタラクションを実行している場合、状況に応じて周期動作処理13−1の実行内容及び非同期のイベント処理12−1の実行内容を変更する必要がある。このような場合、周期動作処理13−1の実行内容の変更前にイベント受信部11が受信したイベントに対するイベント処理12−1の実行内容を適切に行えない可能性がある。その結果、インタラクションの整合性を保つように周期動作処理13−1及びイベント処理12−1の実行内容を変更することはできない可能性がある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2002−178282号公報
【特許文献2】特開2005−199402号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来のロボットでは、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することは難しいという問題があった。
【0009】
そこで、本発明は、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することが可能なインタラクションシステム、インタラクティブシステム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一観点によれば、インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部を備えたことを特徴とするインタラクションシステムが提供される。
【0011】
本発明の一観点によれば、インタラクティブ装置と、サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、前記インタラクションシステムは、前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部を備えたことを特徴とするインタラクティブシステムが提供される。
【0012】
本発明の一観点によれば、コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順を前記コンピュータに実行させることを特徴とするプログラムが提供される。
【発明の効果】
【0013】
開示のインタラクションシステム、インタラクティブシステム及びプログラムによれば、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することが可能となる。
【図面の簡単な説明】
【0014】
【図1】提案されたシステムの一例を示す機能ブロック図である。
【図2】本発明の第1実施例におけるシステムの一例を示す機能ブロック図である。
【図3】動作情報定義、イベント処理定義、及び周期動作処理定義を説明する図である。
【図4】第1実施例における処理の一例を説明するフローチャートである。
【図5】比較例の処理の一例を説明する図である。
【図6】第1実施例における処理の一例を説明する図である。
【図7】本発明の第2実施例における処理の一例を説明するフローチャートである。
【図8】動作定義更新部の更新処理の一例を説明するフローチャートである。
【図9】本発明の第3実施例における処理の一例を説明するフローチャートである。
【図10】本発明の第4実施例におけるシステムの一例を示す機能ブロック図である。
【図11】第4実施例におけるデータの流れを説明する図である。
【図12】第4実施例における処理の一例を説明するフローチャートである。
【図13】インタラクションシステムの構成の一例を示すブロック図である。
【図14】ロボットの構成の一例を示すブロック図である。
【発明を実施するための形態】
【0015】
開示のインタラクションシステム、インタラクティブシステム及びプログラムでは、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更する。具体的には、インタラクションの内容を記述した具体的なデータである周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する。
【0016】
以下に、開示のインタラクションシステム、インタラクティブシステム及びプログラムの各実施例を図面と共に説明する。
【実施例】
【0017】
(第1実施例)
コミュニケーションロボットで実現したいインタラクションは、以下のように多様である。コミュニケーションロボットが実現したいインタラクションには、例えばユーザからの働きかけに対するリアルタイム反応、複数の異なるイベントの解釈に応じた振る舞いの変化、イベントの時系列の判断による振る舞いの変化、ロボット動作とイベントの時系列の判断による振る舞いの変化等が含まれる。ユーザからの働きかけに対するリアルタイム反応は、例えばロボットが触られたらロボットに反射的に動作をさせる、ロボットを動くものに注目させる、といった反応である。複数の異なるイベントの解釈に応じた振る舞いの変化は、例えばロボットが抱っこされている時にロボットの頭をなでられたらロボットに気持ちよさそうに動作させる、ロボットがユーザと目を合わせているときにユーザの笑顔を見つけると微笑みを返させる、といった変化である。イベントの時系列の判断による振る舞いの変化は、例えばユーザの笑顔が減ってきたらロボットに笑う動作を行わせる、ロボットの同じ個所を連続して長時間触られているとロボットに嫌がる動作を行わせる、といった変化である。ロボット動作とイベントの時系列の判断による振る舞いの変化は、例えばロボットの発話に対してユーザから返答の発話かうなづきがあればロボットに会話を進めさせる、ロボットが手を振った後にユーザが手を振り返すとロボットに喜ぶ動作を行わせる、といった変化である。
【0018】
このように多様なインタラクションに対応するには、ロボットで実現したいインタラクションの内容(又は、コンテンツ)に応じて様々な非同期イベント処理が必要となる。又、未知のインタラクションに対応する場合、ネットワーク上からネットワーク配信又はコンテンツ配信により配信されるインタラクションの内容は事前にわからないこともある。そこで、本発明の第1実施例では、どのような非同期イベントに基づきどのような動作情報を生成して、その動作情報に基づきどのような内容のインタラクションをロボットに行わせるか(即ち、ロボットにどのような振る舞い、或いは、挙動、或いは、動作を行わせるか)を汎用的に切り替える。具体的には、インタラクションの内容を記述した具体的なデータである周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する。これにより、インタラクションの内容の多様性及び汎用性を向上することができる。周期動作に関するインタラクションを周期動作処理で実現し、ロボットの振る舞い(又は、アクション)を指示するアクション指示を非同期の指示とすることで、ユーザ又は状況に対するロボットの応答性、即ち、インタラクションのリアルタイム性を向上することができる。アクション指示は、例えば後述する図2に示すロボット24の各可動部を駆動するモータの制御、発話の制御、表示機器への表示の制御等を含む。
【0019】
周期動作処理定義とは、動作情報に基づきロボット24のアクションを決定して指示する周期動作処理を定義するデータである。イベント処理定義とは、ロボット24内のセンサ(図示せず)から非同期に出力されるセンシング情報等のイベントに応じて動作情報を更新するイベント処理を定義するデータである。動作情報定義とは、インタラクションの内容であるロボット24の動作を定義するデータである。これに対し、動作情報とは、動作情報定義で定義されるロボット24の動作の成否又は動作を表す式等の具体的な値であり、インタラクションの内容を詳細に表す詳細情報である。従って、周期処理部33による周期動作処理は、イベント処理により更新される動作情報に基づき、ロボット24のアクション(何も行わない場合も含む)を決定して指示する。以下の説明では、周期動作処理定義、イベント処理定義、及び動作情報定義を総称して動作定義とも言う。
【0020】
図2は、本発明の第1実施例におけるシステムの一例を示す機能ブロック図である。図2中、動作定義情報の流れは太い実線の矢印で示し、イベント情報の流れは細い実線で示し、処理の呼び出しは太い破線の矢印で示し、処理の流れは細い破線の矢印で示す。図2に示すシステム21は、サーバ22、インタラクションシステム23、ロボット24、及びその他のシステム25を有する。サーバ22とインタラクションシステム23は、有線又は無線ネットワークを介して接続される。インタラクションシステム23とロボット24及びその他のシステム25は、有線又は無線ネットワークを介して接続される。ロボット24は例えばコミュニケーションロボットである。
【0021】
サーバ22は、例えばインターネット上のウェブサーバ(Web Server)等の汎用のコンピュータシステムで形成可能である。この場合、インタラクションシステム23は、インターネットに接続してWebサーバをアクセス可能な汎用のコンピュータシステムと同様のハードウェアで形成可能であり、ロボット24及び他のシステム25を制御するコントロールセンタとして機能しても良い。インタラクションシステム23及びロボット24は、ロボットシステムの一例を形成する。ロボット24は、インタラクティブ(Interactive)装置の一例であり、ロボットシステムは、インタラクションシステム及びインタラクティブ装置を有するインタラクティブシステムの一例である。
【0022】
インタラクションシステム23は、イベント受信部31、動作情報管理部32、周期処理部33、動作定義受付部34、動作定義更新部35、動作定義更新判定部36、及びイベントキュー37を有する。その他のシステム25は、例えばロボット25以外の他のロボットを含む。インタラクションシステム23及びロボット24のハードウェア構成の一例については後述する。
【0023】
イベント受信部31は、ロボット24内のセンサ(図示せず)から非同期に出力されるセンシング情報等をイベント情報として受信し、受信した非同期イベント情報が呼び出されると動作情報管理部32に渡す。センサは、ロボット24の外部状態(又は、環境)を検知してその外部状態を示すセンシング情報を出力する外的センサであっても、ロボット24の内部状態を検知してその内部状態を示すセンシング情報を出力する内的センサであっても良い。外的センサは、ロボット24の周囲の環境を検知するものであれば特に限定されない。外的センサは、例えばロボット24の周囲にある家電(例えば、照明、テレビジョン等)の動作状況等を検知する。一方、内的センサは、ロボット24のイベントを検知するものであれば特に限定されない。内的センサは、例えばセンサイベントを検知するタッチセンサ、加速度センサ等で形成されていても良い。又、内的センサは、画像処理結果イベント(例えば、人、笑顔、動き、ジェスチャ等)、音声処理結果イベント(例えば、発話、生活音、音声認識等)、ロボット24の内部状態イベント(例えば、感情状態、モータの状態等)等を検知するカメラ、マイクロホン、センサ等で形成されていても良い。
【0024】
動作情報管理部32は、動作情報32−3を管理して保持すると共に、動作情報定義32−2とイベント処理定義32−1を保持する。動作情報管理部32は、イベント受信部31で受信したイベント情報を受け取り、イベント情報に応じたイベント処理を適用して動作情報32−3を更新すると同時に、イベント情報をイベントキュー37に格納する。イベントキュー37は、加工していないイベント情報をキューに保持する。動作情報管理部32は、周期処理部33からの動作情報同期処理のリクエストに応答してその時点での動作情報をリクエストソースである周期処理部33に返し、その際にイベントキュー37をクリアする。動作情報管理部32は、動作定義更新部36(動作定義更新処理)から新たな動作定義を渡されると、動作定義を更新すると共に、イベントキュー37から全イベント情報を取得して順に各イベント情報のイベント処理を行う。動作情報管理部32のこれら3つ処理、即ち、イベント処理、動作情報をリクエストソースである周期処理部33に返す処理、及び動作定義更新処理は、夫々動作情報管理部32により排他制御される。
【0025】
周期処理部33は、周期動作処理の実行前に、動作情報管理部32の動作情報32−3を呼び出して、動作情報32−3のコピーである動作情報33−3を管理して保持することで最新の動作情報を保持する。又、周期処理部33は、周期動作処理定義33−2と動作情報定義33−1を保持する。周期処理部33は、周期的(又は、定期的)に周期動作処理を実行する。周期処理部33が周期動作処理を実行するとは、イベント処理により更新される動作情報に基づき、ロボット24に周期動作を行わせるアクション指示を出力することを意味する。動作情報定義33−1は、動作定義更新部35(動作定義更新処理)により更新される。
【0026】
動作定義更新判断部36は、周期動作の周期毎に、動作定義を更新するか否かを判定する。動作定義には、動作情報定義32−2,33−1、イベント処理定義32−1、及び周期動作処理定義33−2が含まれる。判定方法は特に限定されないが、例えば、新たな動作定義がサーバ22から配信されているか否かを確認する方法、例えば周期動作処理により生成される情報等を元に判断して次の動作定義をサーバ22にリクエストする方法、そのような情報と共に毎回サーバ22に問い合わせてサーバ22が判断する方法等を用いても良い。
【0027】
動作定義受付部34は、サーバ22から配信されるロボット24の周期動作に関するインタラクションの内容、即ち、動作定義(周期動作処理定義、イベント処理定義、及び動作情報定義)を受信する。サーバ22からの動作定義の受信方法は、特に限定されない。動作定義更新部35は、動作定義更新判断部36で動作定義を更新すると判断された場合に呼び出され、動作定義受付部34が受信した更新対象の動作定義を動作情報管理部32に渡して動作情報管理部32における動作定義更新処理を実行すると共に、この更新対象の動作定義を周期処理部33に渡して周期処理部33における動作定義更新処理を実行する。尚、前回の動作定義の後処理や、新たな動作定義の前処理等を行う構成であっても良い。
【0028】
動作定義更新部35及び動作定義更新判断部36は、周期動作処理を定義する周期動作処理定義、イベント情報に応じてインタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び動作情報を定義する動作情報定義を一括で、又は、同時に更新する更新処理部の一例を形成する。言い換えると、この更新処理部は、周期動作処理及び非同期イベント処理の実行内容を変更してロボット24の動作を切り替える切替処理部としても機能する。
【0029】
図3は、動作情報定義、イベント処理定義、及び周期動作処理定義を説明する図である。この例では、イベント処理定義32−1はイベント処理X,Y,Z,...を定義しており、動作情報定義32−2,33−1は動作A,B,C,...を定義しており、動作情報32−3,33−3は動作A,B,C,...の成否又は値を含み、周期動作処理定義33−2はロボット24に周期動作を行わせるアクションP,...を定義している。
【0030】
サーバ22とインタラクションシステム23との間の通信には、例えばHTTP(Hyper Test Transfer Protocol)を用いても良い。この場合、HTTP通信によりXML(eXtensible Markup Language)等のコンテンツをサーバ22とインタラクションシステム23間で交換することができ、HTTPによる疑似プッシュ(Push)、或いは、コンテンツに含まれる周期動作内の何等かのトリガにより、インタラクションシステム23から次のコンテンツをリクエストすることで次のコンテンツがサーバ22からインタラクションシステム23に配信される。このように、サーバ22とインタラクションシステム23との間の通信にHTTPを用いることで、インタラクションの内容は例えばXML(登録商標)+JavaScript(登録商標)で記述することもでき、既存のWebアプリケーションのフレームワークを利用することでユーザの要求に柔軟に対応した各種サービスをより容易に提供することができる。
【0031】
動作定義更新部35による動作定義更新処理では、実行するべきイベント処理の内容も更新されるため、イベント情報をイベントキュー37に保持しておくことで、更新時にさかのぼってイベント処理を行うことが可能となる。又、動作情報管理部32は、イベント情報が反映された動作情報が周期処理部33の周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄するようにイベントキュー37をクリアする。
【0032】
非同期のイベント情報が反映された動作情報が周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄することで、イベント情報を確実に処理することができ、非同期処理の部分も含めて動的にインタラクションの内容を変更することができる。これにより、非同期処理による計算時間の短縮と、インタラクションの内容を切り替える際のイベント処理の完全性を両立することができる。イベント処理の完全性とは、対象となるイベント処理の全てが行われることが保証されることを言う。
【0033】
図4は、第1実施例における処理の一例を説明するフローチャートである。図4において、ステップS1は、動作定義更新判断部36で動作定義の更新の有無を判断し、ステップS2は、更新が有るか否かを判定する。ステップS2の判定結果がYESであると、ステップS3は、動作定義更新判断部36から動作定義更新部35に動作定義の更新をリクエストする。ステップS4は、動作定義更新部35で動作定義受付部34から動作定義を取得する。ステップS5は、周期処理部33の動作定義更新処理を実行して周期処理部33における動作定義を更新する。ステップS6は、動作情報管理部32の動作定義更新処理を実行して動作情報管理部32における動作定義を更新し、イベントキュー37のイベントに新たなイベント処理を一括適用する。
【0034】
ステップS6の後、或いは、ステップS2の判定結果がNOであると、ステップS7は、周期処理部33で動作情報管理部32に動作情報同期処理をリクエストする。ステップS8は、このリクエストに応答して、動作情報管理部32でイベントキュー37をクリアし、周期動作処理が利用する最新の動作情報を周期処理部33に返す。ステップS9は、周期処理部33で動作情報管理部32から取得した動作情報を利用して周期動作処理を実行し、処理はステップS1へ戻る。
【0035】
次に、非同期イベントのパイプライン的な処理を、図5及び図6と共に説明する。図5は、比較例の処理の一例を説明する図であり、図6は、第1実施例における処理の一例を説明する図である。図5及び図6において、(a)は処理のパイプラインを示し、(b)の左側は入力されるデータを縦の時間軸で示すと共に(a)の各処理に対応してデータの処理状況を示す。
【0036】
図5(a)及び図6(a)の処理のパイプラインは同じであり、入力に対して動作情報管理部32における処理A(イベント処理)、動作情報管理部32における中間データ(動作情報)の管理及び保持、動作情報管理部32と周期処理部33間の動作情報の処理C(コピー)、周期処理部33における中間データ(動作情報)の管理及び保持、及び周期処理部33における処理B(周期動作処理)を経て出力(アクション指示)が得られる。
【0037】
図5(b)では、P1で囲んで示すように、時間軸上で上から3番目の粗いクロスハッチングで示すデータD1に対する処理Aが完了しているが、処理Bが完了していない状態で、処理A,B及び中間データの入れ替えを行うと、P2で囲んで示すようにデータD1のイベントが失われてしまうことがわかる。
【0038】
これに対し、図6(b)では、処理A,B及中間データの入れ替えを行っても、P3で囲んで示すように、イベントキュー37に新規の処理Aを適用して処理Cが実行されてから(即ち、完了してから)イベントキュー37をクリアすることで、P4で囲んで示すように上記比較例のようにデータD1のイベントが失われることはないことがわかる。つまり、イベント情報が反映された動作情報が、周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄するようにイベントキュー37をクリアする。
【0039】
(第2実施例)
本発明の第2実施例におけるシステムの一例を示す機能ブロック図は、図2と同様であるため、その図示及び説明は省略する。
【0040】
動作情報の更新時にインタラクションシステム23がネットワークを介して動作情報をリクエストしてサーバ22から取得する場合、リクエストした動作情報の取得時間が比較的長くなる可能性がある。この場合、動作情報を取得するまでの間ロボット24の動作が止まると不自然である。又、動作定義更新判断部36から動作定義更新部35への動作定義更新処理は非同期で行われ、動作定義更新処理が完了するまで旧動作定義で周期動作処理が継続される。
【0041】
そこで、本実施例では、インタラクションの内容の切り替え時のロボット24の動作の連続性を確保するために、以下の如き処理を行う。先ず、インタラクションの内容を切り替える際に、ロボット24の動作が途切れないように、動作定義(周期動作処理定義、イベント処理定義、及び動作情報定義)が更新される前の周期処理部33による周期動作処理を、周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する更新処理、或いは、インタラクションの内容を切り替える切り替え処理と並行して実行する。又、動作定義更新処理中は、動作情報同期処理でイベントキュー37のクリアは行わず、動作定義更新処理の中でイベントキュー37のクリア処理を行う。非同期の動作定義更新処理中は、新旧の動作情報が同時に存在する。又、非同期の動作定義更新処理が終了した後の周期動作処理の直前に、再度イベントの一括処理を行い、更新したイベント処理及び周期動作処理を実行する。これにより、イベント処理の完全性を保つことができる。
【0042】
図7は、本発明の第2実施例における処理の一例を説明するフローチャートである。図7において、ステップS11は、動作定義更新判断部36で動作定義を更新中又は更新終了であるかを判断し、ステップS12は、動作定義を更新中であるか否かを判定する。ステップS12の判定結果がNOであると、ステップS13は、動作定義の更新終了であるか否かを判定し、ステップS13の判定結果がNOであると、ステップS14は、動作定義更新判定部36で動作定義の更新中であるか否かを判断し、ステップS15は、動作定義の更新中であるか否かを判定する。ステップS15の判定結果がYESであると、処理は後述するステップS21へ進み、判定結果がNOであると、処理は後述するステップS18へ進む。一方、ステップS12の判定結果がYESであると、処理は後述するステップS23へ進み、ステップS13の判定結果がYESであると、処理は後述するステップS16へ進む。
【0043】
ステップS16,S17は更新処理終了処理ST1を実行する。ステップS18〜S20は通常処理ST2を実行する。又、ステップS21,S22は更新開始処理ST3を実行し、ステップS23〜S25は更新処理ST4を実行する。
【0044】
更新開始処理ST3において、ステップS21は、動作定義更新判断部36で動作定義更新部35に動作更新処理をリクエストする。ステップS22は、動作定義更新部35で動作情報管理部32に動作定義の更新開始を通知し、処理は更新処理ST4へ進む。
【0045】
更新処理ST4では、イベントキューをクリアしない。更新処理ST4において、ステップS23は、周期処理部33で動作情報管理部32に動作情報同期処理をリクエストする。ステップS24は、リクエストに応答して、動作情報管理部32で周期動作処理が利用する最新の動作情報を周期処理部33に返す。ステップS25は、周期処理部33で取得した動作情報を利用して周期動作処理を実行し、処理はステップS11へ戻る。
【0046】
更新終了処理ST1において、ステップS16は、動作定義更新部35で動作情報管理部32に動作定義の更新終了を通知し、残りのイベントの一括処理後に動作情報管理部32に新たな動作情報を適用する。ステップS17は、動作情報管理部32で周期処理部33に新たな動作情報を適用し、処理は通常処理ST2へ進む。
【0047】
通常処理ST2において、ステップS18は、周期処理部33で動作情報管理部32に動作情報同期処理をリクエストする。ステップS19は、リクエストに応答して、動作情報管理部32でイベントキュー37をクリアし、周期動作処理が利用する最新の動作情報を周期処理部33に返す。ステップS20は、周期処理部33で取得した動作情報を利用して周期動作処理を実行し、処理はステップS11へ戻る。
【0048】
図8は、動作定義更新部の更新処理の一例を説明するフローチャートである。図8において、ステップS31は、動作定義更新部35で動作定義受付部34から動作定義を取得する。ステップS32は、動作定義更新部35で周期処理部33の動作定義更新処理を実行して動作定義を周期処理部33に配布する。ステップS33は、動作定義更新部35で動作情報管理部32の動作定義更新処理を実行して新たな動作定義を動作情報管理部32に配布し、イベントキュー37のイベントに新たなイベント処理を一括適用し、新たなイベント処理を適用したイベントをイベントキュー37から削除する。ステップS34は、動作定義更新部35で動作定義更新判断部36に動作定義の更新終了を通知し、処理は終了する。
【0049】
本実施例では、動作情報管理部32にイベント処理、動作情報同期処理、及び動作定義の更新開始処理ST3が実装され、これらの処理は動作情報管理部32により排他制御される。
【0050】
動作定義の更新開始処理ST3は、図7に示すステップS22において動作情報管理部32に動作定義の更新開始を通知する。動作情報管理部32では、動作定義の更新開始の通知に応答して、動作情報が更新中であることを示すフラグをセット(例えば、オン)すれば良い。
【0051】
動作定義の更新処理ST4は、図8に示すステップS33において、動作情報管理部32で動作定義更新処理を実行して新たな動作定義を周期処理部33に配布し、イベントキュー37のイベントに新たなイベント処理を一括適用し、イベント処理を適用したイベントをイベントキュー37から削除する。動作定義更新の終了処理ST1は、図7に示すステップS16において、動作定義更新部35で動作情報管理部32に動作定義の更新終了を通知し、残りのイベントの一括処理後に動作情報管理部32に新たな動作情報を適用する。動作情報管理部32では、動作定義の更新終了の通知に応答して、動作情報が更新中であることを示すフラグをリセット(例えば、オフ)すれば良く、イベントキュー37のイベントに新たなイベント処理を一括適用し、適用したイベントをイベントキュー37から削除するが、イベントキュー37の内容は削除しない。
【0052】
この例では、動作定義の更新開始処理ST3はイベントを操作しないため排他制御する必要はないが、動作情報とイベントキュー37を更新する箇所のみを排他制御するようにしても良い。
【0053】
(第3実施例)
本発明の第3実施例におけるシステムの一例を示す機能ブロック図は、図2と同様であるため、その図示及び説明は省略する。
【0054】
インタラクションの内容の切り替え直後は、ロボット24が古いイベントに対する誤った反応をする可能性がある。そこで、本実施例では、動作情報として管理する情報に生存期間(例えば、永続、インタラクションの内容の切り替えまで、周期動作処理まで)の属性を持たせることにより、属性に応じた(或いは、適した)周期動作処理を行う。これにより、インタラクションの内容の切り替え直後は、リアルタイム性を要するアクション指示を抑制することで、ロボット24の古いイベントに対する誤った反応を防止することができる。
【0055】
多様なインタラクションを記述するために、この例では動作情報に属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかを付加する。永続動作情報は、動作定義が更新されても保持される情報であり、システム21に対して予め定義されているか、或いは、インタラクションシステム23の記憶部内のシステム領域に名前と対応付けて保存されており名前をキーに参照可能である。動作定義情報は、動作定義が更新される時(又は、インタラクションの内容の切り替え時)に破棄される情報である。リアルタイム情報は、動作情報が一度周期動作処理(即ち、周期動作)で利用されると破棄される情報である。
【0056】
図9は、本発明の第3実施例における処理の一例を説明するフローチャートである。図9において、ステップS40は、動作定義更新判断部36で動作定義の更新の有無を判断し、ステップS41は、動作定義を更新中であるか否かを判定する。ステップS41の判定結果がYESであると、ステップS42は、動作定義更新判断部36から動作定義更新部35に動作定義の更新をリクエストする。ステップS43は、動作定義更新部35で動作定義受付部34から動作定義を取得する。ステップS44は、周期処理部33で動作定義更新処理を実行して動作定義を更新する。ステップS45は、動作定義更新部35で動作情報管理部32の動作定義更新処理を実行して動作定義を更新し、イベントキュー37のイベントに新たなイベント処理を一括適用する。ステップS46は、動作情報管理部32で動作情報のリアルタイム情報をクリア(即ち、初期化)する。
【0057】
ステップS46の後、或いは、ステップS41の判定結果がNOであると、ステップS47は、周期処理部33で動作情報管理部32に動作情報同期処理をリクエストする。ステップS48は、リクエストに応答して動作情報管理部32でイベントキュー37をクリアし、周期動作処理が利用する最新の動作情報を周期処理部33に返す。ステップS49は、周期処理部33で取得した動作情報を利用して周期動作処理を実行し、処理はステップS40へ戻る。
【0058】
永続動作情報は、例えば「A:カーテンが開いているか」といった情報である。動作定義情報は、例えば「B:眠いかどうか/C:既に挨拶したか」、「D:既に挨拶されたか/E:インタラクション回数」といった情報である。リアルタイム情報は、例えば「F:声をかけられた/G:触られた」といった情報である。
【0059】
又、イベント処理は、例えば「カーテン開閉イベント→Aを更新」、「タッチセンサイベント→Gを更新/Eをインクリメント」、「発話検知イベント→Fを更新/Eをインクリメント」、「挨拶検知イベント→Dを更新/Eをインクリメント」等を処理を含む。
【0060】
この場合、周期動作処理は、例えば次のような処理を含む。
・(!A && B && !C && !D && !F && !G)
→眠そうな動作をランダムで実行する。
・(A && B && !C && !D && !F && !G)
→眩しそうな動作をランダムで実行する。
・(!A && B && !C && !D && (F || G))
→びっくりした動作をランダムで実行する。
・(A && B && !C && D && !F && !G)
→挨拶する、Cを更新する。
・(A && B && C && !D && !F && !G)
→長時間返事がないと寂しそうな動作をランダムで実行する。
・ (A && B && C && D && (F || G))
→嬉しそうな動作をランダムで実行する。
・(!A && !B && C && D && !F && !G)
→窓を開けて欲しい動作をランダムで実行する。
・(A && !B && C && D && !F && !G)
→気持ちよさそうな動作をランダムで実行する。
【0061】
又、ロボット24の起床時のインタラクションは、例えば次のような振る舞いを含む。
・眠そうな動作をする。
・ユーザの顔を見つけたら挨拶をする。
・眠い時にユーザの顔を見つける前に声をかけられたり触られたりしたら驚く。
・挨拶のやり取りがあれば喜ぶ。
・ある程度インタラクションを重ねると目が覚めてきてしゃきっとしてくる。
・挨拶が済んだらカーテンを開けて欲しがる。
・日の光を浴びると気持ちよさそうにする。
【0062】
(第4実施例)
図10は、第4実施例におけるシステムの一例を示す機能ブロック図である。図10中、図2と同一部分には同一符号を付し、その説明は省略する。図10中、実線、破線等の矢印の意味は、図4の場合と同様である。
【0063】
複数イベントから動作情報を生成する場合や、前回の周期動作と今回の周期動作との差分情報等を求める場合、イベント毎に判断して動作情報を更新するのでは効率的な処理の実行は難しい。そこで、本実施例では、動作情報同期処理で動作情報を取り出す時に動作情報を更新する。具体的には、動作情報更新処理定義32−4を動作情報管理部32における動作定義に追加し、動作情報管理部32が動作情報同期処理を行うタイミングで動作情報を更新することで、更に多様なインタラクションの定義が可能となる。
【0064】
図12は、第4実施例におけるデータの流れを説明する図であり、動作情報定義、イベント処理定義、及び周期動作処理定義を示す。この例では、イベント処理定義32−1はイベント処理X(a, b, ...)を定義しており、動作情報定義32−2,33−1は動作情報A,B,C,...を定義しており、動作情報更新処理定義32−4は動作情報C,A,B,...を定義している。動作情報32−3,33−3は動作情報A,B,C,...の値を含み、周期動作処理定義33−2はロボット24に周期動作を行わせるアクションP,...のアクション指示を定義している。
【0065】
図13は、第4実施例における処理の一例を説明するフローチャートである。図13に示す動作情報同期処理は、動作情報管理部32により実行される。図13において、ステップS51は、イベント処理の排他制御を行う。ステップS52は、動作情報更新処理定義32−4が追加された動作情報を取り出す時に動作情報を更新する動作情報の更新処理を実行する。ステップS53は、更新処理で更新された動作情報のコピーを作成し、ステップS54は、動作情報のリアルタイム情報をクリア(即ち、初期化)する。ステップS55は、イベントキュー37をクリアし、ステップS56は、イベント処理の排他制御を解除する。ステップS57は、ステップS53で作成した動作情報のコピーをリクエスト元の周期処理部33に返し、処理は終了する。
【0066】
上記の各実施例によれば、多様なインタラクションの内容をサーバからインタラクションシステムを介してロボットにネットワーク配信し、スムーズにインタラクションの内容を切り替えることが可能となる。生活リズム、生活シーン、個人の嗜好等に合わせた内容のインタラクションの提供が可能となり、ユーザと一緒に生活しながらユーザを見守る共生型ロボットによりサービスを提供する場合等に好適である。更に、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更するので、コミュニケーションロボットやその他のインタラクティブ装置(又は、ネットワーク機器)が動的に動作を変更して環境又はリクエストに適応するようなアプリケーションを容易に構築可能となる。
【0067】
図14は、インタラクションシステムの構成の一例を示すブロック図である。図14に示すインタラクションシステム23は、汎用のコンピュータシステムと同様の構成を有する。インタラクションシステム23は、図14に示す如く接続されたプロセッサの一例であるCPU(Central Processing Unit)501、記憶部502、テンキー等を含む入力部503、表示部504、及び通信部505を有する。この例では、記憶部502、入力部503、表示部504、及び通信部505がバス507を介してCPU501に接続されているが、バス507を用いることなく記憶部502、入力部503、表示部504、及び通信部505を夫々直接CPU501に接続した構成であっても良い。バス507を介さずに直接CPU501と信号の送受信を行う場合、バス507上のトラフィックの問題が軽減できる。
【0068】
CPU501は、インタラクションシステム23全体の制御を司り、ロボット24のアクションを指示するアクション指示を出力してロボット24のインタラクションを制御するインタラクション制御プログラムを含む各種プログラムを実行することでインタラクションシステム23の各機能を実現できる。記憶部502は、CPU501が実行するプログラム、及びCPU501が実行する算出処理等の中間データ、イベントキュー37、イベント処理定義32−1、動作情報定義32−2,33−1、動作情報32−3,33−3、同期動作処理定義33−2等を含む各種データを格納する。記憶部502は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)等で形成可能である。入力部502は、インタラクションシステム23にコマンドやデータを入力する際にユーザにより操作される。表示部503は、入力部502からの入力情報、ユーザへのメッセージ、各種操作メニュー等を表示する。通信部505は、送信機及び受信機を有し、サーバ22、ロボット24、及び他のシステム25等と有線又は無線ネットワークを介した通信を行う。
【0069】
インタラクションシステム23に少なくともインタラクション制御機能を持たせるプログラム(インタラクション制御プログラム)は、CPU501にインタラクション制御処理を実行させる。プログラムは、コンピュータ読み取り可能な記憶媒体に格納されていても良い。コンピュータ読み取り可能な記憶媒体は、例えばIC(Integrated Circuit)カードメモリ等の半導体記憶装置、フロッピー(登録商標)ディスク等の磁気ディスク、光磁気ディスク、CD−ROM等の可搬型記録媒体に限定されるものではなく、CPU501でアクセス可能な各種記録媒体を含む。又、コンピュータ読み取り可能な記憶媒体は、例えば記憶部502で形成されても良い。
【0070】
図15は、ロボットの構成の一例を示すブロック図である。図15に示すロボット24は、汎用のコンピュータシステムと同様の構成を含む。ロボット24は、図15に示す如く接続されたプロセッサの一例であるCPU601、記憶部602、テンキー等を含む入力部603、表示部(発光素子等の表示機器を含む)やスピーカ等を含む出力部604、通信部605、及びカメラ、マイクロホン、GPS(Global Positioning System)センサ等の外的センサ及びモータ回転角度センサ等の内部センサを含むセンサ部606を有する。マイクロホンは、入力部603に含まれていても良い。この例では、記憶部602、入力部603、出力部604、通信部605、及びセンサ部606がバス607を介してCPU601に接続されているが、バス607を用いることなく記憶部602、入力部603、出力部604、通信部605、及びセンサ部606を夫々直接CPU601に接続した構成であっても良い。バス607を介さずに直接CPU601と信号の送受信を行う場合、バス607上のトラフィックの問題が軽減できる。尚、ロボット24の可動部、可動部を駆動するモータ等の図示は省略する。図15に示す如きハードウェア構成を有するロボット24自体は周知である。
【0071】
CPU601は、ロボット24全体の制御を司り、アクション指示に基づいてロボット24のアクションを制御するアクション制御プログラムを含む各種プログラムを実行することでロボット24の各機能を実現できる。記憶部602は、CPU601が実行するプログラム、及びCPU601が実行する算出処理等の中間データ等を含む各種データを格納する。記憶部602は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)等で形成可能である。入力部602は、ロボット24にコマンドやデータを入力するのに用いられる。出力部603は、ユーザへのメッセージ等を出力する。通信部605は、送信機及び受信機を有し、インタラクションシステム23と有線又は無線ネットワークを介した通信を行う。通信部605は、例えばインタラクションシステム23と有線通信を行い、他のシステム25とは無線通信を行うようにしても良い。
【0072】
ロボット24に少なくともアクション制御機能を持たせるプログラム(アクション制御プログラム)は、CPU601にアクション制御処理を実行させる。プログラムは、コンピュータ読み取り可能な記憶媒体に格納されていても良い。コンピュータ読み取り可能な記憶媒体は、例えばIC(Integrated Circuit)カードメモリ等の半導体記憶装置、フロッピー(登録商標)ディスク等の磁気ディスク、光磁気ディスク、CD−ROM等の可搬型記録媒体に限定されるものではなく、CPU601でアクセス可能な各種記録媒体を含む。又、コンピュータ読み取り可能な記憶媒体は、例えば記憶部602で形成されても良い。
【0073】
言うまでもなく、CPU601は、アクション制御機能に加え、各種プログラムを実行することでロボット24の会話機能、位置推定機能等の各種機能を更に実現しても良い。
【0074】
上記の各実施例において、ロボットはインタラクティブ装置の一例であり、開示のインタラクションシステムはロボット以外のインタラクティブ装置のインタラクションを制御するものであっても良い。この場合、インタラクティブ装置は、スマートホン(Smartphone)等の携帯端末を含み、スマートホンは本体部に装着されてロボットを形成するものであっても良い。従って、インタラクションシステム及びこのようなスマートホンと本体部の組み合わせを有するロボットシステムも、インタラクティブシステムの一例である。
【0075】
又、必要に応じて上記の第1乃至第4実施例のうち2以上の実施例を適宜組み合わせても良い。
【0076】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクションシステム。
(付記2)
前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第1の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第2の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第3の処理を行う動作情報管理部を更に備え、前記第1、第2、及び第3の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、付記1記載のインタラクションシステム。
(付記3)
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記2記載のインタラクションシステム。
(付記4)
前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、付記3記載のインタラクションシステム。
(付記5)
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記3又は4記載のインタラクションシステム。
(付記6)
前記動作情報管理部は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記2乃至5のいずれか1項記載のインタラクションシステム。
(付記7)
インタラクティブ装置と、
サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、
前記インタラクションシステムは、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクティブシステム。
(付記8)
前記インタラクションシステムは、前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第1の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第2の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第3の処理を行う動作情報管理部を更に備え、前記第1、第2、及び第3の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、付記7記載のインタラクティブシステム。
(付記9)
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記8記載のインタラクティブシステム。
(付記10)
前記インタラクションシステムは、前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、付記9記載のインタラクティブシステム。
(付記11)
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記9又は10記載のインタラクティブシステム。
(付記12)
前記動作情報管理部は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記8乃至11のいずれか1項記載のインタラクティブシステム。
(付記13)
コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順
を前記コンピュータに実行させることを特徴とする、プログラム。
(付記14)
前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第1の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第2の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第3の処理を行う管理手順
を前記コンピュータに更に実行させ、
前記第1、第2、及び第3の処理は夫々前記管理手順により排他制御されることを特徴とする、付記13記載のプログラム。
(付記15)
前記管理手順は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記14記載のプログラム。
(付記16)
前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理手順による更新と並行して行う周期処理手順
を前記コンピュータに更に実行させることを特徴とする、付記15記載のプログラム。
(付記17)
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理手順は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記15又は16記載のプログラム。
(付記18)
前記管理手順は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記14乃至17のいずれか1項記載のプログラム。
(付記19)
サーバにインタラクションの内容の配信をリクエストする手順
を前記コンピュータに更に実行させることを特徴とする、付記13乃至18のいずれか1項記載のプログラム。
(付記20)
前記サーバと前記コンピュータとの間の通信にHTTP(Hyper Test Transfer Protocol)を用いることを特徴とする、付記19記載のプログラム。
【0077】
以上、開示のインタラクションシステム、インタラクティブシステム及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0078】
21 システム
22 サーバ
23 インタラクションシステム
24 ロボット
31 イベント受信部
32 動作情報管理部
33 周期処理部
34 動作定義受付部
35 動作定義更新部
36 動作定義更新判定部
37 イベントキュー
501,601 CPU
502,602 記憶部

【特許請求の範囲】
【請求項1】
インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクションシステム。
【請求項2】
前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第1の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第2の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第3の処理を行う動作情報管理部を更に備え、前記第1、第2、及び第3の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、請求項1記載のインタラクションシステム。
【請求項3】
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、請求項2記載のインタラクションシステム。
【請求項4】
前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、請求項3記載のインタラクションシステム。
【請求項5】
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、請求項3又は4記載のインタラクションシステム。
【請求項6】
インタラクティブ装置と、
サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、
前記インタラクションシステムは、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクティブシステム。
【請求項7】
コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順
を前記コンピュータに実行させることを特徴とする、プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2013−63489(P2013−63489A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−203792(P2011−203792)
【出願日】平成23年9月16日(2011.9.16)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】