JP2018073303A - イベント制御装置、イベント制御方法、及びプログラム - Google Patents

イベント制御装置、イベント制御方法、及びプログラム Download PDF

Info

Publication number
JP2018073303A
JP2018073303A JP2016215679A JP2016215679A JP2018073303A JP 2018073303 A JP2018073303 A JP 2018073303A JP 2016215679 A JP2016215679 A JP 2016215679A JP 2016215679 A JP2016215679 A JP 2016215679A JP 2018073303 A JP2018073303 A JP 2018073303A
Authority
JP
Japan
Prior art keywords
event
queue
event information
priority
control apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016215679A
Other languages
English (en)
Inventor
知拓 坊屋鋪
Tomohiro Boyashiki
知拓 坊屋鋪
由香 上水流
Yuka Kamisuiryu
由香 上水流
実 梅枝
Minoru Umeeda
実 梅枝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Communications Corp
Original Assignee
NTT Communications Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NTT Communications Corp filed Critical NTT Communications Corp
Priority to JP2016215679A priority Critical patent/JP2018073303A/ja
Publication of JP2018073303A publication Critical patent/JP2018073303A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Manipulator (AREA)

Abstract

【課題】イベントの発生を契機として処理を実行するシステムにおいて、イベントの優先度に応じて、適切に処理を実行することを可能とする技術を提供する。【解決手段】受信したイベント情報を出力するための制御を行うイベント制御装置において、優先度毎のキューを有するマルチキューと、受信したイベント情報の優先度に対応するキューに、当該イベント情報を格納する入力制御手段と、イベント情報取得要求を受信した場合に、前記マルチキューにおける出力可能なイベント情報を格納するキューのうち、最も優先度の高いキューからイベント情報を取得し、出力する出力制御手段とを備える。【選択図】図2

Description

