(57)【特許請求の範囲】
【請求項１】
インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクションシステム。
【請求項２】
前記イベント情報に応じたイベント処理を適用して前記動作情報を更新すると同時に前記イベント情報をイベントキューに格納する第１の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第２の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第３の処理を行う動作情報管理部を更に備え、前記第１、第２、及び第３の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、請求項１記載のインタラクションシステム。
【請求項３】
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、請求項２記載のインタラクションシステム。
【請求項４】
前記周期動作処理定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、請求項３記載のインタラクションシステム。
【請求項５】
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、請求項４記載のインタラクションシステム。
【請求項６】
インタラクティブ装置と、
サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、
前記インタラクションシステムは、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクティブシステム。
【請求項７】
コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順
を前記コンピュータに実行させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタラクションシステム、インタラクティブシステム及びプログラムに関する。
【背景技術】
【０００２】
ユーザとインタラクション（Interaction）を行うコミュニケーションロボットの振る舞い（又は、挙動）を生成するシステムにおいて、ユーザの生活習慣やロボットの置かれた状況に合わせた様々なインタラクションの内容をネットワーク配信又はコンテンツ配信により提供することで、癒しや見守り等のサービスを提供することが提案されている。図１は、この提案されたシステムの一例を示す機能ブロック図である。
【０００３】
図１に示すシステム１は、サーバ２、インタラクションシステム３、及びロボット４を有する。サーバ２とインタラクションシステム３は、有線又は無線ネットワークを介して接続される。インタラクションシステム３とロボット４は、有線又は無線ネットワークを介して接続される。インタラクションシステム３は、イベント受信部１１、動作情報管理部１２、及び周期処理部１３を有する。動作情報管理部１２には、イベント処理１２−１及び動作情報１２−２が含まれる。又、周期処理部１３には、周期動作処理１３−１が含まれる。
【０００４】
インタラクションシステム３では、イベント受信部１１がロボット４内のセンサ（図示せず）から非同期に出力されるセンシング情報等をイベントとして受信する。動作情報管理部１２のイベント処理１２−１は、イベント受信部１１が受信したイベントを呼び出して、イベントを解釈した結果に応じて動作情報１２−２を更新する。周期処理部１３の周期動作処理１３−１は、周期的に実行されてロボット４の振る舞い（又は、アクション）を指示するアクション指示を出力する。周期動作処理１３−１は、各周期での振る舞いを動作情報１２−２を参照することで決定する。周期動作処理１３−１の実行中は動作情報１２−２が変更されないように、周期動作処理１３−１とイベント処理１２−１の排他制御を行うか、或いは、周期動作処理１３−１の直前に必要に応じてイベント処理１２−１が非同期で更新する動作情報１２−２と周期動作処理１３−１が変更する動作情報の同期を取る。
【０００５】
周期動作処理１３−１は、ロボット４のモータやスピーカ等（図示せず）への指示を含むアクション指示を変更してロボット４の振る舞いを変更する。ここで、周期動作処理１３−１がロボット４の振る舞いを決定するため、ロボット４の振る舞いを変更するためには周期動作処理１３−１で用いるパラメータを変更する。生き物のような動きをするロボット４は、イベントの発生をトリガとして初めて動作するのではなく、イベントの発生の有無にかかわらず自律動作を行う。又、このようなロボット４は、イベントに対しても複数のイベントや、イベントの時系列の組み合わせに等によって異なる動作を行えることが望ましい。
【０００６】
一方、コミュニケーションロボットで実現したいインタラクションは多様である。ロボット４の多様なインタラクションをネットワークから入れ替える（又は、切り替える）ためには、周期動作処理１３−１のみではなく、イベント受信部１１がロボット４から受信したイベントを解釈する非同期のイベント処理１２−１も入れ替える必要がある。これは、インタラクションの内容によっては、同じイベントが別の意味として解釈され得るからである。このため、周期動作処理１３−１がユーザとシステム１とのインタラクションを実行している場合、状況に応じて周期動作処理１３−１の実行内容及び非同期のイベント処理１２−１の実行内容を変更する必要がある。このような場合、周期動作処理１３−１の実行内容の変更前にイベント受信部１１が受信したイベントに対するイベント処理１２−１の実行内容を適切に行えない可能性がある。その結果、インタラクションの整合性を保つように周期動作処理１３−１及びイベント処理１２−１の実行内容を変更することはできない可能性がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−１７８２８２号公報
【特許文献２】特開２００５−１９９４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来のロボットでは、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することは難しいという問題があった。
【０００９】
そこで、本発明は、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することが可能なインタラクションシステム、インタラクティブシステム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一観点によれば、インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部を備えたインタラクションシステムが提供される。
【００１１】
本発明の一観点によれば、インタラクティブ装置と、サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、前記インタラクションシステムは、前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部を備えたインタラクティブシステムが提供される。
【００１２】
本発明の一観点によれば、コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順を前記コンピュータに実行させるプログラムが提供される。
【発明の効果】
【００１３】
開示のインタラクションシステム、インタラクティブシステム及びプログラムによれば、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】提案されたシステムの一例を示す機能ブロック図である。
【図２】本発明の第１実施例におけるシステムの一例を示す機能ブロック図である。
【図３】動作情報定義、イベント処理定義、及び周期動作処理定義を説明する図である。
【図４】第１実施例における処理の一例を説明するフローチャートである。
【図５】比較例の処理の一例を説明する図である。
【図６】第１実施例における処理の一例を説明する図である。
【図７】本発明の第２実施例における処理の一例を説明するフローチャートである。
【図８】動作定義更新部の更新処理の一例を説明するフローチャートである。
【図９】本発明の第３実施例における処理の一例を説明するフローチャートである。
【図１０】本発明の第４実施例におけるシステムの一例を示す機能ブロック図である。
【図１１】第４実施例におけるデータの流れを説明する図である。
【図１２】第４実施例における処理の一例を説明するフローチャートである。
【図１３】インタラクションシステムの構成の一例を示すブロック図である。
【図１４】ロボットの構成の一例を示すブロック図である。
【発明を実施するための形態】
【００１５】
開示のインタラクションシステム、インタラクティブシステム及びプログラムでは、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更する。具体的には、インタラクションの内容を記述した具体的なデータである周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する。
【００１６】
以下に、開示のインタラクションシステム、インタラクティブシステム及びプログラムの各実施例を図面と共に説明する。
【実施例】
【００１７】
（第１実施例）
コミュニケーションロボットで実現したいインタラクションは、以下のように多様である。コミュニケーションロボットが実現したいインタラクションには、例えばユーザからの働きかけに対するリアルタイム反応、複数の異なるイベントの解釈に応じた振る舞いの変化、イベントの時系列の判断による振る舞いの変化、ロボット動作とイベントの時系列の判断による振る舞いの変化等が含まれる。ユーザからの働きかけに対するリアルタイム反応は、例えばロボットが触られたらロボットに反射的に動作をさせる、ロボットを動くものに注目させる、といった反応である。複数の異なるイベントの解釈に応じた振る舞いの変化は、例えばロボットが抱っこされている時にロボットの頭をなでられたらロボットに気持ちよさそうに動作させる、ロボットがユーザと目を合わせているときにユーザの笑顔を見つけると微笑みを返させる、といった変化である。イベントの時系列の判断による振る舞いの変化は、例えばユーザの笑顔が減ってきたらロボットに笑う動作を行わせる、ロボットの同じ個所を連続して長時間触られているとロボットに嫌がる動作を行わせる、といった変化である。ロボット動作とイベントの時系列の判断による振る舞いの変化は、例えばロボットの発話に対してユーザから返答の発話かうなづきがあればロボットに会話を進めさせる、ロボットが手を振った後にユーザが手を振り返すとロボットに喜ぶ動作を行わせる、といった変化である。
【００１８】
このように多様なインタラクションに対応するには、ロボットで実現したいインタラクションの内容（又は、コンテンツ）に応じて様々な非同期イベント処理が必要となる。又、未知のインタラクションに対応する場合、ネットワーク上からネットワーク配信又はコンテンツ配信により配信されるインタラクションの内容は事前にわからないこともある。そこで、本発明の第１実施例では、どのような非同期イベントに基づきどのような動作情報を生成して、その動作情報に基づきどのような内容のインタラクションをロボットに行わせるか（即ち、ロボットにどのような振る舞い、或いは、挙動、或いは、動作を行わせるか）を汎用的に切り替える。具体的には、インタラクションの内容を記述した具体的なデータである周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する。これにより、インタラクションの内容の多様性及び汎用性を向上することができる。周期動作に関するインタラクションを周期動作処理で実現し、ロボットの振る舞い（又は、アクション）を指示するアクション指示を非同期の指示とすることで、ユーザ又は状況に対するロボットの応答性、即ち、インタラクションのリアルタイム性を向上することができる。アクション指示は、例えば後述する図２に示すロボット２４の各可動部を駆動するモータの制御、発話の制御、表示機器への表示の制御等を含む。
【００１９】
周期動作処理定義とは、動作情報に基づきロボット２４のアクションを決定して指示する周期動作処理を定義するデータである。イベント処理定義とは、ロボット２４内のセンサ（図示せず）から非同期に出力されるセンシング情報等のイベントに応じて動作情報を更新するイベント処理を定義するデータである。動作情報定義とは、インタラクションの内容であるロボット２４の動作を定義するデータである。これに対し、動作情報とは、動作情報定義で定義されるロボット２４の動作の成否又は動作を表す式等の具体的な値であり、インタラクションの内容を詳細に表す詳細情報である。従って、周期処理部３３による周期動作処理は、イベント処理により更新される動作情報に基づき、ロボット２４のアクション（何も行わない場合も含む）を決定して指示する。以下の説明では、周期動作処理定義、イベント処理定義、及び動作情報定義を総称して動作定義とも言う。
【００２０】
図２は、本発明の第１実施例におけるシステムの一例を示す機能ブロック図である。図２中、動作定義情報の流れは太い実線の矢印で示し、イベント情報の流れは細い実線で示し、処理の呼び出しは太い破線の矢印で示し、処理の流れは細い破線の矢印で示す。図２に示すシステム２１は、サーバ２２、インタラクションシステム２３、ロボット２４、及びその他のシステム２５を有する。サーバ２２とインタラクションシステム２３は、有線又は無線ネットワークを介して接続される。インタラクションシステム２３とロボット２４及びその他のシステム２５は、有線又は無線ネットワークを介して接続される。ロボット２４は例えばコミュニケーションロボットである。
【００２１】
サーバ２２は、例えばインターネット上のウェブサーバ（Web Server）等の汎用のコンピュータシステムで形成可能である。この場合、インタラクションシステム２３は、インターネットに接続してWebサーバをアクセス可能な汎用のコンピュータシステムと同様のハードウェアで形成可能であり、ロボット２４及び他のシステム２５を制御するコントロールセンタとして機能しても良い。インタラクションシステム２３及びロボット２４は、ロボットシステムの一例を形成する。ロボット２４は、インタラクティブ（Interactive）装置の一例であり、ロボットシステムは、インタラクションシステム及びインタラクティブ装置を有するインタラクティブシステムの一例である。
【００２２】
インタラクションシステム２３は、イベント受信部３１、動作情報管理部３２、周期処理部３３、動作定義受付部３４、動作定義更新部３５、動作定義更新判定部３６、及びイベントキュー３７を有する。その他のシステム２５は、例えばロボット２５以外の他のロボットを含む。インタラクションシステム２３及びロボット２４のハードウェア構成の一例については後述する。
【００２３】
イベント受信部３１は、ロボット２４内のセンサ（図示せず）から非同期に出力されるセンシング情報等をイベント情報として受信し、受信した非同期イベント情報が呼び出されると動作情報管理部３２に渡す。センサは、ロボット２４の外部状態（又は、環境）を検知してその外部状態を示すセンシング情報を出力する外的センサであっても、ロボット２４の内部状態を検知してその内部状態を示すセンシング情報を出力する内的センサであっても良い。外的センサは、ロボット２４の周囲の環境を検知するものであれば特に限定されない。外的センサは、例えばロボット２４の周囲にある家電（例えば、照明、テレビジョン等）の動作状況等を検知する。一方、内的センサは、ロボット２４のイベントを検知するものであれば特に限定されない。内的センサは、例えばセンサイベントを検知するタッチセンサ、加速度センサ等で形成されていても良い。又、内的センサは、画像処理結果イベント（例えば、人、笑顔、動き、ジェスチャ等）、音声処理結果イベント（例えば、発話、生活音、音声認識等）、ロボット２４の内部状態イベント（例えば、感情状態、モータの状態等）等を検知するカメラ、マイクロホン、センサ等で形成されていても良い。
【００２４】
動作情報管理部３２は、動作情報３２−３を管理して保持すると共に、動作情報定義３２−２とイベント処理定義３２−１を保持する。動作情報管理部３２は、イベント受信部３１で受信したイベント情報を受け取り、イベント情報に応じたイベント処理を適用して動作情報３２−３を更新すると同時に、イベント情報をイベントキュー３７に格納する。イベントキュー３７は、加工していないイベント情報をキューに保持する。動作情報管理部３２は、周期処理部３３からの動作情報同期処理のリクエストに応答してその時点での動作情報をリクエストソースである周期処理部３３に返し、その際にイベントキュー３７をクリアする。動作情報管理部３２は、動作定義更新部３６（動作定義更新処理）から新たな動作定義を渡されると、動作定義を更新すると共に、イベントキュー３７から全イベント情報を取得して順に各イベント情報のイベント処理を行う。動作情報管理部３２のこれら３つ処理、即ち、イベント処理、動作情報をリクエストソースである周期処理部３３に返す処理、及び動作定義更新処理は、夫々動作情報管理部３２により排他制御される。
【００２５】
周期処理部３３は、周期動作処理の実行前に、動作情報管理部３２の動作情報３２−３を呼び出して、動作情報３２−３のコピーである動作情報３３−３を管理して保持することで最新の動作情報を保持する。又、周期処理部３３は、周期動作処理定義３３−２と動作情報定義３３−１を保持する。周期処理部３３は、周期的（又は、定期的）に周期動作処理を実行する。周期処理部３３が周期動作処理を実行するとは、イベント処理により更新される動作情報に基づき、ロボット２４に周期動作を行わせるアクション指示を出力することを意味する。動作情報定義３３−１は、動作定義更新部３５（動作定義更新処理）により更新される。
【００２６】
動作定義更新判断部３６は、周期動作の周期毎に、動作定義を更新するか否かを判定する。動作定義には、動作情報定義３２−２，３３−１、イベント処理定義３２−１、及び周期動作処理定義３３−２が含まれる。判定方法は特に限定されないが、例えば、新たな動作定義がサーバ２２から配信されているか否かを確認する方法、例えば周期動作処理により生成される情報等を元に判断して次の動作定義をサーバ２２にリクエストする方法、そのような情報と共に毎回サーバ２２に問い合わせてサーバ２２が判断する方法等を用いても良い。
【００２７】
動作定義受付部３４は、サーバ２２から配信されるロボット２４の周期動作に関するインタラクションの内容、即ち、動作定義（周期動作処理定義、イベント処理定義、及び動作情報定義）を受信する。サーバ２２からの動作定義の受信方法は、特に限定されない。動作定義更新部３５は、動作定義更新判断部３６で動作定義を更新すると判断された場合に呼び出され、動作定義受付部３４が受信した更新対象の動作定義を動作情報管理部３２に渡して動作情報管理部３２における動作定義更新処理を実行すると共に、この更新対象の動作定義を周期処理部３３に渡して周期処理部３３における動作定義更新処理を実行する。尚、前回の動作定義の後処理や、新たな動作定義の前処理等を行う構成であっても良い。
【００２８】
動作定義更新部３５及び動作定義更新判断部３６は、周期動作処理を定義する周期動作処理定義、イベント情報に応じてインタラクティブ装置のインタラクションの内容を詳細に表す動作情報を更新するイベント処理定義、及び動作情報を定義する動作情報定義を一括で、又は、同時に更新する更新処理部の一例を形成する。言い換えると、この更新処理部は、周期動作処理及び非同期イベント処理の実行内容を変更してロボット２４の動作を切り替える切替処理部としても機能する。
【００２９】
図３は、動作情報定義、イベント処理定義、及び周期動作処理定義を説明する図である。この例では、イベント処理定義３２−１はイベント処理Ｘ，Ｙ，Ｚ，...を定義しており、動作情報定義３２−２，３３−１は動作Ａ，Ｂ，Ｃ，...を定義しており、動作情報３２−３，３３−３は動作Ａ，Ｂ，Ｃ，...の成否又は値を含み、周期動作処理定義３３−２はロボット２４に周期動作を行わせるアクションＰ，...を定義している。
【００３０】
サーバ２２とインタラクションシステム２３との間の通信には、例えばＨＴＴＰ（Hyper Test Transfer Protocol）を用いても良い。この場合、ＨＴＴＰ通信によりＸＭＬ（eXtensible Markup Language）等のコンテンツをサーバ２２とインタラクションシステム２３間で交換することができ、ＨＴＴＰによる疑似プッシュ（Push）、或いは、コンテンツに含まれる周期動作内の何等かのトリガにより、インタラクションシステム２３から次のコンテンツをリクエストすることで次のコンテンツがサーバ２２からインタラクションシステム２３に配信される。このように、サーバ２２とインタラクションシステム２３との間の通信にＨＴＴＰを用いることで、インタラクションの内容は例えばＸＭＬ（登録商標）＋JavaScript（登録商標）で記述することもでき、既存のWebアプリケーションのフレームワークを利用することでユーザの要求に柔軟に対応した各種サービスをより容易に提供することができる。
【００３１】
動作定義更新部３５による動作定義更新処理では、実行するべきイベント処理の内容も更新されるため、イベント情報をイベントキュー３７に保持しておくことで、更新時にさかのぼってイベント処理を行うことが可能となる。又、動作情報管理部３２は、イベント情報が反映された動作情報が周期処理部３３の周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄するようにイベントキュー３７をクリアする。
【００３２】
非同期のイベント情報が反映された動作情報が周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄することで、イベント情報を確実に処理することができ、非同期処理の部分も含めて動的にインタラクションの内容を変更することができる。これにより、非同期処理による計算時間の短縮と、インタラクションの内容を切り替える際のイベント処理の完全性を両立することができる。イベント処理の完全性とは、対象となるイベント処理の全てが行われることが保証されることを言う。
【００３３】
図４は、第１実施例における処理の一例を説明するフローチャートである。図４において、ステップＳ１は、動作定義更新判断部３６で動作定義の更新の有無を判断し、ステップＳ２は、更新が有るか否かを判定する。ステップＳ２の判定結果がＹＥＳであると、ステップＳ３は、動作定義更新判断部３６から動作定義更新部３５に動作定義の更新をリクエストする。ステップＳ４は、動作定義更新部３５で動作定義受付部３４から動作定義を取得する。ステップＳ５は、周期処理部３３の動作定義更新処理を実行して周期処理部３３における動作定義を更新する。ステップＳ６は、動作情報管理部３２の動作定義更新処理を実行して動作情報管理部３２における動作定義を更新し、イベントキュー３７のイベントに新たなイベント処理を一括適用する。
【００３４】
ステップＳ６の後、或いは、ステップＳ２の判定結果がＮＯであると、ステップＳ７は、周期処理部３３で動作情報管理部３２に動作情報同期処理をリクエストする。ステップＳ８は、このリクエストに応答して、動作情報管理部３２でイベントキュー３７をクリアし、周期動作処理が利用する最新の動作情報を周期処理部３３に返す。ステップＳ９は、周期処理部３３で動作情報管理部３２から取得した動作情報を利用して周期動作処理を実行し、処理はステップＳ１へ戻る。
【００３５】
次に、非同期イベントのパイプライン的な処理を、図５及び図６と共に説明する。図５は、比較例の処理の一例を説明する図であり、図６は、第１実施例における処理の一例を説明する図である。図５及び図６において、（ａ）は処理のパイプラインを示し、（ｂ）の左側は入力されるデータを縦の時間軸で示すと共に（ａ）の各処理に対応してデータの処理状況を示す。
【００３６】
図５（ａ）及び図６（ａ）の処理のパイプラインは同じであり、入力に対して動作情報管理部３２における処理Ａ（イベント処理）、動作情報管理部３２における中間データ（動作情報）の管理及び保持、動作情報管理部３２と周期処理部３３間の動作情報の処理Ｃ（コピー）、周期処理部３３における中間データ（動作情報）の管理及び保持、及び周期処理部３３における処理Ｂ（周期動作処理）を経て出力（アクション指示）が得られる。
【００３７】
図５（ｂ）では、Ｐ１で囲んで示すように、時間軸上で上から３番目の粗いクロスハッチングで示すデータＤ１に対する処理Ａが完了しているが、処理Ｂが完了していない状態で、処理Ａ，Ｂ及び中間データの入れ替えを行うと、Ｐ２で囲んで示すようにデータＤ１のイベントが失われてしまうことがわかる。
【００３８】
これに対し、図６（ｂ）では、処理Ａ，Ｂ及中間データの入れ替えを行っても、Ｐ３で囲んで示すように、イベントキュー３７に新規の処理Ａを適用して処理Ｃが実行されてから（即ち、完了してから）イベントキュー３７をクリアすることで、Ｐ４で囲んで示すように上記比較例のようにデータＤ１のイベントが失われることはないことがわかる。つまり、イベント情報が反映された動作情報が、周期動作処理で利用されて初めて、その時の動作情報に反映済みのイベント情報を破棄するようにイベントキュー３７をクリアする。
【００３９】
（第２実施例）
本発明の第２実施例におけるシステムの一例を示す機能ブロック図は、図２と同様であるため、その図示及び説明は省略する。
【００４０】
動作情報の更新時にインタラクションシステム２３がネットワークを介して動作情報をリクエストしてサーバ２２から取得する場合、リクエストした動作情報の取得時間が比較的長くなる可能性がある。この場合、動作情報を取得するまでの間ロボット２４の動作が止まると不自然である。又、動作定義更新判断部３６から動作定義更新部３５への動作定義更新処理は非同期で行われ、動作定義更新処理が完了するまで旧動作定義で周期動作処理が継続される。
【００４１】
そこで、本実施例では、インタラクションの内容の切り替え時のロボット２４の動作の連続性を確保するために、以下の如き処理を行う。先ず、インタラクションの内容を切り替える際に、ロボット２４の動作が途切れないように、動作定義（周期動作処理定義、イベント処理定義、及び動作情報定義）が更新される前の周期処理部３３による周期動作処理を、周期動作処理定義、イベント処理定義、及び動作情報定義を一括で、又は、同時に更新する更新処理、或いは、インタラクションの内容を切り替える切り替え処理と並行して実行する。又、動作定義更新処理中は、動作情報同期処理でイベントキュー３７のクリアは行わず、動作定義更新処理の中でイベントキュー３７のクリア処理を行う。非同期の動作定義更新処理中は、新旧の動作情報が同時に存在する。又、非同期の動作定義更新処理が終了した後の周期動作処理の直前に、再度イベントの一括処理を行い、更新したイベント処理及び周期動作処理を実行する。これにより、イベント処理の完全性を保つことができる。
【００４２】
図７は、本発明の第２実施例における処理の一例を説明するフローチャートである。図７において、ステップＳ１１は、動作定義更新判断部３６で動作定義を更新中又は更新終了であるかを判断し、ステップＳ１２は、動作定義を更新中であるか否かを判定する。ステップＳ１２の判定結果がＮＯであると、ステップＳ１３は、動作定義の更新終了であるか否かを判定し、ステップＳ１３の判定結果がＮＯであると、ステップＳ１４は、動作定義更新判定部３６で動作定義の更新中であるか否かを判断し、ステップＳ１５は、動作定義の更新中であるか否かを判定する。ステップＳ１５の判定結果がＹＥＳであると、処理は後述するステップＳ２１へ進み、判定結果がＮＯであると、処理は後述するステップＳ１８へ進む。一方、ステップＳ１２の判定結果がＹＥＳであると、処理は後述するステップＳ２３へ進み、ステップＳ１３の判定結果がＹＥＳであると、処理は後述するステップＳ１６へ進む。
【００４３】
ステップＳ１６，Ｓ１７は更新処理終了処理ＳＴ１を実行する。ステップＳ１８〜Ｓ２０は通常処理ＳＴ２を実行する。又、ステップＳ２１，Ｓ２２は更新開始処理ＳＴ３を実行し、ステップＳ２３〜Ｓ２５は更新処理ＳＴ４を実行する。
【００４４】
更新開始処理ＳＴ３において、ステップＳ２１は、動作定義更新判断部３６で動作定義更新部３５に動作更新処理をリクエストする。ステップＳ２２は、動作定義更新部３５で動作情報管理部３２に動作定義の更新開始を通知し、処理は更新処理ＳＴ４へ進む。
【００４５】
更新処理ＳＴ４では、イベントキューをクリアしない。更新処理ＳＴ４において、ステップＳ２３は、周期処理部３３で動作情報管理部３２に動作情報同期処理をリクエストする。ステップＳ２４は、リクエストに応答して、動作情報管理部３２で周期動作処理が利用する最新の動作情報を周期処理部３３に返す。ステップＳ２５は、周期処理部３３で取得した動作情報を利用して周期動作処理を実行し、処理はステップＳ１１へ戻る。
【００４６】
更新終了処理ＳＴ１において、ステップＳ１６は、動作定義更新部３５で動作情報管理部３２に動作定義の更新終了を通知し、残りのイベントの一括処理後に動作情報管理部３２に新たな動作情報を適用する。ステップＳ１７は、動作情報管理部３２で周期処理部３３に新たな動作情報を適用し、処理は通常処理ＳＴ２へ進む。
【００４７】
通常処理ＳＴ２において、ステップＳ１８は、周期処理部３３で動作情報管理部３２に動作情報同期処理をリクエストする。ステップＳ１９は、リクエストに応答して、動作情報管理部３２でイベントキュー３７をクリアし、周期動作処理が利用する最新の動作情報を周期処理部３３に返す。ステップＳ２０は、周期処理部３３で取得した動作情報を利用して周期動作処理を実行し、処理はステップＳ１１へ戻る。
【００４８】
図８は、動作定義更新部の更新処理の一例を説明するフローチャートである。図８において、ステップＳ３１は、動作定義更新部３５で動作定義受付部３４から動作定義を取得する。ステップＳ３２は、動作定義更新部３５で周期処理部３３の動作定義更新処理を実行して動作定義を周期処理部３３に配布する。ステップＳ３３は、動作定義更新部３５で動作情報管理部３２の動作定義更新処理を実行して新たな動作定義を動作情報管理部３２に配布し、イベントキュー３７のイベントに新たなイベント処理を一括適用し、新たなイベント処理を適用したイベントをイベントキュー３７から削除する。ステップＳ３４は、動作定義更新部３５で動作定義更新判断部３６に動作定義の更新終了を通知し、処理は終了する。
【００４９】
本実施例では、動作情報管理部３２にイベント処理、動作情報同期処理、及び動作定義の更新開始処理ＳＴ３が実装され、これらの処理は動作情報管理部３２により排他制御される。
【００５０】
動作定義の更新開始処理ＳＴ３は、図７に示すステップＳ２２において動作情報管理部３２に動作定義の更新開始を通知する。動作情報管理部３２では、動作定義の更新開始の通知に応答して、動作情報が更新中であることを示すフラグをセット（例えば、オン）すれば良い。
【００５１】
動作定義の更新処理ＳＴ４は、図８に示すステップＳ３３において、動作情報管理部３２で動作定義更新処理を実行して新たな動作定義を周期処理部３３に配布し、イベントキュー３７のイベントに新たなイベント処理を一括適用し、イベント処理を適用したイベントをイベントキュー３７から削除する。動作定義更新の終了処理ＳＴ１は、図７に示すステップＳ１６において、動作定義更新部３５で動作情報管理部３２に動作定義の更新終了を通知し、残りのイベントの一括処理後に動作情報管理部３２に新たな動作情報を適用する。動作情報管理部３２では、動作定義の更新終了の通知に応答して、動作情報が更新中であることを示すフラグをリセット（例えば、オフ）すれば良く、イベントキュー３７のイベントに新たなイベント処理を一括適用し、適用したイベントをイベントキュー３７から削除するが、イベントキュー３７の内容は削除しない。
【００５２】
この例では、動作定義の更新開始処理ＳＴ３はイベントを操作しないため排他制御する必要はないが、動作情報とイベントキュー３７を更新する箇所のみを排他制御するようにしても良い。
【００５３】
（第３実施例）
本発明の第３実施例におけるシステムの一例を示す機能ブロック図は、図２と同様であるため、その図示及び説明は省略する。
【００５４】
インタラクションの内容の切り替え直後は、ロボット２４が古いイベントに対する誤った反応をする可能性がある。そこで、本実施例では、動作情報として管理する情報に生存期間（例えば、永続、インタラクションの内容の切り替えまで、周期動作処理まで）の属性を持たせることにより、属性に応じた（或いは、適した）周期動作処理を行う。これにより、インタラクションの内容の切り替え直後は、リアルタイム性を要するアクション指示を抑制することで、ロボット２４の古いイベントに対する誤った反応を防止することができる。
【００５５】
多様なインタラクションを記述するために、この例では動作情報に属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかを付加する。永続動作情報は、動作定義が更新されても保持される情報であり、システム２１に対して予め定義されているか、或いは、インタラクションシステム２３の記憶部内のシステム領域に名前と対応付けて保存されており名前をキーに参照可能である。動作定義情報は、動作定義が更新される時（又は、インタラクションの内容の切り替え時）に破棄される情報である。リアルタイム情報は、動作情報が一度周期動作処理（即ち、周期動作）で利用されると破棄される情報である。
【００５６】
図９は、本発明の第３実施例における処理の一例を説明するフローチャートである。図９において、ステップＳ４０は、動作定義更新判断部３６で動作定義の更新の有無を判断し、ステップＳ４１は、動作定義を更新中であるか否かを判定する。ステップＳ４１の判定結果がＹＥＳであると、ステップＳ４２は、動作定義更新判断部３６から動作定義更新部３５に動作定義の更新をリクエストする。ステップＳ４３は、動作定義更新部３５で動作定義受付部３４から動作定義を取得する。ステップＳ４４は、周期処理部３３で動作定義更新処理を実行して動作定義を更新する。ステップＳ４５は、動作定義更新部３５で動作情報管理部３２の動作定義更新処理を実行して動作定義を更新し、イベントキュー３７のイベントに新たなイベント処理を一括適用する。ステップＳ４６は、動作情報管理部３２で動作情報のリアルタイム情報をクリア（即ち、初期化）する。
【００５７】
ステップＳ４６の後、或いは、ステップＳ４１の判定結果がＮＯであると、ステップＳ４７は、周期処理部３３で動作情報管理部３２に動作情報同期処理をリクエストする。ステップＳ４８は、リクエストに応答して動作情報管理部３２でイベントキュー３７をクリアし、周期動作処理が利用する最新の動作情報を周期処理部３３に返す。ステップＳ４９は、周期処理部３３で取得した動作情報を利用して周期動作処理を実行し、処理はステップＳ４０へ戻る。
【００５８】
永続動作情報は、例えば「A：カーテンが開いているか」といった情報である。動作定義情報は、例えば「B：眠いかどうか/C：既に挨拶したか」、「D：既に挨拶されたか/E：インタラクション回数」といった情報である。リアルタイム情報は、例えば「F：声をかけられた／G：触られた」といった情報である。
【００５９】
又、イベント処理は、例えば「カーテン開閉イベント→Aを更新」、「タッチセンサイベント→Gを更新/Eをインクリメント」、「発話検知イベント→Fを更新/Eをインクリメント」、「挨拶検知イベント→Dを更新/Eをインクリメント」等を処理を含む。
【００６０】
この場合、周期動作処理は、例えば次のような処理を含む。
・（!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)
→気持ちよさそうな動作をランダムで実行する。
【００６１】
又、ロボット２４の起床時のインタラクションは、例えば次のような振る舞いを含む。
・眠そうな動作をする。
・ユーザの顔を見つけたら挨拶をする。
・眠い時にユーザの顔を見つける前に声をかけられたり触られたりしたら驚く。
・挨拶のやり取りがあれば喜ぶ。
・ある程度インタラクションを重ねると目が覚めてきてしゃきっとしてくる。
・挨拶が済んだらカーテンを開けて欲しがる。
・日の光を浴びると気持ちよさそうにする。
【００６２】
（第４実施例）
図１０は、第４実施例におけるシステムの一例を示す機能ブロック図である。図１０中、図２と同一部分には同一符号を付し、その説明は省略する。図１０中、実線、破線等の矢印の意味は、図４の場合と同様である。
【００６３】
複数イベントから動作情報を生成する場合や、前回の周期動作と今回の周期動作との差分情報等を求める場合、イベント毎に判断して動作情報を更新するのでは効率的な処理の実行は難しい。そこで、本実施例では、動作情報同期処理で動作情報を取り出す時に動作情報を更新する。具体的には、動作情報更新処理定義３２−４を動作情報管理部３２における動作定義に追加し、動作情報管理部３２が動作情報同期処理を行うタイミングで動作情報を更新することで、更に多様なインタラクションの定義が可能となる。
【００６４】
図１２は、第４実施例におけるデータの流れを説明する図であり、動作情報定義、イベント処理定義、及び周期動作処理定義を示す。この例では、イベント処理定義３２−１はイベント処理Ｘ(a, b, ...)を定義しており、動作情報定義３２−２，３３−１は動作情報Ａ，Ｂ，Ｃ，...を定義しており、動作情報更新処理定義３２−４は動作情報Ｃ，Ａ，Ｂ，...を定義している。動作情報３２−３，３３−３は動作情報Ａ，Ｂ，Ｃ，...の値を含み、周期動作処理定義３３−２はロボット２４に周期動作を行わせるアクションＰ，...のアクション指示を定義している。
【００６５】
図１３は、第４実施例における処理の一例を説明するフローチャートである。図１３に示す動作情報同期処理は、動作情報管理部３２により実行される。図１３において、ステップＳ５１は、イベント処理の排他制御を行う。ステップＳ５２は、動作情報更新処理定義３２−４が追加された動作情報を取り出す時に動作情報を更新する動作情報の更新処理を実行する。ステップＳ５３は、更新処理で更新された動作情報のコピーを作成し、ステップＳ５４は、動作情報のリアルタイム情報をクリア（即ち、初期化）する。ステップＳ５５は、イベントキュー３７をクリアし、ステップＳ５６は、イベント処理の排他制御を解除する。ステップＳ５７は、ステップＳ５３で作成した動作情報のコピーをリクエスト元の周期処理部３３に返し、処理は終了する。
【００６６】
上記の各実施例によれば、多様なインタラクションの内容をサーバからインタラクションシステムを介してロボットにネットワーク配信し、スムーズにインタラクションの内容を切り替えることが可能となる。生活リズム、生活シーン、個人の嗜好等に合わせた内容のインタラクションの提供が可能となり、ユーザと一緒に生活しながらユーザを見守る共生型ロボットによりサービスを提供する場合等に好適である。更に、インタラクションの整合性を保つように周期動作処理及び非同期イベント処理の実行内容を変更するので、コミュニケーションロボットやその他のインタラクティブ装置（又は、ネットワーク機器）が動的に動作を変更して環境又はリクエストに適応するようなアプリケーションを容易に構築可能となる。
【００６７】
図１４は、インタラクションシステムの構成の一例を示すブロック図である。図１４に示すインタラクションシステム２３は、汎用のコンピュータシステムと同様の構成を有する。インタラクションシステム２３は、図１４に示す如く接続されたプロセッサの一例であるＣＰＵ（Central Processing Unit）５０１、記憶部５０２、テンキー等を含む入力部５０３、表示部５０４、及び通信部５０５を有する。この例では、記憶部５０２、入力部５０３、表示部５０４、及び通信部５０５がバス５０７を介してＣＰＵ５０１に接続されているが、バス５０７を用いることなく記憶部５０２、入力部５０３、表示部５０４、及び通信部５０５を夫々直接ＣＰＵ５０１に接続した構成であっても良い。バス５０７を介さずに直接ＣＰＵ５０１と信号の送受信を行う場合、バス５０７上のトラフィックの問題が軽減できる。
【００６８】
ＣＰＵ５０１は、インタラクションシステム２３全体の制御を司り、ロボット２４のアクションを指示するアクション指示を出力してロボット２４のインタラクションを制御するインタラクション制御プログラムを含む各種プログラムを実行することでインタラクションシステム２３の各機能を実現できる。記憶部５０２は、ＣＰＵ５０１が実行するプログラム、及びＣＰＵ５０１が実行する算出処理等の中間データ、イベントキュー３７、イベント処理定義３２−１、動作情報定義３２−２，３３−１、動作情報３２−３，３３−３、同期動作処理定義３３−２等を含む各種データを格納する。記憶部５０２は、例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等で形成可能である。入力部５０２は、インタラクションシステム２３にコマンドやデータを入力する際にユーザにより操作される。表示部５０３は、入力部５０２からの入力情報、ユーザへのメッセージ、各種操作メニュー等を表示する。通信部５０５は、送信機及び受信機を有し、サーバ２２、ロボット２４、及び他のシステム２５等と有線又は無線ネットワークを介した通信を行う。
【００６９】
インタラクションシステム２３に少なくともインタラクション制御機能を持たせるプログラム（インタラクション制御プログラム）は、ＣＰＵ５０１にインタラクション制御処理を実行させる。プログラムは、コンピュータ読み取り可能な記憶媒体に格納されていても良い。コンピュータ読み取り可能な記憶媒体は、例えばＩＣ（Integrated Circuit）カードメモリ等の半導体記憶装置、フロッピー（登録商標）ディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の可搬型記録媒体に限定されるものではなく、ＣＰＵ５０１でアクセス可能な各種記録媒体を含む。又、コンピュータ読み取り可能な記憶媒体は、例えば記憶部５０２で形成されても良い。
【００７０】
図１５は、ロボットの構成の一例を示すブロック図である。図１５に示すロボット２４は、汎用のコンピュータシステムと同様の構成を含む。ロボット２４は、図１５に示す如く接続されたプロセッサの一例であるＣＰＵ６０１、記憶部６０２、テンキー等を含む入力部６０３、表示部（発光素子等の表示機器を含む）やスピーカ等を含む出力部６０４、通信部６０５、及びカメラ、マイクロホン、ＧＰＳ（Global Positioning System）センサ等の外的センサ及びモータ回転角度センサ等の内部センサを含むセンサ部６０６を有する。マイクロホンは、入力部６０３に含まれていても良い。この例では、記憶部６０２、入力部６０３、出力部６０４、通信部６０５、及びセンサ部６０６がバス６０７を介してＣＰＵ６０１に接続されているが、バス６０７を用いることなく記憶部６０２、入力部６０３、出力部６０４、通信部６０５、及びセンサ部６０６を夫々直接ＣＰＵ６０１に接続した構成であっても良い。バス６０７を介さずに直接ＣＰＵ６０１と信号の送受信を行う場合、バス６０７上のトラフィックの問題が軽減できる。尚、ロボット２４の可動部、可動部を駆動するモータ等の図示は省略する。図１５に示す如きハードウェア構成を有するロボット２４自体は周知である。
【００７１】
ＣＰＵ６０１は、ロボット２４全体の制御を司り、アクション指示に基づいてロボット２４のアクションを制御するアクション制御プログラムを含む各種プログラムを実行することでロボット２４の各機能を実現できる。記憶部６０２は、ＣＰＵ６０１が実行するプログラム、及びＣＰＵ６０１が実行する算出処理等の中間データ等を含む各種データを格納する。記憶部６０２は、例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）等で形成可能である。入力部６０２は、ロボット２４にコマンドやデータを入力するのに用いられる。出力部６０３は、ユーザへのメッセージ等を出力する。通信部６０５は、送信機及び受信機を有し、インタラクションシステム２３と有線又は無線ネットワークを介した通信を行う。通信部６０５は、例えばインタラクションシステム２３と有線通信を行い、他のシステム２５とは無線通信を行うようにしても良い。
【００７２】
ロボット２４に少なくともアクション制御機能を持たせるプログラム（アクション制御プログラム）は、ＣＰＵ６０１にアクション制御処理を実行させる。プログラムは、コンピュータ読み取り可能な記憶媒体に格納されていても良い。コンピュータ読み取り可能な記憶媒体は、例えばＩＣ（Integrated Circuit）カードメモリ等の半導体記憶装置、フロッピー（登録商標）ディスク等の磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の可搬型記録媒体に限定されるものではなく、ＣＰＵ６０１でアクセス可能な各種記録媒体を含む。又、コンピュータ読み取り可能な記憶媒体は、例えば記憶部６０２で形成されても良い。
【００７３】
言うまでもなく、ＣＰＵ６０１は、アクション制御機能に加え、各種プログラムを実行することでロボット２４の会話機能、位置推定機能等の各種機能を更に実現しても良い。
【００７４】
上記の各実施例において、ロボットはインタラクティブ装置の一例であり、開示のインタラクションシステムはロボット以外のインタラクティブ装置のインタラクションを制御するものであっても良い。この場合、インタラクティブ装置は、スマートホン（Smartphone）等の携帯端末を含み、スマートホンは本体部に装着されてロボットを形成するものであっても良い。従って、インタラクションシステム及びこのようなスマートホンと本体部の組み合わせを有するロボットシステムも、インタラクティブシステムの一例である。
【００７５】
又、必要に応じて上記の第１乃至第４実施例のうち２以上の実施例を適宜組み合わせても良い。
【００７６】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクションシステム。
（付記２）
前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第１の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第２の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第３の処理を行う動作情報管理部を更に備え、前記第１、第２、及び第３の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、付記１記載のインタラクションシステム。
（付記３）
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記２記載のインタラクションシステム。
（付記４）
前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、付記３記載のインタラクションシステム。
（付記５）
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記３又は４記載のインタラクションシステム。
（付記６）
前記動作情報管理部は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記２乃至５のいずれか１項記載のインタラクションシステム。
（付記７）
インタラクティブ装置と、
サーバ及び前記インタラクティブ装置と通信可能であり前記インタラクティブ装置のアクションを指示するアクション指示を出力するインタラクションシステムとを備え、
前記インタラクションシステムは、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信部と、
前記サーバから配信される、周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付部と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理部
を備えたことを特徴とする、インタラクティブシステム。
（付記８）
前記インタラクションシステムは、前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第１の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第２の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第３の処理を行う動作情報管理部を更に備え、前記第１、第２、及び第３の処理は夫々前記動作情報管理部により排他制御されることを特徴とする、付記７記載のインタラクティブシステム。
（付記９）
前記動作情報管理部は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記８記載のインタラクティブシステム。
（付記１０）
前記インタラクションシステムは、前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理部による更新と並行して行う周期処理部を更に備えたことを特徴とする、付記９記載のインタラクティブシステム。
（付記１１）
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理部は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記９又は１０記載のインタラクティブシステム。
（付記１２）
前記動作情報管理部は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記８乃至１１のいずれか１項記載のインタラクティブシステム。
（付記１３）
コンピュータに、インタラクティブ装置のアクションを指示するアクション指示を出力して前記インタラクティブ装置のインタラクションを制御するインタラクション制御処理を実行させるプログラムであって、
前記インタラクティブ装置の状態に関する非同期のイベント情報を受信する受信手順と、
周期的に実行されて前記インタラクティブ装置のアクションを指示するアクション指示を出力する周期動作処理を定義する周期動作処理定義、前記イベント情報に応じて前記インタラクションの内容の詳細に表す動作情報を更新するイベント処理定義、及び前記動作情報を定義する動作情報定義を受け付ける受付手順と、
前記周期動作処理定義、前記イベント処理定義、及び前記動作情報定義を一括で更新する更新処理手順
を前記コンピュータに実行させることを特徴とする、プログラム。
（付記１４）
前記イベント情報に応じたイベント処理を適用して前記動作情報定義を更新すると同時に前記イベント情報をイベントキューに格納する第１の処理と、動作情報同期処理のリクエストに応答してその時点での前記動作情報を前記リクエストのソースに返すと共に前記イベントキューをクリアする第２の処理と、新たな動作定義を渡されると前記動作定義を更新すると共に前記イベントキューから全イベント情報を取得して順に各イベント情報のイベント処理を行う第３の処理を行う管理手順
を前記コンピュータに更に実行させ、
前記第１、第２、及び第３の処理は夫々前記管理手順により排他制御されることを特徴とする、付記１３記載のプログラム。
（付記１５）
前記管理手順は、前記イベント情報が反映された動作情報が、前記イベント処理により更新される動作情報に基づき前記インタラクティブ装置のアクションを決定して指示する周期動作処理で利用されるとその時の動作情報に反映済みのイベント情報を破棄することを特徴とする、付記１４記載のプログラム。
（付記１６）
前記周期動作定義、前記イベント処理定義、及び動作情報定義が更新される前の周期動作処理を、前記更新処理手順による更新と並行して行う周期処理手順
を前記コンピュータに更に実行させることを特徴とする、付記１５記載のプログラム。
（付記１７）
前記動作情報は、生存期間の属性として永続動作情報、動作定義情報、及びリアルタイム情報のいずれかが付加されており、
前記永続動作情報は動作定義が更新されても保持される情報であり、前記動作定義情報は動作定義が更新される時に破棄される情報であり、前記リアルタイム情報は動作情報が一度周期動作処理で利用されると破棄される情報であり、
前記周期処理手順は、前記動作情報に付加された属性に応じた周期動作を前記インタラクティブ装置に行わせるアクション指示を前記周期動作処理により出力することを特徴とする、付記１５又は１６記載のプログラム。
（付記１８）
前記管理手順は、動作情報更新処理定義を前記動作定義に追加し、前記動作情報同期処理を行うタイミングで前記動作情報を更新することを特徴とする、付記１４乃至１７のいずれか１項記載のプログラム。
（付記１９）
サーバにインタラクションの内容の配信をリクエストする手順
を前記コンピュータに更に実行させることを特徴とする、付記１３乃至１８のいずれか１項記載のプログラム。
（付記２０）
前記サーバと前記コンピュータとの間の通信にＨＴＴＰ（Hyper Test Transfer Protocol）を用いることを特徴とする、付記１９記載のプログラム。
【００７７】
以上、開示のインタラクションシステム、インタラクティブシステム及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００７８】
２１      システム
２２      サーバ
２３      インタラクションシステム
２４      ロボット
３１      イベント受信部
３２      動作情報管理部
３３      周期処理部
３４      動作定義受付部
３５      動作定義更新部
３６      動作定義更新判定部
３７      イベントキュー
５０１，６０１      ＣＰＵ
５０２，６０２      記憶部
【図１】
0005834677.tif 000002
【図２】
0005834677.tif 000003
【図３】
0005834677.tif 000004
【図４】
0005834677.tif 000005
【図５】
0005834677.tif 000006
【図６】
0005834677.tif 000007
【図７】
0005834677.tif 000008
【図８】
0005834677.tif 000009
【図９】
0005834677.tif 000010
【図１０】
0005834677.tif 000011
【図１１】
0005834677.tif 000012
【図１２】
0005834677.tif 000013
【図１３】
0005834677.tif 000014
【図１４】
0005834677.tif 000015