本発明の実施形態について図面を参照して詳細に説明する。
<システム構成の説明>
図1は、本実施形態によるサービスロボットシステムのシステム構成図である。サービスロボットシステムは、ロボットR1、R2、個別型タスク管理サーバSTS、連携型タスク管理サーバMTS、およびタスク設定端末TSTを有している。ロボットR1、R2、個別型タスク管理サーバSTS、連携型タスク管理サーバMTS、タスク設定端末TSTはネットワークNWに接続されている。
ロボットR1、R2は、ユーザに各種サービスを提供するロボットである。ロボットとは自律移動可能な情報処理装置である。ロボットR1、R2により提供されるサービスは、ユーザの要求あるいは状況に応じてロボットR1、R2がユーザに対して提供する対人サービスである。対人サービスはそのサービス内容ごとのタスクとして設定されており、各タスクは複数の一連のアクションで構成されている。
個別型タスク管理サーバSTSは、ロボットが単体で提供可能なサービスを制御するサーバである。ロボットが単体でサービスを提供する場合、そのサービスのタスクに含まれるアクションが全て1つのロボットにより実行される。
連携型タスク管理サーバMTSは、複数のロボットが連携して提供するサービスを制御するサーバである。複数のロボットが連携してサービスを提供する場合、そのサービスのタスクに含まれるアクションが複数のロボットにより分担される。
ネットワークNWは、ロボットR1、R2、個別型タスク管理サーバSTS、連携型タスク管理サーバMTS、およびタスク設定端末TSTを相互に接続する。ネットワークNWは有線LAN(Local Area Network)、無線LAN、移動体通信網など様々な構成が考えられ、またそれらのうち複数の種類のネットワークで構成されていてもよい。また、ロボットR1、R2の設置場所と個別型タスク管理サーバSTSあるいは連携型タスク管理サーバMTSの設置場所とが異なっており、ネットワークNWがWAN(Wide Are Network)であり、設置場所の異なるロボットR1、R2と個別型タスク管理サーバSTSおよび連携型タスク管理サーバMTSとをWANで接続してもよい。なお、図1にはロボットが2台である例を示しているが、それに限定されない。ロボットは何台であってもよい。
タスク設定用端末(TST;Task Setting Terminal)は、個別型タスク管理サーバSTSおよび連携型タスク管理サーバMTSに対して各サービスのタスクを設定するための端末であり、ネットワークNWに接続するためのインターフェースを備え、ネットワークNWを介して個別型タスク管理サーバSTSおよび連携型タスク管理サーバMTSと通信する。
タスク設定用端末TSTの主な役割は個別型タスク管理サーバSTS又は連携型タスク管理サーバMTSにあるトリガーアクション設定テーブルを更新したり、編集したりすることである。
トリガーアクション設定テーブルは、上述したタスクを構成するアクションとそれらアクションの実行を開始するトリガー条件とが設定されたテーブルである。トリガーアクション設定テーブルの更新又は編集の主体が管理者などの人間である場合は、タスク設定用端末TSTは入出力デバイスを備える。入力デバイスは例えばキーボード及びマウスであり、出力デバイスは例えばディスプレイやプリンタからなる。更新又は編集を行う主体が人間ではない場合は、例えば人工知能のプログラムである場合、タスク設定用端末TSTは、そのプログラムを実行する環境を備える。タスク設定用端末TSTが個別型タスク管理サーバSTS又は連携型タスク管理サーバMTS上のトリガーアクション設定テーブル134を更新し、編集するとき、通信プロトコルとしては、例えばFTP(File Transfer Protocol)が使用される。タスク設定用端末TSTは個別型タスク管理サーバSTS又は連携型タスク管理サーバMTSのデータメモリにある他のテーブルを、トリガーアクション設定テーブルを更新あるいは編集するときと同様の方法で更新及び編集することも可能である。
(個別型タスク管理サーバSTSの構成の説明)
図2は、個別型タスク管理サーバSTS(Single−type Task Server)のハードウエアおよびソフトウエアの構成を示すブロック図である。個別型タスク管理サーバSTSは、マイクロプロセッサからなるCPU(Central Processing Unit)11を備え、このCPU11にバス12を介して記憶装置13、メモリ14、通信インターフェース15が接続されている。
通信インターフェース15は、CPU11の制御の下で、ネットワークNWにより規定される通信プロトコルに従い、連携型タスク管理サーバMTSおよびタスク設定端末TSTとメッセージを送受信する。通信プロトコルとしては、例えばTCP/IP(Transmission Control Protocol/Internet Protocol)等が使用されるが、他の通信プロトコルが使用されてもよい。
記憶装置13は、タスクライブラリテーブル131、受付済みタスクテーブル132、実行中タスク状態テーブル133、トリガーアクション設定テーブル134、およびロボット状態テーブル135を格納している。上述したトリガーアクション設定テーブルは、図2に示されたトリガーアクション設定テーブル134のことである。
図1および図2の構成において、記憶装置13には、ロボットに実行させるタスクを一連のアクションで構成し、それらアクションとそれらアクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報(トリガーアクション設定テーブル134)が予め記憶されている。そして、トリガー判定部(メモリ14上のトリガー判定プログラム144)は、アクションのトリガー条件が満たされたか否か判定する。アクション実行部(メモリ14上のアクション実行プログラム143)は、指示されたアクションを実行する。タスク実行部(メモリ14上の個別型タスク実行プログラム)は、ロボットに実行させるタスクのトリガーアクション情報に規定されたアクションを順次選択し、選択したアクションのトリガー条件が満たされたか否かトリガー判定部に判定させ、トリガー条件が満たされれば、そのアクションをアクション実行部に実行させる。ロボットが行うタスクを一連のアクションで構成し、アクション毎にトリガー条件を設定し、トリガー条件が満たされたときにロボットにアクションを実行させるので、ロボットが各アクションを開始するときにユーザが自然と感じるようなトリガー条件を設定することが可能となり、自然な対人サービスを提供することが可能となる。
図3はタスクライブラリテーブル131の構成例を示す図である。タスクライブラリテーブル131には、ユニバーサルタスク番号13101と、タスク名13102と、対応能力要求13103と、他タスク並行実行可否13104を表す情報と、トリガーアクション設定テーブル場所13105とが互いに対応づけて格納される。
ユニバーサルタスク番号13101はサービスロボットシステムで一意であり、タスクを識別するために用いられる。
タスク名13102はタスクの名称である。
対応能力要求は当該タスクに対応するためにロボットが必要な能力を示している。ここでいうタスクへ対応するというのはタスクに含まれるアクションを実行するという意味である。対応能力要求は当該タスクに含まれるアクションを実行するためにロボットに必要な能力ということもできる。対応能力要求は、当該タスクに対応するトリガーアクション設定テーブル134に含まれる全てのアクションのアクション要求能力を全て満たすように決定される。アクション要求能力は、各アクションを実行するためにロボットに求められる能力であり、その情報はトリガーアクション設定テーブル134にアクション毎に設定される。
あるタスクに対して、ロボットの持っている能力の制限によって、対応できない、すなわちタスクに含まれるアクションを実行できないこともある。同じタスクに対して、ロボットの持っている能力の差異によって、タスクへの対応方法、つまりタスクに含まれるアクションの実行方法も異なる。タスクへの対応方法として個別対応と連携対応があり、更に対応不可という場合もある。個別対応というのは、該当タスクに該当ロボット単独で対応することを示している。連携対応というのは、該当タスクに該当ロボットが他のロボットと協力して対応することを示している。対応不可は該当タスクが該当ロボットによって対応できないことを示している。
他タスク並行実行可否13104は該当タスクが他のタスクと並行して同じロボットにて実行されることが可能であるかどうかを示している。他タスク並行実行可否13104を決める方法は、一例として、個別対応の場合に用いられるトリガーアクション設定テーブル134と、連携対応の場合に用いられる連携型トリガーアクション設定テーブル234にあるアクション並行実行可否23407を全部確認し、トリガーアクション設定テーブル134と連携型トリガーアクション設定テーブル234に設定されている全てのアクションが並行実行不可である場合は、他タスク並行実行可否13104を不可と設定し、それ以外の場合は可と設定する、というものである。連携型トリガーアクション設定テーブル234は図11を参照して後述する。
トリガーアクション設定テーブル場所13105は、トリガーアクション設定テーブル134の保存先を示している。
図4は受付済みタスクテーブル132の構成図である。受付済みタスクテーブル132には、タスク管理番号13201と、ユニバーサルタスク番号13202と、対応方法13203とが互いに対応づけて格納される。タスク管理番号13201はシステムの中で唯一性及び不変性を持っており、この番号を解読することでタスクの発生の日付及び担当ロボットが分かるように採番方法が定められている。この実施例では、タスク管理番号13201は、タスクを受け付けた日付と、ロボットID13502と、同一日付内での4桁の通し番号とを合わせたものとなっている。
図5は、トリガーアクション設定テーブル134の構成図である。トリガーアクション設定テーブル134には、タスク毎の複数のテーブルファイルが含まれている。各テーブルファイルには、テーブルファイル名13401が付与されている。トリガーアクション設定テーブル134の各テーブルファイルには、トリガー番号13402、トリガー判定式13403、アクション13404、アクション要求能力13405、アクション並行実行可否13406、およびアクション省略可否13407が互いに対応づけて記憶される。図5に、トリガーアクション設定テーブル134に記憶される情報の一例が示されている。
トリガーアクション設定テーブル134のテーブルファイルは、タスクを構成する一連のアクションのそれぞれを起すトリガーの設定により定義される。図4に示した受付済みタスクテーブル132のユニバーサルタスク番号13202は、トリガーアクション設定テーブル134のテーブルファイルと一対一に対応する番号である。
なお、アクションは、アクション実行プログラム143が実行できる汎用関数、又はタスクライブラリテーブル131に含まれたタスクを構成するアクションを表す文字列である。アクションは、例えば、ロボットに手を振らせる関数や、ロボットにあるセンサ311からセンサ情報を取り出すアクションを示す文字列である。
アクションを起こすトリガー条件はトリガー判定式13403で定義される。トリガー判定式13403は、トリガー判定プログラム144が実行できる戻り値を持つ汎用関数、又はタスクライブラリテーブル131に含まれたタスクを使った条件式を表す文字列からなるものである。トリガー判定プログラム144による判定でトリガー判定式13403が真である場合は、アクション13404はアクション実行プログラム143に当該アクションを実行される。トリガー番号=2のアクションのようにトリガー判定式13403が真という常に真であることを意味する。
1つのトリガー判定式13403とそれに対応するアクション13404はトリガー番号13402で紐付けされ、トリガーアクション設定テーブル134の1つの行に格納される。1つのトリガー判定式13403が複数のアクションに対応することが可能である。また、複数の連続するアクションのトリガー判定式13403をトリガー条件が常に「真」であると設定することにより、複数のトリガー番号13402が対応しているアクション13404を無条件に連続的に実行させることも可能である。
トリガー番号13402は、複数のアクション13404を実行する場合の最初、最後、および順番を示す番号である。例えば、図5の例では、最初のアクション13404のトリガー番号13402を0とし、最後のアクション13404のトリガー番号13402を−1としている。それ以外のアクション13404には、実行の順番に通し番号となるトリガー番号13402が付与されている。
アクション要求能力13405は当該アクションを実行するためにロボットに要求される能力である。あるロボットがそのアクションを実行するためには、ロボットが備えている能力(タスク対応能力13503)が、このアクション要求能力13405を包含している必要がある。タスク対応能力13503は図7を参照して後述する。
アクション並行実行可否13406は当該アクションを他のアクションと並行して実行することが可能であるかどうかを示している。
アクション省略可否13407は、アクション要求能力13405が指定した能力に満たせないロボットが、該当アクションをスキップして、次のアクションを実行することが可能であるかどうかを示している。
図6は、実行中タスク状態テーブル133の構成図である。実行中タスク状態テーブル133には、タスク管理番号13301と、現在のトリガー判定式13302と、現在のアクション13303と、トリガーアクション設定テーブル場所13304と、現在のトリガー番号13305と、他タスク並行実行可否13306とが互いに対応づけられて記憶される。図6には、実行中タスク状態テーブル133に記憶される情報の一例が示されている。実行中タスク状態テーブル133は、個別型タスク管理プログラム141と、個別型タスク実行プログラム142と、連携型タスク管理プログラム241と、連携型タスク実行プログラム242によって更新される情報である。実行中タスク状態テーブル133は、実行されている個別型タスク及び連携型タスクの進捗を示している。実行中タスク状態テーブル133の更新の詳細は後述する。
図7は、ロボット状態テーブル135の構成図である。ロボット状態テーブル135には、ロボット名13501と、ロボットID13502と、タスク対応能力13503と、現在のタスクのタスク管理番号13504とが互いに対応づけされて記憶される。図7には、ロボット状態テーブル135に記憶される情報の一例が示されている。タスク対応能力13503は、ロボットが備えている能力を示している。個別タスク管理サーバSTSは、タスク対応能力13503に示されたロボットの能力を基に、タスクにどのように対応するか(ロボットの対応方法13203)を決める。
なお、図3に示したタスクライブラリテーブル131の対応能力要求13103においては、省略可能なアクションのアクション要求能力に相当するものは「(オプション)」と明示されている。
図2に戻り、メモリ14には、本実施形態にて必要なプログラムの一部として、個別型タスク管理プログラム141と、個別型タスク実行プログラ142と、アクション実行プログラム143と、トリガー判定プログラム144が格納されている。
個別型タスク管理プログラム141は、主に以下の処理をCPU11に実行させることで、タスクの受付及び実行準備を行う。
(1) 個別型タスク管理プログラム141は、通信インターフェース15もしくはバス12を介してタスク初期処理依頼メッセージM1を受信したら、そのタスク初期処理依頼メッセージM1にある依頼タスクのユニバーサルタスク番号M102及び希望ロボットのロボットID13502を用いて、タスクライブラリテーブル131及びロボット状態テーブル135を参照して、依頼タスクは希望ロボットによって実行可能かどうかを判断する。タスク初期処理依頼メッセージM1は図14に示されている。タスク初期処理依頼メッセージM1には、メッセージ識別子M101、依頼タスクのユニバーサルタスク番号M102、希望ロボットのロボットID M103、および依頼元ID M104が格納される。依頼タスクは、初期処理依頼メッセージM1にて実行することが依頼されたタスクである。希望ロボットは、初期処理依頼メッセージM1にて依頼されたタスクの実行に用いることを希望する旨が指定されたロボットである。このとき、個別型タスク管理プログラム141は、タスクライブラリテーブル131を参照することにより、依頼されたタスクに対応するのに必要なロボットの能力を知得することができる。また、個別型タスク管理プログラム141は、ロボット状態テーブル135を参照することにより、希望ロボットが備えている能力を知得することができる。そして、個別型タスク管理プログラム141は、依頼タクスに必要な能力と、希望ロボットが備えている能力を比較することにより、依頼タスクを希望ロボットが実行できるか否か判断することができる。実行が可能である場合、個別型タスク管理プログラム141は次に対応方法13203を決める。対応方法13203は、例えば、タスクライブラリテーブル131にある対応能力要求13103を、ロボット状態テーブル135のタスク対応能力13503が満たしているかどうかに基づいて、決定することができる。いずれか1つのロボットのタスク対応能力13503が対応能力要求13103を満たしていれば、そのロボットが単独でタスクに対応できるので、対応方法13203を個別対応とすればよい。複数のロボットのタスク対応能力113503を組み合わせることで対応能力要求13103を満たすのであれば、対応方法13203を連携対応とすればよい。
(2) (1)に決められた対応方法13203が個別対応である場合、個別型タスク管理プログラム141は、依頼タスクに対応するトリガーアクション設定テーブル134を用いて、依頼タスクを実行されるように受付済みタスクテーブル132と、実行中タスク状態テーブル133と、ロボット状態テーブル135とを更新する。
(3) (1)に決められた対応方法13203が連携対応である場合、個別型タスク管理プログラム141は、連携型タスク管理サーバMTSに処理されるように、通信インターフェース15を介して連携型タスク管理サーバMTSに連携依頼メッセージM2を送信する。連携依頼メッセージM2は図15に示されている。連携依頼メッセージM2には、メッセージ識別子M201、依頼タスクのユニバーサルタスク番号M202、および依頼元ID M203が格納される。
個別型タスク実行プログラム142は、主に以下の処理をループでCPU11に実行させることで、個別型タスクをアクション単位で段階的に進行させることを実現する。
(1) 個別型タスク実行プログラム142は、受付済みタスクテーブル132を参照し、対応方法13203が個別対応である受付済みタスクについて、実行中タスク状態テーブル133を行ごとでスキャンし、この行にある現在のトリガー判定式13302をトリガー判定依頼メッセージM3に含めてトリガー判定プログラム144にバス12を介して送信する。トリガー判定依頼メッセージM3は図16に示されている。トリガー判定依頼メッセージM3には、メッセージ識別子M301、トリガー判定式M302、依頼元ID M303、および依頼先ID M304が格納される。
(2) 個別型タスク実行プログラム142はトリガー判定プログラム144から(1)のトリガー判定依頼メッセージM3に応じて返信されたトリガー判定結果メッセージM4を、バス12を介して受信する。トリガー判定結果メッセージM4は図17に示されている。トリガー判定結果メッセージM4には、メッセージ識別子M401、トリガー判定結果M402、依頼元ID M403、および依頼先ID M404が格納される。(1)のトリガー判定式が満足されたら、個別型タスク実行プログラム142は、本トリガーに対応するアクションを実行するように、本アクションをアクション実行依頼メッセージM7に含めて、アクション実行プログラム143にバス12を介して送信する。アクション実行依頼メッセージM7は、図20に示されている。アクション実行依頼メッセージM7には、メッセージ識別子M701、アクションM701、依頼元ID M703、依頼先ID M704、およびトリガー番号M705が格納される。
(3) アクション実行プログラム143に実行依頼したアクションがトリガーアクション設定テーブル134における最後のアクションである場合、個別型タスク実行プログラム142は、実行中タスク状態テーブル133から該当する行を削除して次の行に移行する。実行依頼したアクションが最後のアクションではない場合、個別型タスク実行プログラム142は、本タスクのトリガーアクション設定テーブル134における次のアクションに移行するように実行中タスク状態テーブル133を更新する。
トリガー判定プログラム144は、アクション実行プログラム143或いは連携型タスク実行プログラム242から依頼を受け、主に以下の処理をCPU11に実行させることで、依頼されたアクションの実行可否を判断し、判断結果、或いは判断するための根拠を、判断依頼元に提出する。
(1) 個別型タスク実行プログラム142或いは連携型タスク実行プログラム242からトリガー判定依頼メッセージM3あるいはトリガー計算依頼メッセージM5を通信インターフェース15或いはバス12を介して受信したら、トリガー判定プログラム144は、そのメッセージにあるトリガー判定式の文字列から関数名と引数を識別し、その引数を用いてその関数名の関数を実行する。トリガー計算依頼メッセージM5は図18に示されている。トリガー計算依頼メッセージM5には、メッセージ識別子M501、トリガー計算式M502、依頼元ID M503、依頼先ID M504が格納される。
(2) (1)で受信したメッセージが個別型タスク実行プログラム142からのトリガー判定依頼メッセージM3である場合は、トリガー判定プログラム144は、トリガー判定用文字列から条件式を識別し、(1)で実行した関数の戻り値を前記条件式に代入し、条件式が満たされているか否かの判定結果をトリガー判定結果メッセージM4に含めてバス12を介して個別型タスク実行プログラム142に返信する。
(3) (1)で受信したメッセージが連携型タスク実行プログラム242からのトリガー計算依頼メッセージM5である場合は、トリガー判定プログラム144は、(1)で実行した関数の戻り値をトリガー計算結果とし、トリガー計算結果メッセージM6に含めて通信インターフェース15で連携型タスク実行プログラム242に返信する。トリガー計算結果メッセージM6は図19に示されている。トリガー計算結果メッセージM6には、メッセージ識別子M601、トリガー計算結果M602、依頼元ID M603、および依頼先ID M604が格納される。
アクション実行プログラム143は、主に以下の処理をCPU11に実行させる。
(1) 個別型タスク実行プログラム142或いは連携型タスク実行プログラム242からアクション実行依頼メッセージM7を通信インターフェース15或いはバス12を介して受信したら、アクション実行プログラム143は、そのメッセージにあるアクションM702の文字列から関数名と引数を識別して、その引数を用いてその関数名の関数を実行する。
(2) アクション実行プログラム143は、(1)の判定結果に基づいてロボット状態テーブル135を更新する。
<連携型タスク管理サーバMTSの構成の説明>
図8は、連携型タスク管理サーバMTSのハードウエア及びソフトウエアの構成を示すブロック図である。連携型タスク管理サーバMTSはマイクロプロセッサからなるCPU21を備え、このCPU21にバス22を介して記憶装置23及びメモリ24が接続され、さらに通信インターフェース25が接続されている。
通信インターフェース25は、CPU21の制御の下で、通信ネットワークNWにより規定される通信プロトコルに従い、個別型タスク管理サーバSTSあるいはタスク設定端末TSTからのメッセージを受信する。またそれと共に、個別型タスク管理サーバSTSにメッセージを送信する。通信プロトコルとしては、例えばTCP/IPが使用される。
記憶装置23には、連携型タスクライブラリテーブル231、受付済み連携型タスクテーブル232、実行中連携型タスク状態テーブル233、および連携型トリガーアクション設定テーブル234が格納されている。
図9は、連携型タスクライブラリテーブル231の構成図である。連携型タスクライブラリテーブル231には、ユニバーサルタスク番号23101と、タスク名23102と、連携条件23103と、連携型トリガーアクション設定テーブル場所23104とが互いに対応づけて記憶される。図9には、連携型タスクライブラリテーブル231に記憶される情報の一例が示されている。ユニバーサルタスク番号23101は、タスクライブラリテーブル131にあるユニバーサルタスク番号13101と同じものである。連携条件23103は該当タスクにて連携するロボットが持つべき能力を示している。連携するロボットが持つべき能力を決める方法は、例えば、対応する連携型トリガーアクション設定テーブル234にあるすべてのアクション要求能力23406を満たすようにすることである。連携型トリガーアクション設定テーブル場所23104は連携型トリガーアクション設定テーブル234の保存先を示している。
図10は、受付済み連携型タスクテーブル232の構成図である。受付済み連携型タスクテーブル232には、タスク管理番号23201と、ユニバーサルタスク番号23202と、関与ロボットID23203とが互いに対応づけて記憶される。図10には、受付済み連携型タスクテーブル232に記憶される情報の一例が示されている。受付済み連携型タスクテーブル232にあるタスク管理番号23201は、タスクを受け付けた日付と、タスクに関与するすべてのロボットID13502と、4桁の通し番号を合わせたものである。
図11は、連携型トリガーアクション設定テーブル234の構成図である。連携型トリガーアクション設定テーブル234には、タスク毎の複数のテーブルファイルが含まれている。各テーブルファイルには、テーブルファイル名13401が付与されている。各テーブルファイルには、トリガー番号23402、トリガー判定式23403、アクション23404、関与ロボット23405、アクション要求能力23406、およびアクション並行実行可否23407が互いに対応づけて記憶される。図11には、連携型トリガーアクション設定テーブル234に記憶される情報の一例が示されている。
連携型トリガーアクション設定テーブル234のテーブルファイルは、連携型タスクライブラリテーブル231に定義される連携型タスクのユニバーサルタスク番号23101と一対一で対応している。連携型トリガーアクション設定テーブル234には、連携型タスクを構成する複数のアクションのそれぞれを起こすトリガーが設定される。連携型タスクを構成する複数のアクションは複数のロボットが分担して実行する。連携型トリガーアクション設定テーブル234にはアクション毎にそのアクションに関与するロボットが関与ロボット23405として設定される。関与ロボット23405における連携元ロボットは、あるロボットから他のロボットに交代するときに、それまでのアクションを実行してきたロボットである。連携先ロボットは、あるロボットから他のロボットに交代するとき、その後のアクションの実行を引き継ぐロボットである。
なお、アクションはアクション実行プログラム143が実行できる汎用関数、又はタスクライブラリテーブル131に含まれたタスクを構成するアクションを表す文字列である。アクションを起こすトリガー条件はトリガー判定式23403で定義される。トリガー判定式23403は、トリガー判定プログラム144が実行できる戻り値を持つ汎用関数、又はタスクライブラリテーブル131に含まれたタスクを使った条件式を表す文字列からなるものである。
なお、連携型トリガーアクション設定テーブル234にある判定式は、トリガーアクション設定テーブル134にある判定式と異なって、複数のロボットに関わる判定式となることもある。連携型タスク実行プログラム242によって実行された連携型のトリガー判定式23403の計算結果が真である場合、アクション23404はアクション実行プログラム143に実行される。
1つのトリガー判定式23403とそれに対応するアクション23404はトリガー番号23402で紐付け、連携型トリガーアクション設定テーブル234の1つの行に格納される。トリガー番号23402は複数のアクション23404を実行する場合の最初、最後、および順番を示す番号である。例えば、図11の例では、最初のアクション23404のトリガー番号を0とし、最後のアクション23404のトリガー番号を−1としている。それ以外のアクション23404には、実行の順番に通し番号となるトリガー番号23402が付与されている。
関与ロボット23405は、該当アクションのトリガーの判定とアクションの実行に関わるロボットを示している。
アクション要求能力23406は当該アクションを実行するロボットに要求される能力である。あるロボットがそのアクションを実行するためには、ロボットが備えている能力(タスク対応能力13503)が、このアクション要求能力23406を包含している必要がある。
アクション並行実行可否23407は当該アクションを他のアクションと並行して実行することが可能であるかどうかを示している。ロボットの連携で情報の引続が必要な場合は、図11のように連携型トリガーアクション設定テーブル234に一行を加え、連携元ロボットから連携先ロボットへ情報を送信するアクションを設計すればよい。
ここに示したように、トリガーアクション情報(連携型トリガーアクション設定テーブル234)には、アクション毎にそのアクションを実行させるロボットの割り当てが設定可能である。連携型タスク実行部(連携型タスク実行プログラム242)は、アクション実行部(アクション実行プログラム143)に、トリガーアクション情報に含まれるそれぞれのアクションをそのトリガーアクション情報にてそのアクションの実行に割り当てられたロボットを用いて実行させる。アクションごとにそのアクションを実行させるロボットを設定することができるので、複数のロボットを連携させてタスクを実行することができる。
図12は、実行中連携型タスク状態テーブル233の構成図である。実行中連携型タスク状態テーブル233には、タスク管理番号23301、現在のトリガー判定式23302、現在のアクション23303、連携型トリガーアクション設定テーブル場所23304、および現在のトリガー番号23305が互いに対応づけて記録される。複数のロボットが連携しながら実行しているタスクの状態を示す情報が格納される。図12には、実行中連携型タスク状態テーブル233に記憶される情報の一例が示されている。複数のアクションで構成されるタスクは、実行中であれば、現在の状態として途中のアクションまで進んでいる状態がある。実行中連携型タスク状態テーブル233には実行中のタスクの現在の状態が記録されている。
実行中連携型タスク状態テーブル233は連携型タスク管理プログラム241と、連携型タスク実行プログラム242によって更新され、実行されている連携型タスク及び連携型タスクの進捗を示している。
図8に戻り、メモリ24には、連携型タスク管理プログラム241と、連携型タスク実行プログラ242が格納されている。
連携型タスク管理プログラム241は、主に以下の処理をCPU21に実行させることで、タスクの受付及び実行準備を行う。
(1) 連携型タスク管理プログラム241は、通信インターフェース25を介してタスク連携依頼メッセージM2を受信したら、連携依頼メッセージM2にある依頼タスクのユニバーサルタスク番号M202及び依頼元ID R2を用いて、連携型タスクライブラリテーブル231及びロボット状態テーブル135を参照して、依頼タスクに対応できるロボット、つまり連携先ロボットとなりうるロボットが存在するかどうかを判断する。連携先ロボットとなりうるロボットが存在するかどうかを判断する方法としては、例えば、連携型タスクライブラリテーブル231にある連携条件23103を満たしているロボットがロボット状態テーブル135に存在するかどうかを調べればよい。
(2) (1)にて連携先ロボットとなりうるロボットが存在する場合、連携型タスク管理プログラム241は、依頼タスクに対応する連携型トリガーアクション設定テーブル234を用いて、依頼タスクが実行されるように、受付済み連携型タスクテーブル232と、実行中連携型タスク状態テーブル233と、ロボット状態テーブル135と、実行中タスク状態テーブル133及び受付済みタスクテーブル132を更新する。
(3) (1)で連携先ロボットが存在しないと判断したら、連携型タスク管理プログラム241は、実行中タスク状態テーブル133及び受付済みタスクテーブル132に連携が拒否された時に実行するデフォルトタスクを追加する。
連携型タスク実行プログラム242は、主に以下の処理をループでCPU21に実行させることで、連携型タスクをアクション単位で段階的に進行させる。
(1) 連携型タスク実行プログラム242は、実行中連携型タスク状態テーブル233を行ごとでスキャンする。スキャンにより現在のトリガー判定式23302が得られたら、その現在のトリガー判定式23302をトリガー計算依頼メッセージM5に反映し、トリガー計算依頼メッセージM5をトリガー判定プログラム144に通信インターフェース25を介して送信する。
(2) 連携型タスク実行プログラム242は、トリガー判定プログラム144から、(1)のトリガー計算依頼メッセージM5に応じて返信されたトリガー計算結果メッセージM6を、通信インターフェース25を介して受信する。連携型タスク実行プログラム242は、トリガー計算結果メッセージM6にて通知された計算結果を用いて、(1)のトリガー判定式23302が満足されたかどうか判定する。満足されたら、連携型タスク実行プログラム242は、本トリガーに対応するアクションを実行されるように、本アクションをアクション実行依頼メッセージM7に含め、アクション実行依頼メッセージM7をアクション実行プログラム143に通信インターフェース25を介して送信する。
(3) アクション実行プログラム143に実行を依頼したアクションが連携型タスクの最後のアクションである場合は、連携型タスク実行プログラム242は、実行中連携型タスク状態テーブル233と、実行中タスク状態テーブル133から、その連携型タスクの行を削除して、次の行に移行する。アクション実行プログラム143に実行を依頼したアクションが連携型タスクの最後のアクションでない場合は、連携型タスク実行プログラム242は、本連携型タスクの連携型トリガーアクション設定テーブル234を用いて、実行中連携型タスク状態テーブル233と実行中タスク状態テーブル133におけるその連携型タスクの行を更新して次の行に移行する。
図13は、ロボットR1、R2の装置構成を示すブロック図である。ロボットR1とロボットR2は同様の基本構成を有し、マイクロプロセッサからなるCPU301を備え、このCPU301にバス302を介して記憶装置303、メモリ304、および通信インターフェース305が接続されている。また、ロボットR1、R2は更に各種能力を実現する装置を備えることも可能であり、例えば、マイク307、移動機構308、スピーカ309、カメラ310、あるいは各種センサ311といった各種装置を備えることができる。ロボットR1、R2は、個別型タスク管理サーバSTSのアクション実行プログラム143またはトリガー判定プログラム144、あるいは連携型タスク管理サーバMTSの連携型タスク管理プログラム241または連携型タスク実行プログラム242から、通信インターフェース305を介して、アクション実行のトリガーを判定するための実行コマンドあるいはアクションの実行コマンドを受信し、実行する。
また、ロボットR1、R2は、メモリ304および記憶装置303にて、ロボット自身の機構、姿勢、移動等を制御するロボット制御アプリケーションと、ロボット自身の制御以外の機能、例えばセンサによる情報収集あるいは位置推定などの機能を実現する各種アプリケーションを記憶し、CPU301により実行することも可能である。
<メッセージの説明>
以下、装置間で送受信されるメッセージについて説明する。上述したように本実施形態では7つのメッセージが用いられる。本実施形態では用いられるメッセージとして、タスク初期処理依頼メッセージM1、連携依頼メッセージM2、トリガー判定依頼メッセージM3、トリガー判定結果メッセージM4、トリガー計算依頼メッセージM5、トリガー計算結果メッセージM6、およびアクション実行依頼メッセージM7がある。これらのメッセージはアプリケーション層に規定されるメッセージである。ここでは主にメッセージのペイロードに搭載される情報について説明する。この情報をペイロードデータとして送受信するためのカプセル化は通信方式により異なってよい。
図14は、タスク初期処理依頼メッセージM1を示す図である。タスク初期処理は、実行を依頼されたタスク(依頼タスク)にロボットを割り当てて受付済みとする処理である。タスク初期処理依頼メッセージM1は、タスク初期処理を依頼するためのメッセージである。タスク初期処理依頼メッセージM1には、メッセージ識別子M101と、依頼タスクのユニバーサルタスク番号102と、希望ロボットのロボットID M103と、依頼元ID M104が記憶される。なお、依頼元ID M104と希望ロボットのロボットID M103が同じであることがある。これは依頼元のロボットが自身のタスク初期処理を依頼するものである。図14には、タスク初期処理依頼メッセージM1に記憶される情報の一例が示されている。
メッセージ識別子M101はメッセージの種類とメッセージの問答関係とを表す。例えば、本実施形態では、メッセージ識別子M101の先頭のMとそれに続く上位2桁はアルファベットと数字の組み合わせによりメッセージ種類を表し、次の6桁はメッセージ同士の関係性を示す識別情報(ID)である。互いに問答関係を有するメッセージ同士は6桁の識別情報(ID)が同じ数字となる。なお、後述する他の6つのメッセージにおけるメッセージ識別子もこのメッセージ識別子M101と同様にメッセージの種類とメッセージの問答関係とを表す。
依頼タスクのユニバーサルタスク番号M102は、実行を依頼されたタスク(依頼タスク)を一意に識別する識別番号である。
希望ロボットのロボットID M103は、タスク初期処理の対象とするロボットのロボットIDである。タスク初期処理は、実行を依頼されたタスク(依頼タスク)にロボットを割り当てて受付済みとする処理である。
依頼元ID M104は、タスク初期処理の依頼元となるロボットのロボットIDである。
図15は、連携依頼メッセージM2を示す図である。連携依頼メッセージM2は連携対応を依頼するためのメッセージである。連携依頼は、タスク初期処理の依頼を受けて必要に応じて行なう処理である。連携依頼メッセージM2はタスク初期処理依頼メッセージM1と問答関係を有する。連携依頼メッセージM2には、メッセージ識別子M201と、依頼タスクのユニバーサルタスク番号M202と、依頼元ID M203が記憶される。図15には、連携依頼メッセージM2に記憶される情報の一例が示されている。
メッセージ識別子M201は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
依頼タスクのユニバーサルタスク番号M202は、連携対応を依頼する依頼タスクを示す識別番号である。
依頼元ID M203は、依頼タスクの連携対応の連携元となるロボットのロボットIDである。
図16は、トリガー判定依頼メッセージM3を示す図である。トリガー判定依頼は、個別対応にてトリガー条件が満たされているか否か、つまり、単一のロボットで依頼タスクのアクションを実行するとした場合にトリガー判定式が真か偽かの判定を依頼するためのメッセージである。トリガー判定依頼メッセージM3には、メッセージ識別子M301と、トリガー判定式M302と、依頼元ID M303と、依頼先ID M304が記憶される。図16には、トリガー判定依頼メッセージM3に記憶される情報の一例が示されている。
メッセージ識別子M301は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
トリガー判定式M302は、個別対応での判定を依頼する判定式(トリガー判定式)を示す。
依頼元ID M303は、トリガー判定を依頼する側のロボットのロボットID、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットIDである。
依頼先ID M304は、トリガー判定を依頼される側のロボットのロボットID、つまりトリガー判定の対象であるアクションを実行するロボットのロボットIDである。
図17は、トリガー判定結果メッセージM4を示す図である。トリガー判定結果メッセージM4はトリガー判定の結果が真であるか偽であるかを通知するためのメッセージである。トリガー判定結果メッセージM4はトリガー判定依頼メッセージM3と問答関係を有する。トリガー判定結果メッセージM4には、メッセージ識別子M401と、トリガー判定結果M402と、依頼元ID M403と、依頼先ID M404が記憶される。図17に、トリガー判定結果メッセージM4に記憶される情報の一例が示されている。
メッセージ識別子M401は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
トリガー判定結果M402は、トリガー判定の結果が真であるか偽であるかを示す。
依頼元ID M403は、トリガー判定を依頼する側のロボットのロボットID、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットIDである。
依頼先ID M404は、トリガー判定を依頼される側のロボットのロボットID、つまりトリガー判定の対象であるアクションを実行するロボットのロボットIDである。
図18は、トリガー計算依頼メッセージM5を示す図である。トリガー計算依頼は、連携対応にてトリガー条件が満たされているか否か、つまり複数のロボットの連携で依頼タスクのアクションを実行するとした場合にトリガー判定式が真か偽かの判定を依頼するためのメッセージである。トリガー計算依頼メッセージM5には、メッセージ識別子M501と、トリガー計算式と、依頼元ID M503と、依頼先ID M504が記憶される。図18には、トリガー計算依頼メッセージM5に記憶される情報の一例が示されている。
メッセージ識別子M501は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
トリガー計算式M502は、連携対応での判定を依頼する判定式(トリガー計算式)を示す。
依頼元ID M503は、トリガー判定を依頼する側のロボットのロボットID、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットIDである。
依頼先ID M504は、トリガー判定を依頼される側のロボットのロボットID、つまりトリガー判定の対象であるアクションを実行するロボットのロボットIDである。
図19は、トリガー計算結果メッセージM6を示す図である。トリガー計算結果メッセージM6はトリガー判定の結果が真であるか偽であるかを通知するためのメッセージである。トリガー計算結果メッセージM6はトリガー計算依頼メッセージM5と問答関係を有する。トリガー計算結果メッセージM6には、メッセージ識別子M601と、トリガー計算結果M602と、依頼元ID M603と、依頼先ID M604が記憶される。図19には、トリガー計算結果メッセージM6に記憶される情報の一例が示されている。
メッセージ識別子M601は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
トリガー計算結果M602は、トリガー判定の結果が真であるか偽であるかを示す。
依頼元ID M603は、トリガー判定を依頼する側のロボットのロボットID、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットIDである。
依頼先ID M604は、トリガー判定を依頼される側のロボットのロボットID、つまりトリガー判定の対象であるアクションを実行するロボットのロボットIDである。
図20は、アクション実行依頼メッセージM7を示す図である。アクション実行依頼メッセージM7は、トリガー判定が真であるときに、そのトリガー判定式あるいはトリガー計算式に対応するアクションの実行を依頼するためのメッセージである。アクション実行依頼メッセージM7には、メッセージ識別子M701と、アクションM702と、依頼元ID M703と、依頼先ID M704と、トリガー番号M705が記憶される。図20には、アクション実行依頼メッセージM7に記憶される情報の一例が示されている。
メッセージ識別子M701は、メッセージ識別子M101と同様に、メッセージの種類とメッセージの問答関係とを表す。
アクションM702は、実行を依頼するアクションを示す。
依頼元ID M703は、トリガー判定を依頼する側のロボットのロボットID、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットIDである。
依頼先ID M704は、トリガー判定を依頼される側のロボットのロボットID、つまりトリガー判定の対象であるアクションを実行するロボットのロボットIDである。
トリガー番号M705は、実行を依頼するアクションに対応するトリガー番号を示す。トリガー番号は、トリガーアクション設定テーブル134または連携型トリガーアクション設定テーブル234においてアクションに付与された番号である。トリガー番号M705によりタスクが現在どこまで進行しているかが分かる。
<システム動作の説明>
次に、以上のように構成されたサービスロボットシステムの各種処理の動作について以下に説明する。なお、ここでは、タスクtをロボット1台で実行する形態を個別形態tsとし、複数台のロボットで実行する形態を連携形態tmとする。個別形態tsと連携形態tmはそれぞれ一連のアクションとそのアクションを起こすトリガーで定義されている。
・ロボットに対するタスク(例えばタスクt)を実行させるための事前設定
実行すべきタスクtについて個別形態tsに対応するトリガーアクション設定テーブル134或いは連携形態tmに対応する連携型トリガーアクション設定テーブル234がシステムに存在しない場合、本実施形態のサービスロボットシステムでは、トリガーアクション設定テーブル134或いは連携型トリガーアクション設定テーブル234を例えば下記の方法で追加する。
まず、個別形態tsのタスクおよびアクションを設定する方法について説明する。
ロボットを管理する主体、例えば管理者は、まず、ネットワークNWに接続しているタスク設定用端末TSTを使って、通信インターフェース15を介して同じネットワークNWに接続している個別型タスク管理サーバSTSにアクセスする。そして、管理者は、個別型タスク管理サーバSTSの記憶装置13のトリガーアクション設定テーブル134に、実行すべきタスクtに個別対応する個別形態tsを定義するテーブルファイルを追加する。トリガーアクション設定テーブル134にテーブルファイルを追加したら、管理者は次に、記憶装置13にあるタスクライブラリテーブル131に新たな一行を追加し、この行に、タスクtのユニバーサルタスク番号13101と、タスク名13102と、対応能力要求13103と、他タスク並行実行可否13104と、トリガーアクション設定テーブル場所13105を記入する。
次に、連携形態tsのタスクおよびアクションを設定する方法について説明する。
管理者は、タスク設定用端末TSTを使って、個別型タスク管理サーバSTSへのアクセスと同様の方法で、連携型タスク管理サーバMTSにアクセスする。そして、管理者は、連携型タスク管理サーバMTSの記憶装置23にある連携型トリガーアクション設定テーブル234に、連携形態tmを定義したテーブルファイルを追加する。連携型トリガーアクション設定テーブル234にテーブルファイルを追加したら、管理者は、次に、記憶装置23にある連携型タスクライブラリテーブル231に新たな一行を追加し、この行にタスクtのユニバーサルタスク番号23101と、タスク名23102と、連携条件23103と、連携型トリガーアクション設定テーブル場所23104を記入する。
なお、ここではタスクの追加について説明したが、タスクの削除も同様に行うことができる。
実行すべきタスクtについて個別形態tsに対応するトリガーアクション設定テーブル134或いは連携形態tmに対応する連携型トリガーアクション設定テーブル234は存在するが、その更新が必要である場合、本実施形態のサービスロボットシステムではトリガーアクション設定テーブル134あるいは連携型トリガーアクション設定テーブル234を例えば下記の方法で更新する。なお、トリガーアクション設定テーブル134あるいは連携型トリガーアクション設定テーブル234の更新はテーブルの行の添削や行内の一部箇所の編集等を意味する。
管理者はタスク設定用端末TSTを使って個別型タスク管理サーバSTSにアクセスする。そして、管理者は、個別型タスク管理サーバSTSの記憶装置13にあるトリガーアクション設定テーブル134におけるタスクtの個別形態tsに対応するテーブルファイルを更新する。また、管理者は、トリガーアクション設定テーブル134の個別形態tsのテーブルファイルを更新するのと同様の方法で連携型タスク管理サーバMTSの記憶装置23にある連携型トリガーアクション設定テーブル234におけるタスクtの連携形態tmに対応するテーブルファイルを更新することができる。
したがって、トリガーアクション設定テーブル134及び連携型トリガーアクション設定テーブル234のテーブルファイルの追加、更新、削除によって、ロボットを管理する主体、例えばシステム管理者がタスクの形態、例えばアクションの内容やアクションを実行する条件などを柔軟に設定でき、ロボットが場所や条件に応じて適切なサービスを提供することを実現する。
以下、図5に示されたトリガーアクション設定テーブル134の例を用いて、ロボットが「タスク_挨拶_個別形態」を実行する様子を説明する。そこには単体のロボットが接近してきた人間に挨拶をするというタスクが規定されている。
図5において、トリガー番号が0である最初の行のトリガー判定式は「関数_人間接近検出(関数実行ロボットID,10メートル)==検出」である。「関数_人間接近検出()」はトリガー判定プログラム144にある関数であり、人間が接近してきたことを検出するトリガー判定式である。1番目の引数「関数実行ロボットID」は判定を実行するロボットのロボットIDを示し、2番目の引数「10メートル」は人間の接近を判定する距離の閾値である。人間がロボットの10メートル以内に入ると関数の値が真となる。なお、人が多い場所では、「10メートル」という閾値では、挨拶すべき相手ではない人間を誤検出する場合が増え、挨拶をすべき人間の接近を正しく検出する成功率が低くなる可能性がある。その場合、ロボットを管理する主体、例えば管理者は、この引数を例えば「6メートル」のように、より短い距離に変更すればよい。
トリガー判定プログラム144にてトリガー判定式が「真」と判定されると、トリガー判定プログラム144から個別型タスク実行プログラム142にトリガー判定式が真であるという応答が返送される。トリガー判定式が真であるという応答を受けた個別型タスク実行プログラム142は、アクション「関数_ターゲットロック(関数実行ロボットID)」をアクション実行プログラム143に実行させる。
関数_ターゲットロック()はアクション実行プログラム143に備えられた関数の関数名である。その引数「関数実行ロボットID」は関数を実行するロボットのロボットIDである。すなわち、このアクションは、人間が自分に近いている可能性があると判断したロボットが、この人間を対人サービスのターゲットとしてロックするというアクションである。人間をターゲットとしてロックする処理というのは具体的には例えば人間の顔を認識する処理である。
次に、トリガー番号が1の行に移行する。この行のトリガー判定式は「真」、つまり常に真であるので、個別型タスク実行プログラム142は、ターゲットロックのアクションを実行した後、自動的に、この行の「関数_顔向き調整(関数実行ロボットID)」を、アクション実行プログラム143に実行させる。こうすると、ロボットは自分の顔を対人サービスのターゲットである人間(顧客)に向け、その顧客に目線を合わせる。
次に、トリガー番号が2の行に移行する。この行のトリガー判定式は「関数_距離判断(関数実行ロボットID,ターゲット座標)<=5メートル」であり、ロックしたターゲットとの距離を測定して閾値と比較し、距離が5メートル以内になったら、「真」と判断する。これは、ターゲットとしてロックした人間がロボットに何らかのサービスを求めている可能性が高いという判断である。この場合、「関数_胴体向き調整(関数実行ロボットID)」が実行され、ロボットはターゲットである人間に体を向ける。人が多い場所では、「5メートル」という距離は、ターゲットの人間がロボットに何らかのサービスを求めているか否かを正しく検出できず、成功率が低くなる可能性がある、その場合、ロボットを管理する主体、例えば管理者は、閾値とする引数を例えば「2メートル」というように、より短い距離に変更すればよい。
次に、トリガー番号が−1という最後の行に移行する。「関数_正面検出(関数実行ロボットID)==検出」というトリガー判定式は「真」というのは、サービスターゲットである人間がロボットに何らかのサービスを求めていることが確実であると判断する判定式である。このトリガー判定式が真となったら、「関数_挨拶(関数実行ロボットID)」をアクション実行プログラム143に実行させる。これにより、ロボットがターゲットである人間に挨拶する。例えば、ロボットは人間に「こんにちは、何かお困りでしょうか」と尋ねる。
個別型タスク管理サーバSTSがロボットにタスク、例えばタスクtを実行させる動作について説明する。
個別型タスク管理プログラム141はタスクtの実行を要求するリクエストを受信すると、タスク初期処理を実行する。
図21は、個別型のタスク初期処理のフローチャートである。
個別型タスク管理プログラム141は、ステップS14101により、タスク初期処理依頼メッセージM1を通信インターフェース15又はバス12を介して受信する。タスク初期処理依頼メッセージM1の送信元は、少なくとも、アクション実行プログラム143、トリガー判定プログラム144、またはタスク設定用端末TSTである可能性が考えられる。個別型タスク管理プログラム141は、本メッセージのメッセージ識別子M101を検査することにより、本メッセージがタスク初期処理依頼メッセージM1であること確認することができる。
次に、個別型タスク管理プログラム141は、ステップS14102により、タスク初期処理依頼メッセージM1を解読し、実行が要求されたタスクである依頼タスクのユニバーサルタスク番号M102と、依頼タスクを実行することが希望されたロボットである希望ロボットのロボットID M103を取得する。
さらに、個別型タスク管理プログラム141は、タスクライブラリテーブル131を、バス12を介して参照し、得したユニバーサルタスク番号M102を用いて、依頼タスクに該当するタスクのタスク名13102、対応能力要求13103、および他タスク並行実行可否13104を取得する。
他タスク並行実行可否13104の情報が「否」である場合、個別型タスク管理プログラム141は、ステップS14103により、実行中タスク状態テーブル133のタスク管理番号13301を参照し、希望ロボットが現在、タスクを実行しているかどうかを確認する。希望ロボットがタスクを実行している場合、個別型タスク管理プログラム141は、現在、希望ロボットはタスクtを実行できない状態であると判断し、ステップS14112により、対応不可な場合に実行すべきデフォルトタスクをアクション実行プログラム143に実行させる。希望ロボットがタスクを実行していない場合、個別型タスク管理プログラム141は、タスクtを実行できると判断し、ステップS14104に移行する。
ステップS14104に移行すると、個別型タスク管理プログラム141は、タスク初期処理依頼メッセージM1にある希望ロボットのロボットID M103を用いて、ロボット状態テーブル135から希望ロボットのタスク対応能力13503を取得する。次に、個別型タスク管理プログラム141は、ステップS14105により、ステップS14102で取得したタスクtの対応能力要求13103(「(オプション)」で示された能力を除く)と、希望ロボットのタスク対応能力13503を比較し、希望ロボットが単体でタスクtに対応できるか否か判定する。対応能力要求13103においてオプションとされた能力は、省略可能なアクションにて必要とされる能力である。ここでオプションの能力を除外したのは、希望ロボットがその能力を備えていなくても依頼タスクに個別対応が可能だからである。
個別型タスク管理プログラム141は、タスクtに希望ロボットが単体で対応できると判断したらステップS14106に移行し、タスクtに希望ロボットが単体で対応できないと判断したらステップS14110に移行する。ステップS14110では、個別型タスク管理プログラム141は、タスクtが連携対応できるか否か判定する。タスクtが連携対応できるものであれば、個別型タスク管理プログラム141は、ステップS14111により、通信インターフェース15を介して連携型タスク管理サーバMTSに、依頼タスクの連携対応を依頼するために連携依頼メッセージM2を送信する。一方、タスクtが連携対応できない場合、個別型タスク管理プログラム141は、ステップS14112に移行する。
一方、ステップS14106に移行すると、個別型タスク管理プログラム141は、取得したユニバーサルタスク番号13101を用いて、タスクtの個別形態tsに対応するトリガーアクション設定テーブル場所13105を取得し、そこに示された場所からトリガーアクション設定テーブル134の一行目を読込む。更に、個別型タスク管理プログラム141は、ステップS14107により、実行中タスク状態テーブル133にタスクtの行を追加することによりタスクtを実行中のタスクとし、その行にタスクtの関連情報を書込む。次に、個別型タスク管理プログラム141は、ステップS14108により、受付済みタスクテーブル132にもタスクtの行を追加することによりタスクtを受付済みタスクとし、その行にもタスクtの関連情報を書込む。
最後に、個別型タスク管理プログラム141は、ステップS14109により、ロボット状態テーブル135のロボットIDを参照して希望ロボットの状態を示す情報を識別し、希望ロボットの現在のタスクのタスク管理番号13504を、タスクtを示す番号に更新する。
ここに示したように、タスク管理部(メモリ14上の個別型タスク管理プログラム141)がタスクの実行を管理する。記憶装置13には、タスク毎にタスクが他のタスクと並行して実行できるタスクであるか否かを規定したタスクライブラリ情報(タスクライブラリテーブル131)が記録されている。タスク管理部(個別型タスク管理プログラム141)は、タスクの実行が要求されたときタスクライブラリ情報を参照し、タスクが他のタスクと並行して実行できるものであれば他のタスクが実行中か否かによらずタスク実行部(個別型タスク実行プログラム142)にタスクの実行を開始させ、タスクが他のタスクと並行して実行できないものであれば他のタスクが実行されているか否か確認し、他のタスクが実行されていれば、他のタスクが終了してからタスク実行部にタスクを実行させる。他のタスクと並行して実行することが可能なタスクであれば早期に開始することができるので、対人サービスの提供を迅速に進めることができる。
また、連携型タスク管理部(連携型タスク管理プログラム241)は、タスクに含まれるそれぞれのアクションに要求される要求能力に基づいて、タスクに含まれるアクションとそのアクションの実行に利用するロボットとを設定する。タスクに含まれるアクションをその要求能力に応じて複数のロボットに割り当てることができるので、個々に能力が異なる複数のロボットを組み合わせて有効に活用し、様々な能力を必要とするタスクを効率よく実行することができる。
連携型タスク管理部(連携型タスク管理プログラム241)は、タスクに含まれる全てのアクションに要求される要求能力を備えたロボットの有無を調査し、要求能力を備えたロボットがあれば、ロボットをタスクに含まれるアクションに優先的に割り当てる。タスクに含まれる全てのアクションを賄えるロボットがあれば、そのロボットを優先的に用いて全てのアクションを1つのロボットに実行させるので、効率よくタスクを実行することができる。
ただし、図5に示したように、タスクに含まれるアクションには実行を省略することが可能な省略可能アクションがある場合がある。連携型タスク管理部は、タスクに含まれる全てのアクションに要求される要求能力を備えたロボットが無ければ、タスクに含まれる省略可能アクション以外の全てのアクションに要求される要求能力である必須要求能力を備えたロボットの有無を調査し、オプションの要求能力を備えていなくても必須要求能力を備えたロボットがあれば、そのロボットを前記タスクに含まれるアクションに優先的に割り当てる。省略可能なアクションを除けばタスクに含まれるアクションを1つのロボットで実行できる場合に、そのロボットにタスクを実行させることができるので、ロボットのリソースを有効に利用することができる。連携型タスク管理部は、要求能力を満たすロボットが存在しないアクションが省略可能アクションであれば、その省略可能アクションの省略を決定する。省略可能なアクションを除けばタスクに含まれるアクションを満たすロボットがある場合に、省略可能なアクションを省略してタスクの実行を確保することができる。
個別型タスク実行プログラム142がタスクtをアクション単位で段階的に進行させる個別型タスク実行処理について説明する。
図22は、個別型タスク実行処理のフローチャートである。ステップS14201により、個別型タスク実行プログラム142は、実行中タスク状態テーブル133を行ごとでスキャンし、以下の処理を繰り返す。
ステップS14202により、個別型タスク実行プログラム142は、実行中タスク状態テーブル133のタスク管理番号13301を用いて受付済みタスクテーブル132を参照し、スキャンしたタスクの対応方法13203を確認する。
タスクtの対応方法13203が連携対応である場合、個別型タスク実行プログラム142は、ステップS14210に移行する。一方、タスクtの対応方法13203が個別対応である場合、個別型タスク実行プログラム142は、ステップS14211に移行する。
ステップS14211では、個別型タスク実行プログラム142は、当該タスクを実行しているロボットが実行しているタスクが並行実行可能かどうか判定する。当該ロボットが複数のタスクを並行して実行している場合、タスクにて次に実行すべきアクションと、当該ロボットが現在実行中の他の全てのタスクのアクションが並行実行可能かどうか判定する。
並行実行ができない場合、個別型タスク実行プログラム142は、ステップS14210に移行する。並行実行可能な場合、個別型タスク実行プログラム142は、ステップS14203に移る。
ステップS14203では、個別型タスク実行プログラム142は、該当する行の現在のトリガー判定式23302を読込み、トリガー判定依頼メッセージM3にそのトリガー判定式23302を含めて、トリガー判定依頼メッセージM3を、バス12を介してトリガー判定プログラム144に送信する。
トリガー判定依頼メッセージM3は、ステップS14204でトリガー判定結果メッセージM4を受信し、トリガー判定結果メッセージM4内のメッセージ識別子M401を確認する。例えば、トリガー判定結果メッセージM4がトリガー判定依頼メッセージM3に対する応答であるとすると、それら2つのメッセージに含まれるメッセージ識別子が一致する。
次に、個別型タスク実行プログラム142は、ステップS14205によりトリガー判定結果を読み込んで、トリガー判定式M302が満足されたかどうかを確認する。トリガー判定式M302が満足されていない場合、個別型タスク実行プログラム142は、本トリガーに対応するアクションを実行せずにステップS14210に移行する。一方、トリガー判定式M302が満足された場合、個別型タスク実行プログラム142は、本トリガーに対応するアクションを実行するので、ステップS14206に移行する。
ステップS14206により、個別型タスク実行プログラム142は、該当する行のアクション及びトリガー番号M705を含めたアクション実行依頼メッセージM7をアクション実行プログラム143に送信する。
続いて、ステップS14207で、個別型タスク実行プログラム142は、ステップS14206で実行したアクションが該当タスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、トリガー番号M705が最後の番号であるかどうかをチェックすることである。
実行したアクションが最後のアクションである場合、個別型タスク実行プログラム142は、ステップS14208により、実行中タスク状態テーブル144の現在の行を削除し、ステップS14210に移行する。
一方、実行したアクションが最後のアクションではない場合、個別型タスク実行プログラム142は、ステップS14209に移行する。個別型タスク実行プログラム142は、ステップS14209により、トリガーアクション設定テーブル134を参照して、実行したアクションの次のアクション13404に対応する行の情報を用いて、実行中タスク状態テーブル144の現在の行を更新する。
なお、次のアクションのアクション要求能力が、当該ロボットにとって実行できないものである場合、該当アクションをスキップし、次々のアクションに対応する行の情報を用いて、実行中タスク状態テーブル144の現在の行を更新する。
なお、次のアクションのアクション要求能力が、当該ロボットにとって実行できるものか否かは、タスク対応能力13503を参考することにより分かる。
最後に、個別型タスク実行プログラム142は、ステップS14210に移行する。
上述したように、個別型タスク実行プログラム142はトリガー判定プログラム144にトリガー判定式M302が満足されているかどうかを判定させて、その判定結果に基づいてアクションの実行可否を判断する。また、後で詳しく説明するが、連携型タスク実行プログラム242もトリガー判定プログラム144にトリガー判定式M302を計算させて、その計算結果に基づいてアクションの実行可否を判断する。
ここに示したように、トリガーアクション情報(トリガーアクション設定テーブル134)には、アクションが他のアクションと並行して実行できるアクションであるか否かが設定されている。タスク実行部(個別型タスク実行プログラム142)は、選択したアクションが他のアクションと並行して実行できる場合には、先行するアクションを実行中に、選択したアクションのトリガー条件が満たされたか否かをトリガー判定部(トリガー判定プログラム144)に判定させ、選択したアクションが他のアクションと並行して実行できない場合には、先行するアクションが終了してから、選択したアクションのトリガー条件が満たされたか否かトリガー判定部に判定させる。他のアクションと並行して実行することが可能なアクションであれば早期に開始することができるので、一連のアクションを迅速に進めることができる。
ここで、それらに共通するトリガー判定プログラム144によるトリガー判定処理について説明する。
図23は、トリガー判定処理のフローチャートである。
トリガー判定プログラム144は、ステップS14401により、トリガー判定依頼メッセージM3またはトリガー計算依頼メッセージM5を、バス12または通信インターフェース15を介して受信すると、トリガー判定処理を開始する。続いて、トリガー判定プログラム144は、ステップS14402により、受信したメッセージにあるトリガー判定式M302の文字列から関数名と引数を識別する。更に、トリガー判定プログラム144は、ステップS14403により関数を実行する。
そして、トリガー判定プログラム144は、ステップS14404にて、受信したメッセージのメッセージ識別子M401を用いて、受信したメッセージの種類を判断する。受信したメッセージがトリガー計算依頼メッセージM5である場合、トリガー判定プログラム144は、ステップS14405に移行して、実行した関数の戻り値をトリガー計算結果メッセージM6に含めて、通信インターフェース15を介して、連携型タスク実行プログラム242に送信する。
一方、受信したメッセージがトリガー判定依頼メッセージM3である場合、トリガー判定プログラム144は、ステップS14406に移行し、現在のトリガー判定式23302の文字列から条件式を識別し、実行した関数の戻り値を条件式に代入し、真偽の判定を実施する。
そして、トリガー判定プログラム144は、ステップS14407により、判定の結果をトリガー判定結果メッセージM4に含めて、バス12を介して個別型タスク実行プログラム142に返信する。
上述したように、個別型タスク実行プログラム142はトリガー判定式M302が満足されたらアクション実行プログラム143にアクションを実行させる。また、後で詳しく説明するが、連携型タスク実行プログラム242もトリガー判定式が満足されたらアクション実行プログラム143にアクションを実行させる。
アクション実行プログラム143は、個別型タスク実行プログラム142または連携型タスク実行プログラム242の依頼によりアクション実行処理によりアクションを実行する。
図24は、アクション実行処理のフローチャートである。
アクション実行プログラム143は、ステップS14301により、アクション実行依頼メッセージM7を、バス12または通信インターフェース15を介して受信すると、アクション実行処理を開始する。
続いて、アクション実行プログラム143は、ステップS14302により、受信したメッセージにあるアクションM702の文字列から関数名および引数を識別し、ステップS14303により関数を実行する。
次に、アクション実行プログラム143は、ステップS14304にて、ステップS14303で実行したアクションがタスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、アクション実行プログラム143は、現在のトリガー番号13305が最後の番号であるかどうかをチェックする。実行したアクションが最後のアクションではない場合、アクション実行プログラム143は、処理を終了する。
一方、実行したアクションが最後のアクションである場合、アクション実行プログラム143は、ステップS14305に移行する。ステップS14305では、アクション実行プログラム143は、受信したアクション実行依頼メッセージM7の依頼元ID M703を用いて、バス12を介して記憶装置13にアクセスし、ロボット状態テーブル135から現在のタスクのタスク管理番号13504を削除する。
なお、アクションは他のタスクを起動することができる。例えば、タスクtの個別形態tsに含まれる一つのアクションは、別のタスクを実行させる関数である。この関数はタスクを起動するための汎用性を持ち、例えば、引数に基づいてタスク初期処理依頼メッセージM1を生成して個別型タスク管理プログラム141に送信するという機能を持つものである。
タスクtからタスクqを起動するため、アクション実行プログラム143は、この関数をアクションとして用いることにより、初期処理依頼メッセージM1を生成して個別型タスク管理プログラム141に送信する。
初期処理依頼メッセージM1を受信した個別型タスク管理プログラム141が、タスクqを連携対応すると決めれば、タスクqは連携型タスク管理サーバMTSによって処理されることになる。したがって、個別形態のタスクが連携形態のタスクを起動することも可能である。なお、その場合に連携型のタスクqと個別型のタスクtが同じ内容のタスクであってもよい。
連携型タスク管理サーバMTSがロボットにタスクを実行させる動作について説明する。
連携型タスク管理プログラム241は、タスクを実行させるリクエストを受信すると、タスク初期処理を実行する。
図25は、連携型のタスク初期処理のフローチャートである。
連携型タスク管理プログラム241は、ステップS24101により、連携依頼メッセージM2を、通信インターフェース25を介して受信すると、タスク初期処理を開始する。
連携依頼メッセージM2の送信元は、少なくとも、アクション実行プログラム143、トリガー判定プログラム144、またはタスク設定用端末TSTのいずれかである可能性が考えられる。
続いて、連携型タスク管理プログラム241は、ステップS24102により、連携先ロボットを選定する処理を実行する。連携型タスク管理プログラム241は、連携依頼メッセージM2にある依頼タスクのユニバーサルタスク番号M202及び依頼元ID M203を用いて、連携型タスクライブラリテーブル231及びロボット状態テーブル135を参照し、依頼タスクに対応することができるロボットを選定する。
そして、連携型タスク管理プログラム241は、ステップS24103により、依頼タスクに対応できるロボット、つまり連携先ロボットとなるロボットが存在するかどうかを判断する。連携先ロボットが存在するかどうかを判定する方法として、例えば、連携型タスクライブラリテーブル231にある連携条件23103を満たしているロボットが、ロボット状態テーブル135に存在するかどうかを検索する、という方法がある。
連携先となるロボットが存在しない場合、連携型タスク管理プログラム241は、ステップS24104に移行し、連携元ロボットの実行中タスク状態テーブル133および受付済みタスクテーブル132に、連携が拒否された時に実行すべきデフォルトタスクの行を追加し、その行にデフォルトタスクの関連情報を書込む。
一方、連携先となるロボットが存在する場合、連携型タスク管理プログラム241は、そのロボットを連携先とし、ステップS24105に移行し、連携型タスクライブラリテーブル231を参照して、ユニバーサルタスク番号M202に対応する連携型タスクのトリガーアクション設定テーブル234の一行目を読込んで、実行中連携型タスク状態テーブル233および受付済み連携型タスクテーブル232に連携先の関連情報を書込む。
なお、トリガー判定式23402及びアクション23404にある連携先と連携元を、連携先としたロボットを示す連携先IDと、連携元となるロボットを示す連携元IDで書き換える。
続いて、連携型タスク管理プログラム241は、連携中のロボットが並行実行不可のほかのタスクを受け付けることを防ぐため、ステップ241016により、個別型タスク管理サーバの実行中タスク状態テーブル133および受付済みタスクテーブル132に、連携型タスクの関連情報を書込む。
最後に、連携型タスク管理プログラム241は、ステップ24107により、連携元および連携先のロボットのロボットID13502を用いて、ロボット状態テーブル135における現在のタスクのタスク管理番号13504を更新する。
図21および図25を用いて、ここまでに示したように、個別型タスク管理プログラム141がタスクを個別対応できないと判断した場合に、連携型タスク管理プログラム241が連携対応できるかどうか判断する。タスクに連携対応できる場合には、連携型タスクライブラリテーブル231を用いてタスクを実行する。このときタスクのアクションは、個別型タスクライブラリテーブル131に規定されたものから連携型タスクライブラリテーブル231に規定されたものへと切り替えられることとなる。このとき、ロボットの交代をユーザに認識させるために、連携元ロボットおよび連携先ロボットの少なくとも一方が実行する引継ぎのアクションが挿入されることとなる。
すなわち、連携型タスク管理部(連携型タスク管理プログラム241)が、あるアクション(第1のアクション)の実行にあるロボット(第1のロボット)を割り当て第1のアクションに続く他のアクション(第2のアクション)の実行に他のロボット(第2のロボット)を割り当てる場合、第1のアクションと第2のアクションの間に、ロボットの交代をユーザに認識させるために、第1のロボットおよび第2のロボットの少なくとも一方が実行する引継ぎアクションを挿入している。タスクを構成するアクション間でロボットが交代するとき引継ぎアクションによってロボットの交代をユーザに認識させることができるので、ユーザにとって違和感のない自然な対人サービスを実現することができる。
このとき、引継ぎアクションを簡単な動作とし、トリガーアクション情報に第2のアクションが他のアクションと並行して実行できることを設定してもよいが、あるいは、第2のアクションが他のアクションと並行して実行できないことを設定することにしてもよい。そうすると、複数のロボットを連携させる場合に第1のロボットから第2のロボットへの交替をユーザに認識させてから第2のロボットの行動を開始させるので、自然な連携を確実に達成することができる。
連携型タスク実行プログラム242は連携型のタスクをアクション単位で段階的に進行させる連携型タスク実行処理について説明する。
図26は、連携型タスク実行処理のフローチャートである。ステップS24201により、連携型タスク実行プログラム242は、実行中連携型タスク状態テーブル233を行ごとでスキャンし、以下の処理を繰り返す。
ステップS24210において、連携型タスク実行プログラム242は、当該タスクを実行しているロボットが実行しているタスクが並行実行化のかどうか判定する。当該ロボットが複数のタスクを並行実行している場合、連携型タスク実行プログラム242は、そのタスクにおいて次に実行すべきアクションと、当該ロボットが現在実行中の他の全てのタスクのアクションが並行実行可能かどうか判定する。
並行実行ができない場合、連携型タスク実行プログラム242は、ステップS24209に移行する。並行実行可能な場合、連携型タスク実行プログラム242は、ステップS24202により、スキャンした行の現在のトリガー判定式23302を読込み、このトリガー判定式23302に含まれた関数の引数により、トリガー判定式の判定に関与するロボットを確認する。
そして、連携型タスク実行プログラム242は、確認した関与ロボットを1つずつ依頼先とし、トリガー計算依頼メッセージM5を、通信インターフェース25を介してトリガー判定プログラム144に送信する。なお、送信された各トリガー計算依頼メッセージM5の「トリガー計算式」の箇所に搭載されるのは、依頼先のロボットが関与する関数を表す文字列である。
そして、連携型タスク実行プログラム242は、ステップS24203により、送信した各トリガー計算依頼メッセージM5に対応する各トリガー計算結果メッセージM6を受信してメッセージ識別子M601を確認する。そして、連携型タスク実行プログラム242は、ステップS24204により、ステップS24204で得たすべてのトリガー計算結果メッセージM6の計算結果を用いて、現在のトリガー判定式23302が満足されたかどうかを確認する。
本トリガー判定式が満足されていない場合、連携型タスク実行プログラム242は、本トリガー判定式に対応するアクションを実行せずステップS24209に移行する。一方、トリガー判定式が満足された場合、連携型タスク実行プログラム242は、本トリガー判定式に対応するアクションを実行するために、ステップS24205に移行する。ステップS24205では、連携型タスク実行プログラム242は、トリガー判定式に該当する行のアクション23404の文字列から、本アクションに関与する連携ロボットを確認し、確認した関与ロボットを1つずつ依頼先として、現在のトリガー番号23305を含めたアクション実行依頼メッセージM7を、アクション実行プログラム143に送信する。
続いて、連携型タスク実行プログラム242は、ステップS24206で、ステップS24205で実行したアクションが該当タスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、トリガー番号23305が最後の番号であるかどうかをチェックするという方法がある。実行したアクションが最後のアクションである場合、連携型タスク実行プログラム242は、ステップS24207により、実行中タスク状態テーブル144および実行中連携型タスク状態テーブル244の現在の行を削除し、ステップS24209に移行する。
一方、実行したアクションが最後のアクションではない場合、連携型タスク実行プログラム242は、ステップS24208に移行する。ステップS24208では、連携型タスク実行プログラム242は、連携型トリガーアクション設定テーブル234を参照して、実行したアクションの次のアクションに対応する行の情報を用いて、実行中連携型タスク状態テーブル244および実行中タスク状態テーブル144の現在の行を更新する。最後に、連携型タスク実行プログラム242はステップS24209に移行する。
図27は、個別型タスク管理サーバSTSにある個別型タスク管理プログラム141、個別型タスク実行プログラム142、アクション実行プログラム143、およびトリガー判定プログラム144と、連携型タスク管理サーバMTSにある連携型タスク管理プログラム241および連携型タスク実行プログラム242が互いにメッセージをやりとりする様子を説明するためのシーケンス図である。図27には、典型的な例が示されている。
まず、個別型タスク実行プログラム142がステップS14203にしたがってトリガー判定依頼メッセージM3をトリガー判定プログラム144に送信する(ステップT1)。そして、トリガー判定プログラム144が、図23に示されたフローチャートに従って判定を行い、トリガー判定結果メッセージM2を個別型タスク実行プログラム142に返信する(ステップT2)。この例では、判定結果メッセージのトリガー判定結果M402が「真」であるとする。
個別型タスク実行プログラム142はステップS14206にしたがってアクション実行依頼メッセージM7を生成してアクション実行プログラム143に送信する(ステップT3)。この例では、アクション実行依頼メッセージM7にあるアクションM702は別のタスクを実行するアクションであるとする。アクション実行プログラム143はタスク初期処理依頼メッセージM1を個別型タスク管理プログラム141に送信する(ステップT4)。
そして個別型タスク管理プログラム141はメッセージM1を受信してタスク初期処理を実行する。
この例では、個別型タスク管理プログラム141が、ステップS14110により、タスクが連携対応可能であることを判断するものとする。個別型タスク管理プログラム141は、連携依頼メッセージM2を連携型タスク管理プログラム241に送信する(ステップT5)。続いて、連携型タスク管理プログラム241は、図25に示されたように、実行中連携型タスク状態テーブル233にタスクの関連情報を記入する。また、連携型タスク実行プログラム242は実行中連携型タスク状態テーブル233をスキャンしてタスクの処理を開始し、ステップS24202により、トリガー計算依頼メッセージM5をトリガー判定プログラム144に送信する(ステップT6)。
続いて、トリガー判定プログラム144が、図23に示されたフローチャートに従って判定を行い、トリガー計算結果メッセージM6を個別型タスク実行プログラム142に返信する(ステップT7)。この例で、連携型タスク実行プログラム242がステップS24204により、判定結果メッセージのトリガー計算結果M602を用いてトリガー条件が満たされたと判断するものとする。そして、連携型タスク実行プログラム242は、アクション実行依頼メッセージM7をアクション実行プログラム143に送信する(ステップT8)。
以上、説明したように、ロボットの行動を一連のアクションとして段階的に設定する手段を提供することで、ロボットに当時の環境、場面、要求に応じて適切に行動させるようになる。さらに、ロボットが人間従業員のように、周りの状況の変化に対応して行動の進め方をコントロールできるようになり、ロボットの行動がユーザに対して自然で友好的であるため、ユーザにサービスの状況を容易で正確に把握してもらえる。したがって。対人サービスの成功率と顧客体験が向上する。
なお、本発明の実施形態について図面を参照して説明したが、本発明がその実施形態に限定されるものではない。例えば、個別型タスク管理サーバSTSと連携型タスク管理サーバMTSはその物理的な構成は特に限定されることはない。個別型タスク管理サーバSTSと連携型タスク管理サーバMTSが同一装置上に実装されていてもよい。また、個別型タスク管理サーバSTSの有する機能が複数の装置に分散配置されていてもよい。また、連携型タスク管理サーバMTSの有する機能が複数の装置に分散配置されていてもよい。
また、本発明は、実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。