本発明は、各種のデバイス等から受信したイベント情報の出力制御を行う技術に関連するものである。
近年、家庭用ロボットの技術向上は著しく、高性能なロボットを安価に購入することが可能となってきている。家庭用ロボットの中でも、コミュニケーション能力に特化したロボット(以下コミュニケーションロボット)は、気軽に購入できるだけでなく、簡単な商品の説明、客の呼び込みや受付対応といった接客業務に利用することができるため、注目されている。
コミュニケーションロボットでは、工場等で使用される従来のロボットと比較して、人間らしい振る舞いが求められる。従来のロボット制御方式では、通知された全てのイベントを順番に処理するシーケンス制御が一般的である。
例として、あるディベロッパーツールでは、有限オートマトンのように状態XでイベントIを受信したら処理Fを実行するといった、シーケンス制御でロボットを制御する。従って、状態Xで受信可能なイベントI以外のイベントを受信した場合、そのイベントを破棄することになる。
また、非特許文献1に開示されているR−envではキューを用いることで受信したイベントをプールし、全てのイベントを破棄することなく、実行する。
細淵 貴司、山田 智広 : AI を活用したロボットなど,デバイス連携サービスを容易に開発可能とする技術「R−env:連舞(r)」、エレクトロニクス実装学会誌 Vol. 19 No. 6 (2016)
しかしながら、人間らしい振る舞いが求められるコミュニケーションロボットでは、必ずしも通知された全てのイベントを処理することが人間らしい振る舞いになるとは限らない。例えば、カメラによる人認識や音声による呼びかけを契機として接客を行うロボット(以下接客ロボット)について考えると、ロボットがある処理を実行中にお客様(お客様Aとする)からのアクションとして、商品に関する質問を受けた(契機イベントが発生した)場合、ロボットは実行中の処理が終了した後に、お客様Aからのイベントを処理する。しかし、実行中の処理が終了するまでに時間がかかった場合、お客様Aが接客用ロボットの前に留まっているとは限らない。場合によっては、接客ロボットからお客様Aが離れ、別のお客様が接近してきた時に、お客様Aからの質問に対する商品の説明を行う可能性がある。また、新しいお客様が来店したタイミングで、別のお客様が商品に関して質問した場合、一般的な人間ならば商品について質問してきたお客様の対応を先に行う。しかし、従来の制御手法では、来店客の対応を先に行う可能性がある。
すなわち、イベントの発生を契機として処理を実行するコミュニケーションロボット等のシステムにおいて、従来技術では、イベントの優先度に応じて、適切に処理を行うことができなかった。なお、このような問題は、コミュニケーションロボットに限らず、イベントの発生を契機として処理を実行する他のシステムにも発生し得る問題である。
本発明は上記の点に鑑みてなされたものであり、イベントの発生を契機として処理を実行するシステムにおいて、イベントの優先度に応じて、適切に処理を実行することを可能とする技術を提供することを目的とする。
開示の技術によれば、受信したイベント情報を出力するための制御を行うイベント制御装置であって、
優先度毎のキューを有するマルチキューと、
受信したイベント情報の優先度に対応するキューに、当該イベント情報を格納する入力制御手段と、
イベント情報取得要求を受信した場合に、前記マルチキューにおける出力可能なイベント情報を格納するキューのうち、最も優先度の高いキューからイベント情報を取得し、出力する出力制御手段と
を備えることを特徴とするイベント制御装置が提供される。
開示の技術によれば、イベントの発生を契機として処理を実行するシステムにおいて、イベントの優先度に応じて、適切に処理を実行することを可能とする技術が提供される。
本発明の実施の形態におけるイベント処理システムの全体構成図である。 イベント制御装置100の機能構成図である。 キューを説明するための図である。 イベント制御装置100のハードウェア構成図である。 イベント処理システムにおける基本的な処理の流れを説明するためのシーケンス図である。 優先度別に要素をエンキューする動作を説明するための図である。 複数の優先度の要素がエンキューされる場合の処理の流れを説明するためのシーケンス図である。 後に発生したイベントの要素が先にエンキューされる場合のキューの動作を説明するための図である。 後に発生したイベントの要素が先にエンキューされる場合の処理の流れを説明するためのシーケンス図である。 タイムアウト処理を説明するための図である。 全体動作例を説明するための図である。 イベント制御装置100の動作を示すフローチャートである。
以下、図面を参照して本発明の実施の形態(本実施の形態)を説明する。以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。例えば、本実施の形態では、本発明に係るイベント制御技術をコミュニケーションロボットに適用する例を示しているが、これは一例である。本発明に係るイベント制御技術をコミュニケーションロボット以外のシステムに適用することも可能である。
また、以下では、基本的に、センサ等のデバイスが検知する事象(例:人がある商品についての質問をすること)を「イベント」と呼び、イベントを検知したデバイスが送信する情報を「イベント情報」と呼び、キューに格納される情報及びキューから出力される情報を、「イベント情報」又は「要素」と呼ぶ。また、イベントを検知したデバイスが送出する情報を「メッセージ」と呼ぶ場合もある。
ただし、本明細書及び特許請求の範囲において、「イベント」は、センサ等のデバイスが検知する事象に限られるわけではなく、当該事象以外も含まれる。
例えば、本発明は、優先度に応じてデータの処理を行って、優先度の低いデータは破棄してかまわないようなデータを扱うシステム全般に適用でき、「イベント」には、当該システムで扱われるデータに関連する事象全般が含まれる。
より具体的には、例えば、本発明をウェアラブル端末等で人に情報(天気の通知、人が位置する場所の見どころ等)を提供する仕組みに適用してもよい。この場合において、「イベント」は、天気の変化である場合もあるし、人の位置である場合もあるし、その他の事象である場合もある。当該イベントの発生を示すイベント情報は、イベント制御装置(ウェアラブル端末等)が他の装置から受信する場合もあるし、イベント制御装置自身が取得する(つまり、外部環境から受信する)場合もある。
また、提供する情報を選別する条件として、本実施の形態のように時間を使用することは一例である。提供する情報を選別する条件として時間に関する条件以外の条件(例:位置に関する条件)を使用してもよい。
(概要)
本実施の形態では、イベント制御装置100により、コミュニケーションロボットが、重要度の高いイベントから優先して処理することを可能としている。また、イベント発生時刻が古すぎる場合に、当該イベントに対する処理を行うことなく次のイベントを処理することも可能としている。これらにより、コミュニケーションロボットが従来よりも人間らしい振る舞いを行うことが可能となる。
上記動作を可能ならしめるために、イベント制御装置100は、優先度毎のキューを備える。コミュニケーションロボットに対してイベント情報をデキューする際には、優先度の高いキューからイベント情報を順にデキューすることで、重要なイベントを優先的に処理することを可能としている。
キューの中にエンキューする要素は、イベントの識別情報、及びイベント発生時刻(タイムスタンプ)を含む。イベント制御装置100は、コミュニケーションロボットへのイベント情報のデキューに際し、タイムスタンプと現在の時刻とを比較し、X秒以上前に発生したイベントのイベント情報を無視する。
複数のデバイスから発生したイベントを一つのキューにエンキューする場合、後に発生したイベントが先にエンキューされる可能性がある。本実施の形態ではキューの先頭(先にエンキューされた要素)からK個の要素間のイベント発生時刻を比較することで、先に発生したイベントを先に処理することを可能としている。
(システム全体構成)
図1に、本実施の形態におけるイベント処理システムの全体構成図を示す。図1に示すように、当該イベント処理システムは、イベント制御装置100、コミュニケーションロボット200、複数のセンサ300、複数の端末400を含む。また、コミュニケーションロボット200は、イベント処理機能部210を有する。
イベント制御装置100は、コミュニケーションロボット200内の装置(機能)であってもよいし、コミュニケーションロボット200の外部の装置であってもよい。いずれの場合も、イベント制御装置100は、センサ300や端末400等のデバイスから発出されるイベント情報を受信し、当該イベント情報を、優先度毎に、各優先度専用のキューにエンキューする。なお、デバイスの数は1つであってもよい。また、イベント制御装置100は、コミュニケーションロボット200が有するイベント処理機能部210からデキュー要求を受けた場合に、X秒以内に発生したイベントの内、最も優先度の高いイベントのイベント情報をデキューし、当該イベント情報をイベント処理機能部210に送信する。
センサ300は、コミュニケーションロボット200の内部のデバイスであってもよいし、コミュニケーションロボット200の外部のデバイスであってもよい。図1では、外部のデバイスのイメージを示している。
各センサ300は、例えば、マイクを有するデバイス、カメラを有するデバイス、タッチセンサを有するデバイス等である。あるセンサ300は、人から話しかけられると、例えば、話の内容(例:商品に対する質問)に対応するイベントを検知し、当該イベントの発生を通知するイベント情報をイベント制御装置100に送信する。また、例えば、あるセンサ300は、顔が近づくと、その顔の人物に対応するイベントを検知し、当該イベントの発生を通知するイベント情報をイベント制御装置100に送信する。また、例えば、あるセンサ300は、なでられる(例:ロボットの頭をなでる)と、それに対応するイベントを検知し、当該イベントの発生を通知するイベント情報をイベント制御装置100に送信する。イベント情報には、イベントID、イベント発生時刻、及び優先度が含まれる。なお、デバイスが送信するイベント情報には優先度が含まれないこととしてもよい。その場合、例えば、イベント制御装置100が、イベント情報の送信元のデバイス及び/又は当該イベント情報の元となる情報(例:センサが検知した音声/映像等の情報)等に基づいて、優先度を決定することができる。
図1に示すように、イベント情報は、ユーザが操作する端末400から送信することも可能である。端末400は、例えば、スマートフォン、PC等である。
コミュニケーションロボット200におけるイベント処理機能部210は、イベント制御装置100から取得するイベント情報を解釈し、コミュニケーションロボット200にイベントに応じた動作を実行させる。より具体的には、イベント処理機能部210は、コミュニケーションロボット200において、あるイベントに対応して現在行われている処理を終了する度に、イベント制御装置100に対して、デキュー要求を行うことで、イベント情報のデキューが可能かどうかを問い合わせる。デキュー可能な場合に、イベント制御装置100からイベント情報を取得し、処理を行う。
以下、イベント制御装置100の構成と動作をより詳細に説明する。
(イベント制御装置100の構成)
図2に、イベント制御装置100の機能構成図を示す。図2に示すように、イベント制御装置100は、入力部101、キュー部102、出力部103、及び制御部104を有する。
入力部101は、イベント情報を受信し、当該イベント情報をキュー部102に渡す。キュー部102は、優先度毎のキューからなる複数のキュー(マルチキューと呼ぶ)を有する。制御部104により、イベント情報が、対応する優先度のキューに格納される。制御部104は、イベント情報のキューへの格納、及びイベント情報のデキューに係る制御を行う。以降で説明するイベント制御装置100における制御動作は、主に制御部104により実行されるものである。
なお、制御部104における入力に係る機能を入力部101に含め、制御部104における出力に係る機能を出力部103に含めることで、制御部104を備えないこととしてもよい。
<マルチキューの構成>
図3に、キューの構成例を示す。図3の(a)に示すように、キュー部102が備えるマルチキューは、優先度毎のキューを含む。制御部104は管理用配列を有する。マルチキューにおける各キューの実体は、メモリの記憶領域であり、ソフトウェア上では配列で表現される。管理用配列は、キューの数(=優先度の数)を示す最大優先度と、各キューへのポインタ(キューのアドレス)を有する。
なお、各優先度のキューはそれぞれ独立しているため、キュー毎に設定を変更することが可能である。
また、制御部104は、キュー毎に、(b)に示す管理情報を保持する。管理情報は、キュー内に存在する全要素数、デキューする際に比較する要素数、及びタイムアウト時間を保持する。また、(b)に示すように、各キューにエンキューされる各要素は、イベント発生時刻(タイムスタンプ)、イベントID、及び優先度を保持している。なお、キューと優先度とは対応付けられるので、各要素は優先度を含まないこととしてもよい。
<イベント制御装置100のハードウェア構成例>
本実施の形態に係るイベント制御装置100は、例えば、コンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。当該コンピュータは、コミュニケーションロボット200内のコンピュータ(=メモリとCPU等を有する構成)でもよいし、コミュニケーションロボット200外のコンピュータでもよい。
すなわち、イベント制御装置100が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、イベント制御装置100で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
なお、イベント制御装置100が保持するキューについては、上記のプログラムにより実現されてもよいし、上記のプログラム以外の機構で実現されてもよい。
図4は、イベント制御装置100をコンピュータで実現する場合における当該装置のハードウェア構成例を示す図である。図4に示すイベント制御装置100は、それぞれバスBで相互に接続されているドライブ装置150、補助記憶装置152、メモリ装置153、CPU154、インタフェース装置155、表示装置156、及び入力装置157等を有する。
当該イベント制御装置100での処理を実現するプログラムは、例えば、CD−ROM又はメモリカード等の記録媒体151によって提供される。プログラムを記憶した記録媒体151がドライブ装置150にセットされると、プログラムが記録媒体151からドライブ装置150を介して補助記憶装置152にインストールされる。但し、プログラムのインストールは必ずしも記録媒体151より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置152は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
メモリ装置153は、プログラムの起動指示があった場合に、補助記憶装置152からプログラムを読み出して格納する。CPU154(プロセッサ)は、メモリ装置153に格納されたプログラムに従って当該装置に係る機能を実現する。インタフェース装置155は、ネットワークに接続するためのインタフェースとして用いられる。表示装置156はプログラムによるGUI(Graphical User Interface)等を表示する。入力装置157はキーボード及びマウス、ボタン、又はタッチパネル等で構成され、様々な操作指示を入力させるために用いられる。
図4に示すイベント制御装置100がコミュニケーションロボット200内に備えられる場合において、例えば、イベント処理機能部210は、バスBに接続される。また、バスBには、コミュニケーションロボット200のモータ等を制御する制御回路が接続されてもよい。
(基本的な動作例)
図5を参照して、本実施の形態におけるイベント処理システムの基本的な動作例を説明する。
ステップS101において、イベント制御装置100は要求待ちの状態にある。ステップS102において、イベント制御装置100は、センサ300からイベント情報を受信する。イベント情報には、イベントID、タイムスタンプ、優先度が含まれる。ステップS103において、イベント制御装置100は、イベント情報を解読し、当該イベント情報に含まれる優先度に対応するキューに、イベント情報をエンキューする。
ステップS104において、イベント制御装置100は、イベント処理機能部210からデキュー要求を受信する。イベント制御装置100は、デキューする要素を選択し、当該要素(イベント情報)をキューから取得して、イベント処理機能部210に通知する(ステップS105、S106)。ステップS107〜S111において、別のセンサ300から送信されるイベント情報により、ステップS102〜S106と同様の処理が行われる。
上記のとおり、本実施の形態におけるイベント処理システムにおいて、各デバイスはイベント発生時刻(タイムスタンプ)、イベントID、優先度を含むイベント情報をイベント制御装置100へ通知する。イベント制御装置100は、例えば複数のデバイスからイベント情報を受信する。イベント制御装置100は受信した各イベント情報を優先度別に独立したキューへエンキューする。更に、イベント制御装置100は、イベント発生タイミングによるFIFO動作、及びタイムアウト動作を実行する。
以下、「複数デバイスから受信したイベント情報を優先度別にエンキューする動作」、「イベント発生タイミングによるFIFO動作」、及び「タイムアウト動作」のそれぞれについてより詳細に説明する。
(複数デバイスから受信したイベント情報を優先度別にエンキューする動作例)
まず、イベント情報を優先度別にエンキューする動作例を説明する。イベント制御装置100は、受信する可能性のあるイベント情報の優先度毎に専用のキューを保持し、受信したイベント情報を、当該イベント情報に対応する優先度専用のキューにエンキューする。
一例を図6に示す。図6は、イベント制御装置100が、センサ1,2,3からイベント情報を受信する例を示す。本例において、センサ1とセンサ2は優先度1のイベント情報を通知し、センサ3は優先度2のイベント情報を通知する。従って、イベント制御装置100は、センサ1とセンサ2から受信したイベント情報を優先度1専用のキューにエンキューし、センサ3から受信したイベント情報を優先度2専用のキューにエンキューする。各キューには、対応する優先度のイベント情報を受信した順番で、イベント情報が格納される。
コミュニケーションロボット200において現在行っている処理が終了すると、イベント処理機能部210からイベント制御装置100へデキュー処理が要求される。イベント制御装置100は、イベント処理機能部210からデキュー要求を受信すると、優先度の高いキューから順にデキュー可能か否かを調べ、デキュー可能なキューのうち最も優先度の高いキューからデキューを行う。なお、デキュー可能なキューとは、要素が存在するキューである。また、デキュー可能なキューとは、タイムアウトしていない要素が存在するキューであることとしてもよい。
図6に示す例では、優先度1専用キューが要素を持っているため、優先度1専用キューからデキューされる。仮に優先度1専用キューが空であった場合、次に優先度の高い優先度2専用キューからデキューされる。
図7は、複数の優先度の要素がエンキューされる場合の処理の流れを示すシーケンス図である。
ステップS202において、イベント制御装置100は、センサ300から、優先度2のイベントYが10:12に発生したことを示すイベント情報を受信する。ステップS203において、イベント制御装置100は、イベントIDがY、タイムスタンプが10:12を格納した要素を優先度2のキューにエンキューする。
続いて、ステップS204において、イベント制御装置100は、別のセンサ300から、優先度1のイベントXが10:13に発生したことを示すイベント情報を受信する。ステップS205において、イベント制御装置100は、イベントIDがX、タイムスタンプが10:13を格納した要素を優先度1のキューにエンキューする。
ステップS206において、イベント制御装置100は、イベント処理機能部210からデキュー要求を受信する。イベント制御装置100は、デキューする要素として優先度1のイベントXの要素を選択し(ステップS207)、選択した優先度1のイベントXを示すイベント情報をイベント処理機能部210に通知する(ステップS208)。
(イベント発生タイミングによるFIFO動作例)
次に、イベント発生タイミングによるFIFO動作例を図8、図9を参照して説明する。イベント制御装置100は、複数のデバイスからイベント情報を受信し、受信した順番でイベント情報のエンキュー処理を行うため、イベント発生時刻とエンキュー処理のタイミングが逆転する可能性がある。
図8は、センサ1で12:50に優先度1のイベント情報が発生し、センサ2で12:51に優先度1のイベント情報が発生した場合の例を示している。本来であれば、先に発生したセンサ1のイベント情報が先にエンキューされるべきであるが、図8の例では、通信時の遅延やマルチスレッドの制御等の理由からセンサ2で発生したイベントが先にエンキューされている。
そこで、本実施の形態に係るイベント制御装置100は、本事象への対策として、デキュー時にキューの先頭からK個(Kは比較要素数であり、0以上の整数である)の要素のタイムスタンプを比較し、最も古いイベント情報をデキューすることとしている。図8の例では、キューの先頭K個の中で最も古いイベントが11:23に発生したイベントであるため、11:23に発生したイベントのイベント情報をデキューしている。なお、キューの先頭からK個の要素のタイムスタンプを比較し、最も古いイベント情報をデキューすることは一例に過ぎない。この条件以外の所定の条件に基づいてデキューを行うこととしてもよい。例えば、所定の位置あるいはエリアを示すイベント情報がキューにある場合に、当該イベント情報をデキューすることとしてもよい。
図9は、後に発生した要素が先にエンキューされる場合の処理の流れを示すシーケンス図である。
ステップS302において、イベント制御装置100は、センサ300から、優先度1のイベントXが12:51に発生したことを示すイベント情報を受信する。ステップS303において、イベント制御装置100は、イベントIDがX、タイムスタンプが12:51を格納した要素を優先度1のキューにエンキューする。
続いて、ステップS304において、イベント制御装置100は、別のセンサ300から、優先度2のイベントYが12:50に発生したことを示すイベント情報を受信する。ステップS305において、イベント制御装置100は、イベントIDがY、タイムスタンプが12:50を格納した要素を優先度1のキューにエンキューする。
ステップS306において、イベント制御装置100は、イベント処理機能部210からデキュー要求を受信する。イベント制御装置100は、デキューする要素として、発生時刻が早い(古い)ほうの優先度1のイベントYの要素を選択し(ステップS307)、選択した優先度1のイベントYを示すイベント情報をイベント処理機能部210に通知する(ステップS308)。
(タイムアウト処理)
次に、タイムアウト処理について図10を参照して説明する。本実施の形態に係るイベント制御装置100は、一定時間(X秒)以上古いイベント情報を、処理することなく破棄することとしている。すなわち、イベント制御装置100は、例えば要素をデキューするタイミングで、キュー内に現在時刻よりもX秒以上古いイベントの要素が存在すると、その要素を当該キューから破棄する。「X秒」は、図3(b)に示したタイムアウト時間として、キュー毎に予め設定される値である。なお、タイムアウト時間は、マルチキュー全体に対して設定される値(各キューに共通の値)であってもよいし、設定するのではなく、キュー毎にあるいはキュー共通に予め定められた固定値であってもよい。なお、一定時間(X秒)以上古いイベント情報を破棄することは一例に過ぎない。この条件以外の所定の条件に基づいて破棄を行うこととしてもよい。例えば、所定の位置あるいはエリアに存在しないことを示すイベント情報を破棄することとしてもよい。
図10に示す例では、7秒以上古いイベントを破棄する設定のキューにおける、現在時刻(デキュータイミング)が12:52:34である場合の例である。本例では、12:52:26に発生したイベントが現在時刻よりも7秒以上古いため、このイベントの要素を処理することなく破棄している。なお、タイムアウト判定/要素破棄の処理を行うタイミングは、要素をデキューするタイミングに限らず、他のタイミングであってもよい。例えば、一定時間間隔で、各キューに対し、タイムアウト判定/要素破棄の処理を行ってもよい。
(全体動作例)
上述した3つの動作をまとめた全体の動作例を図11を参照して説明する。
<イベント情報通知動作>
図11に示す例では、イベント制御装置100は、センサ1とセンサ2から優先度2のイベント情報を受信し、センサ3から優先度3のイベント情報を受信する。図11に示すとおり、各センサから受信したイベント情報は、当該イベント情報の優先度に対応するキューへエンキューされる。
<イベント情報デキュー動作>
図11に示すとおり、本例のイベント制御装置100は、優先度1,2,3専用のキューをそれぞれ保持している。また、優先度専用キュー毎に、時刻比較要素数とタイムアウト時間を保持している。時刻12:52:44にコミュニケーションロボット200のイベント処理機能部210が、イベント制御装置100に対してデキュー要求を行ったものとする。この場合、以下の流れでデキュー動作が実行される。
ステップS1)イベント制御装置100は、最も優先度の高い優先度1専用キューから、優先度順に、キューの要素がデキュー可能かどうかを検査する。図11に示すように、優先度1専用キューのタイムアウト時間は10秒であるのに対し、キュー内の要素は全て現在時刻より10秒以上過去に発生したイベントの要素であるため、イベント制御装置100は、優先度1専用キュー内の要素を全て破棄する。
ステップS2)イベント制御装置100は、次に優先度の高い優先度2専用キューにおける要素がデキュー可能かどうかを検査する。図11に示すように、優先度2専用キューの先頭3つの要素は全て現在時刻より6秒以内に発生したイベントであるため、破棄されない。
ステップS3)イベント制御装置100は、優先度2専用キューが、デキュー可能なキューのうち最も優先度が高いキューと判断しデキューを行うことを決定する。
ステップS4)優先度2専用キューの先頭3要素の中で最も古いイベントは12:52:39に発生したイベントであるため、12:52:39のイベントの要素がデキューされる。
(イベント制御装置100の処理フロー)
次に、図12に示すフローチャートを参照して、イベント制御装置100の詳細な処理フローを説明する。図12に示す例では、最も高い優先度の値は0であり、優先度の降順に1づつ値が増加する。優先度の数は「最大優先度」である。
まず、イベント制御装置100は要求待ちの状態である(ステップS401)。イベント制御装置100の入力部101から、受信したメッセージ(ここでは、イベント情報(=エンキュー要求)、又は、デキュー要求)が入力されると、制御部104は、当該メッセージがエンキュー要求か否かを判定する(ステップS402)。ステップS402における判定結果がYesの場合、処理はステップS403に進む。制御部104は、メッセージを解析し、優先度、イベントID、及びタイムスタンプを取得し(ステップS403)、イベントIDとタイムスタンプを格納した要素を、当該優先度に対応するキューにエンキューする(ステップS404)。なお、ステップS403、S404の動作を入力部101が行うこととしてもよい。処理が終了しない限り、エンキュー要求を受信する度にステップS403、S404の処理が実行される。
ステップS402での判定結果がNoである場合(つまり、デキュー要求を受信した場合)、ステップS406〜S414の側の処理に移る。ここでの処理では、基本的に、優先度毎にL1A〜L1Bで示すループが実行され、そのループの中で、L2A〜L2Bで示すループが実行される。ただし、優先度iにおいて、デキュー要素が選択されている場合には、ステップS411において、優先度iのループから抜ける。ステップを順番に説明すると以下のとおりである。
制御部104は、優先度iのキューに要素があるかどうかを判定する(ステップS406)。ステップS406での判定がNo(要素がない)の場合、iに1を加えることで、次の優先度iに移り、ステップS406からの処理を行う。
ステップS406での判定がYes(要素がある)の場合、L2A〜L2Bで示すループ(j=0から「比較要素数」まで、jを1づつ増加させるループ)に移る。なお、「比較要素数」は、現在の優先度iのキューに対応する「比較要素数」である。また、キューの先頭から0番目の要素は、キューの先頭の要素である。従って、例えば、図10における「キューの先頭から1番目の要素」は、タイムスタンプが12:52:30の要素である。
制御部104は、優先度iのキューの先頭からj番目の要素のタイムスタンプと現在時刻とを比較することにより、当該要素がタイムアウトしていないかどうかを判定する(ステップS407)。ここでのタイムアウト時間は、優先度iのキューに対応するタイムアウト時間である。
ステップS407の判定結果がNoの場合(タイムアウトしている場合)、制御部104は、優先度iのキューの先頭からj番目の要素を削除し(ステップS409)、jに1を加えて、ステップS407からの処理に戻る。
ステップS407の判定結果がYesの場合(タイムアウトしていない場合)、制御部104は、優先度iのキューの先頭からj番目の要素が、0〜j番目の要素(削除した要素を除く)の中で最も古いかどうかを判定する(ステップS408)。
ステップS408の判定結果がNoの場合(最も古くはない場合)、制御部104は、jに1を加えて、ステップS407からの処理に戻る。
ステップS408の判定結果がYesの場合(最も古い場合)、制御部104は、優先度iのキューの先頭からj番目の要素をデキュー要素として選択し(ステップS410)、jに1を加えて、ステップS407からの処理に戻る。ステップS410において、既に選択したデキュー要素がある場合は、現在のものに置き換える。
jに1を加えることにより、jが「比較要素数」に達すると、ステップS411に移る。ステップS411では、デキュー要素が選択されている場合に、優先度iのループ(L1A〜L1Bのループ)から抜ける。デキュー要素が選択されていない場合には、iに1を加えることにより、次の優先度iについてステップS406からの処理を行う。ステップS411でループを抜けない場合、iに1を加えることにより、iが最大優先度に達した時点で優先度iのループ(L1A〜L1Bのループ)から抜ける。
ステップS412において、制御部104は、デキュー要素が選択されているかどうかを判定する。ステップS412での判定結果がYesの場合、制御部104からの指示に基づき、出力部103が、デキュー要素を出力する。つまり、デキュー要素をイベント処理機能部210に送信する。ステップS412での判定結果がNoの場合、制御部104からの指示に基づき、出力部103が、NULLをイベント処理機能部210に送信する。
なお、上記のフローにおける処理では、制御部104は、キューにおける要素の削除処理をデキュー要求を受信したことに応じて行うこととしているが、デキュー要求の有無に関わらずに、例えば一定時間間隔で、各キューにおける要素の削除処理を行うこととしてもよい。
また、上記のフローにおける処理では、優先度の高いイベントの発生が継続する限り、当該優先度の高いイベントに対する処理の実行が継続されることになるが、例えば、優先度の高いイベント(例:最高優先度のイベント)に対する処理が、予め定めた回数(又は、予め定めた時間長)だけ連続した場合に、次の優先度のキューの優先度を一時的に最高優先度にする等の操作により、次の優先度のイベント情報がデキューされるようにしてもよい。
(実施の形態の効果等について)
従来技術におけるキューを用いたシーケンス制御手法では、イベント情報の到着順に処理を行うため、重要度の高いイベント情報と重要度の低いイベントが同時に発生した際に、重要度の高いイベント情報を優先して処理することができない。また、エンキューされた全ての要素を処理すると、イベント発生から実際の処理までにタイムラグが発生する可能性がある。このため、何らかのイベント(イベントAとする)発生後、イベントAがキューに残されたまま、ユーザがコミュニケーションロボット付近から離れた場合に、別のユーザがコミュニケーションロボットに近づいた時に、イベントAに対する処理を行ってしまうという不自然な動作がなされる可能性がある。
一方、本実施の形態に係る技術では、優先度毎のキューを備え、イベント情報をデキューする際には、優先度の高いキューからイベント情報を順にデキューすることで、重要なイベントを優先的に処理することを可能としている。また、イベント情報のデキューに際し、タイムスタンプと現在の時刻とを比較し、古いイベント情報(例:上記のイベントA)を無視することで、上記のような不自然な動作を防止することを可能としている。
すなわち、本実施の形態に係る技術により、コミュニケーションロボットは、イベントの優先度に応じて、適切に処理を実行することが可能となる。より具体的には、コミュニケーションロボットが、より人間らしい振る舞いを行うことが可能となる。
(実施の形態のまとめ)
以上、説明したように、本実施の形態により、受信したイベント情報を出力するための制御を行うイベント制御装置であって、優先度毎のキューを有するマルチキューと、受信したイベント情報の優先度に対応するキューに、当該イベント情報を格納する入力制御手段と、イベント情報取得要求を受信した場合に、前記マルチキューにおける出力可能なイベント情報を格納するキューのうち、最も優先度の高いキューからイベント情報を取得し、出力する出力制御手段とを備えることを特徴とするイベント制御装置が提供される。
なお、実施の形態で説明した入力部101及び制御部104は入力制御手段の例であり、出力部103及び制御部104は出力制御手段の例である。
前記出力制御手段は、例えば、前記最も優先度の高いキューにおけるイベント情報のうち、所定の条件を満たすイベントのイベント情報を出力する。
前記出力制御手段は、キューに格納されているイベント情報のうち、イベント情報削除のために定められた所定の条件を満たすイベントのイベント情報を削除することとしてもよい。
前記イベント制御装置は、例えば、コミュニケーションロボットの内部又は外部の装置であり、前記イベント情報を出力することにより、前記コミュニケーションロボットを当該イベント情報に基づき動作させる。
以上、本実施の形態について説明したが、本発明はかかる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
100 イベント制御装置
200 コミュニケーションロボット
210 イベント処理機能部
300 センサ
400 端末
101 入力部
102 キュー部
103 出力部
104 制御部
150 ドライブ装置
151 記録媒体
152 補助記憶装置
153 メモリ装置
154 CPU
155 インタフェース装置
156 表示装置
157 入力装置

Claims (6)

  1. 受信したイベント情報を出力するための制御を行うイベント制御装置であって、
    優先度毎のキューを有するマルチキューと、
    受信したイベント情報の優先度に対応するキューに、当該イベント情報を格納する入力制御手段と、
    イベント情報取得要求を受信した場合に、前記マルチキューにおける出力可能なイベント情報を格納するキューのうち、最も優先度の高いキューからイベント情報を取得し、出力する出力制御手段と
    を備えることを特徴とするイベント制御装置。
  2. 前記出力制御手段は、前記最も優先度の高いキューにおけるイベント情報のうち、所定の条件を満たすイベントのイベント情報を出力する
    ことを特徴とする請求項1に記載のイベント制御装置。
  3. 前記出力制御手段は、キューに格納されているイベント情報のうち、イベント情報削除のために定められた所定の条件を満たすイベントのイベント情報を削除する
    ことを特徴とする請求項1又は2に記載のイベント制御装置。
  4. 前記イベント制御装置は、コミュニケーションロボットの内部又は外部の装置であり、前記イベント情報を出力することにより、前記コミュニケーションロボットを当該イベント情報に基づき動作させる
    ことを特徴とする請求項1ないし3のうちいずれか1項に記載のイベント制御装置。
  5. 受信したイベント情報を出力するための制御を行うイベント制御装置であって、優先度毎のキューを有するマルチキューを備えるイベント制御装置が実行するイベント制御方法であり、
    受信したイベント情報の優先度に対応するキューに、当該イベント情報を格納する入力制御ステップと、
    イベント情報取得要求を受信した場合に、前記マルチキューにおける出力可能なイベント情報を格納するキューのうち、最も優先度の高いキューからイベント情報を取得し、出力する出力制御ステップと
    を備えることを特徴とするイベント制御方法。
  6. コンピュータを、請求項1ないし4のうちいずれか1項に記載のイベント制御装置における各手段として機能させるためのプログラム。
JP2016215679A 2016-11-02 2016-11-02 イベント制御装置、イベント制御方法、及びプログラム Pending JP2018073303A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016215679A JP2018073303A (ja) 2016-11-02 2016-11-02 イベント制御装置、イベント制御方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016215679A JP2018073303A (ja) 2016-11-02 2016-11-02 イベント制御装置、イベント制御方法、及びプログラム

Publications (1)

Publication Number Publication Date
JP2018073303A true JP2018073303A (ja) 2018-05-10

Family

ID=62114349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016215679A Pending JP2018073303A (ja) 2016-11-02 2016-11-02 イベント制御装置、イベント制御方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP2018073303A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109807903A (zh) * 2019-04-10 2019-05-28 博众精工科技股份有限公司 一种机器人控制方法、装置、设备和介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109807903A (zh) * 2019-04-10 2019-05-28 博众精工科技股份有限公司 一种机器人控制方法、装置、设备和介质

Similar Documents

Publication Publication Date Title
US9135059B2 (en) Opportunistic multitasking
JP6383518B2 (ja) 仮想マシンモニター及び仮想マシンモニターのスケジューリング方法
US9141422B2 (en) Plug-in task scheduler
JP2017050001A (ja) 効果的なニューラルネットワークの配置に用いるシステム及び方法
US8881161B1 (en) Operating system with hardware-enabled task manager for offloading CPU task scheduling
US20100153957A1 (en) System and method for managing thread use in a thread pool
KR102239428B1 (ko) 이종 이벤트 큐
US9847950B1 (en) Messaging system thread pool
US9467526B2 (en) Network communication using intermediation processor
US10802874B1 (en) Cloud agnostic task scheduler
CN111770043A (zh) 游戏数据通信方法、装置、存储介质及电子设备
JP2018073303A (ja) イベント制御装置、イベント制御方法、及びプログラム
US10346031B2 (en) View activation via hit testing in an asynchronous windowing system
JP4609070B2 (ja) マルチ呼処理スレッド処理方法
TW200847732A (en) System and method for bridging file system between two different processor in mobile phone
US11474868B1 (en) Sharded polling system
CN110515749B (zh) 信息发送的队列调度的方法、装置、服务器和存储介质
GB2390776A (en) Method and apparatus for automated network polling
KR100651722B1 (ko) 실시간 성능 지원을 위한 리눅스 커널의 구성 방법 및실시간 성능 테스트 방법
CN113368494A (zh) 云设备分配方法、装置、电子设备及存储介质
US20200334164A1 (en) Information processing device, information processing method, and program
WO2024077914A1 (zh) 多核处理器的核间通信系统、方法、设备及存储介质
CN108140363A (zh) 基于翻转队列管理的图形上下文调度
CN115858199A (zh) 交互控制方法、装置、控制设备及介质
CN114168298A (zh) 任务调度方法、装置、电子设备和介质