(57)【要約】【課題】ロボットによる対人サービスにおいてユーザーが自然に感じるようにサービスを提供することを可能にする技術を提供する。【解決手段】ロボット制御システムは、ユーザーに装着された脈拍計２と、ロボットＲ１，Ｒ２に実行させるタスクを一連のアクションで構成し、脈拍計２の情報を連動させ、アクションとアクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶する記憶部と、アクションのトリガー条件が満たされたか否か判定するトリガー判定部と、アクションを実行するアクション実行部と、ロボットＲ１，Ｒ２に実行させるタスクのトリガーアクション情報に規定されたアクションを順次選択し、選択したアクションのトリガー条件が満たされたか否かトリガー判定部に判定させ、トリガー条件が満たされれば、選択したアクションをアクション実行部に実行させるタスク実行部と、を有する。【選択図】図１
2020138255.tif 000002
【特許請求の範囲】
【請求項１】
対人サービスを実行するロボットを制御するロボット制御システムであって、
ユーザーに装着された脈拍計と、
前記ロボットに実行させるタスクを一連のアクションで構成し、前記脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶する記憶部と、
前記アクションの前記トリガー条件が満たされたか否か判定するトリガー判定部と、
前記アクションを実行するアクション実行部と、
前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させ、前記トリガー条件が満たされれば、前記選択したアクションを前記アクション実行部に実行させるタスク実行部と、を有するロボット制御システム。
【請求項２】
前記トリガーアクション情報には、前記アクションが他の前記アクションと並行して実行できるアクションであるか否かがさらに設定されており、
前記タスク実行部は、前記選択したアクションが前記他のアクションと並行して実行できる場合には、先行する前記アクションを実行中に、前記選択したアクションの前記トリガー条件が満たされたか否かを前記トリガー判定部に判定させ、前記選択したアクションが前記他のアクションと並行して実行できない場合には、前記先行するアクションが終了してから、前記選択したアクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させる、請求項１に記載のロボット制御システム。
【請求項３】
前記タスクの実行を管理するタスク管理部をさらに有し、
前記記憶部は、前記タスク毎に前記タスクが他の前記タスクと並行して実行できるタスクであるか否かを規定したタスクライブラリー情報をさらに記憶し、
前記タスク管理部は、前記タスクの実行が要求されたとき前記タスクライブラリー情報を参照し、前記タスクが前記他のタスクと並行して実行できるものであれば前記他のタスクが実行中か否かによらず前記タスク実行部に前記タスクの実行を開始させ、前記タスクが前記他のタスクと並行して実行できないものであれば前記他のタスクが実行されているか否か確認し、前記他のタスクが実行されていれば、前記他のタスクが終了してから前記タスク実行部に前記タスクを実行させる、請求項１又は２に記載のロボット制御システム。
【請求項４】
前記対人サービスに利用可能な前記ロボットが複数あり、
前記トリガーアクション情報には前記アクション毎に前記アクションを実行させる前記ロボットの割当てが設定可能であり、
前記アクション実行部に、前記トリガーアクション情報に含まれるそれぞれの前記アクションを前記トリガーアクション情報にて前記アクションの実行に割り当てられた前記ロボットを用いて実行させる連携型タスク実行部をさらに有する、請求項１又は２に記載のロボット制御システム。
【請求項５】
前記タスクに含まれるそれぞれの前記アクションに要求される要求能力に基づいて、前記タスクに含まれる前記アクションと前記アクションの実行に利用する前記ロボットとを設定する連携型タスク管理部をさらに有する、請求項４に記載のロボット制御システム。
【請求項６】
前記連携型タスク管理部は、第１の前記アクションの実行に第１の前記ロボットを割当て前記第１のアクションに続く第２の前記アクションの実行に第２の前記ロボットを割り当てる場合、前記第１のアクションと前記第２のアクションとの間に、前記ロボットの交代を前記ユーザーに認識させるために前記第１のロボット及び前記第２のロボットの一方が実行する引継ぎアクションを挿入する、請求項５に記載のロボット制御システム。
【請求項７】
前記連携型タスク管理部は、前記トリガーアクション情報に前記第２のアクションが他の前記アクションと並行して実行できないことを設定する、請求項６に記載のロボット制御システム。
【請求項８】
前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットの有無を調査し、前記要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てる、請求項５に記載のロボット制御システム。
【請求項９】
前記タスクに含まれる前記アクションには実行を省略することが可能な省略可能アクションがある場合があり、
前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットが無ければ、前記タスクに含まれる前記省略可能アクション以外の全ての前記アクションに要求される前記要求能力である必須要求能力を有した前記ロボットの有無を調査し、前記必須要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てる、請求項８に記載のロボット制御システム。
【請求項１０】
前記省略可能アクションがあり、
前記連携型タスク管理部は、前記要求能力を満たす前記ロボットが存在しない場合、前記アクションが前記省略可能アクションであれば、前記省略可能アクションの省略を決定する、請求項９に記載のロボット制御システム。
【請求項１１】
対人サービスを実行するロボットを制御するためのロボット制御方法であって、
記憶手段が、前記ロボットに実行させるタスクを一連のアクションで構成し、ユーザーに装着された脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶し、
タスク実行手段が、前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か判定し、
前記トリガー条件が満たされれば、アクション実行手段が、前記選択したアクションを実行する、ロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボット制御システム及びロボット制御方法に関するものである。
【背景技術】
【０００２】
人間にサービスを提供する対人サービスロボットに関する研究及び開発が加速している。また、実際にロボットが人間に様々なサービスを提供し始めている。ロボットによる対人サービスには、単独のロボットにより提供されるものの他、複数のロボットにより提供されるものもある。特許文献１には、複数のロボットを連携させて一連のフロー処理を実行させることにより、サービスを確実に提供し、かつロボットリソースを有効に活用するロボット連携システムが開示されている。また、特許文献２には、人間が自然に感じるようにサービスを提供するロボットによる対人サービスが開示されている。
【０００３】
対人サービスを提供するロボットの行動とその対人サービスを人間が提供した場合に想定される行動とが異なると、対人サービスを受けるユーザーが違和感を持つ場合がある。例えば、ロボットが人間であれば行動を起こすであろうタイミングに適切に行動を起こさないと、ユーザーは、ロボットの行動に違和感を持つことがある。また、複数のロボットが連携してユーザーにサービスを提供する場合、あるロボットの作業の続きを他のロボットが唐突に始めるとユーザーは違和感を持つ場合がある。人間であれば作業を引き継ぐための行動をすると想定されるため、ロボット間で唐突に作業が引き継がれると、ユーザーは、ロボット同士が連携していることを認識できないため、その行動に違和感を持つ。
【０００４】
ユーザーは、対話によりロボットあるいはシステムにロボットによる何らかの対人サービスを要求した場合、サービス要求の意図が正しくロボットあるいはシステムに伝わっているかどうか分からなければ不安を感じる。その結果、ユーザーは、サービスが正常に実行されているにも関わらず同じサービスを再度要求してしまったり、途中でサービスをキャンセルしてしまったりすることがある。そのため、対人サービスにおいては、できるだけユーザーが違和感を持たないように、ユーザーにロボットの行動やその意図を理解させることが望まれる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４９８０１号公報
【特許文献２】特開２０１８−１１８３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のシステムでは、ユーザーが自然に感じられるようなサービスを提供することは考慮されてない。例えば、ユーザーにロボットの行動の意図を理解させるといったことは考慮されておらず、システムは、そのための構成を備えていない。
また、特許文献２のシステムでは、ユーザーの感情を認識してロボットに行動させることは考慮されておらず、ユーザーが自然に感じられるようなサービスを提供することが難しい。
【課題を解決するための手段】
【０００７】
本願のロボット制御システムは、対人サービスを実行するロボットを制御するロボット制御システムであって、ユーザーに装着された脈拍計と、前記ロボットに実行させるタスクを一連のアクションで構成し、前記脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶する記憶部と、前記アクションの前記トリガー条件が満たされたか否か判定するトリガー判定部と、前記アクションを実行するアクション実行部と、前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させ、前記トリガー条件が満たされれば、前記選択したアクションを前記アクション実行部に実行させるタスク実行部と、を有する。
【０００８】
上記のロボット制御システムでは、前記トリガーアクション情報には、前記アクションが他の前記アクションと並行して実行できるアクションであるか否かがさらに設定されており、前記タスク実行部は、前記選択したアクションが前記他のアクションと並行して実行できる場合には、先行する前記アクションを実行中に、前記選択したアクションの前記トリガー条件が満たされたか否かを前記トリガー判定部に判定させ、前記選択したアクションが前記他のアクションと並行して実行できない場合には、前記先行するアクションが終了してから、前記選択したアクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させることが好ましい。
【０００９】
上記のロボット制御システムでは、前記タスクの実行を管理するタスク管理部をさらに有し、前記記憶部は、前記タスク毎に前記タスクが他の前記タスクと並行して実行できるタスクであるか否かを規定したタスクライブラリー情報をさらに記憶し、前記タスク管理部は、前記タスクの実行が要求されたとき前記タスクライブラリー情報を参照し、前記タスクが前記他のタスクと並行して実行できるものであれば前記他のタスクが実行中か否かによらず前記タスク実行部に前記タスクの実行を開始させ、前記タスクが前記他のタスクと並行して実行できないものであれば前記他のタスクが実行されているか否か確認し、前記他のタスクが実行されていれば、前記他のタスクが終了してから前記タスク実行部に前記タスクを実行させることが好ましい。
【００１０】
上記のロボット制御システムでは、前記対人サービスに利用可能な前記ロボットが複数あり、前記トリガーアクション情報には前記アクション毎に前記アクションを実行させる前記ロボットの割当てが設定可能であり、前記アクション実行部に、前記トリガーアクション情報に含まれるそれぞれの前記アクションを前記トリガーアクション情報にて前記アクションの実行に割り当てられた前記ロボットを用いて実行させる連携型タスク実行部をさらに有することが好ましい。
【００１１】
上記のロボット制御システムでは、前記タスクに含まれるそれぞれの前記アクションに要求される要求能力に基づいて、前記タスクに含まれる前記アクションと前記アクションの実行に利用する前記ロボットとを設定する連携型タスク管理部をさらに有することが好ましい。
【００１２】
上記のロボット制御システムでは、前記連携型タスク管理部は、第１の前記アクションの実行に第１の前記ロボットを割当て前記第１のアクションに続く第２の前記アクションの実行に第２の前記ロボットを割り当てる場合、前記第１のアクションと前記第２のアクションとの間に、前記ロボットの交代を前記ユーザーに認識させるために前記第１のロボット及び前記第２のロボットの一方が実行する引継ぎアクションを挿入することが好ましい。
【００１３】
上記のロボット制御システムでは、前記連携型タスク管理部は、前記トリガーアクション情報に前記第２のアクションが他の前記アクションと並行して実行できないことを設定することが好ましい。
【００１４】
上記のロボット制御システムでは、前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットの有無を調査し、前記要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てることが好ましい。
【００１５】
上記のロボット制御システムでは、前記タスクに含まれる前記アクションには実行を省略することが可能な省略可能アクションがある場合があり、前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットが無ければ、前記タスクに含まれる前記省略可能アクション以外の全ての前記アクションに要求される前記要求能力である必須要求能力を有した前記ロボットの有無を調査し、前記必須要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てることが好ましい。
【００１６】
上記のロボット制御システムでは、前記省略可能アクションがあり、前記連携型タスク管理部は、前記要求能力を満たす前記ロボットが存在しない場合、前記アクションが前記省略可能アクションであれば、前記省略可能アクションの省略を決定することが好ましい。
【００１７】
本願のロボット制御方法は、対人サービスを実行するロボットを制御するためのロボット制御方法であって、記憶手段が、前記ロボットに実行させるタスクを一連のアクションで構成し、ユーザーに装着された脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶し、タスク実行手段が、前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か判定し、前記トリガー条件が満たされれば、アクション実行手段が、前記選択したアクションを実行する。
【図面の簡単な説明】
【００１８】
【図１】本実施形態によるサービスロボットシステムのシステム構成図。
【図２】本実施形態における脈拍計の構成を示すブロック図。
【図３】個別型タスク管理サーバーのハードウエア及びソフトウエアの構成を示すブロック図。
【図４】タスクライブラリーテーブルの構成例を示す図。
【図５】受付済みタスクテーブルの構成図。
【図６】トリガーアクション設定テーブルの構成図。
【図７】実行中タスク状態テーブルの構成図。
【図８】ロボット状態テーブルの構成図。
【図９】連携型タスク管理サーバーのハードウエア及びソフトウエアの構成を示すブロック図。
【図１０】連携型タスクライブラリーテーブルの構成図。
【図１１】受付済み連携型タスクテーブルの構成図。
【図１２】連携型トリガーアクション設定テーブルの構成図。
【図１３】実行中連携型タスク状態テーブルの構成図。
【図１４】ロボットの装置構成を示すブロック図。
【図１５】タスク初期処理依頼メッセージを示す図。
【図１６】連携依頼メッセージを示す図。
【図１７】トリガー判定依頼メッセージを示す図。
【図１８】トリガー判定結果メッセージを示す図。
【図１９】トリガー計算依頼メッセージを示す図。
【図２０】トリガー計算結果メッセージを示す図。
【図２１】アクション実行依頼メッセージを示す図。
【図２２】個別型のタスク初期処理のフローチャート。
【図２３】個別型タスク実行処理のフローチャート。
【図２４】トリガー判定処理のフローチャート。
【図２５】アクション実行処理のフローチャート。
【図２６】連携型のタスク初期処理のフローチャート。
【図２７】連携型タスク実行処理のフローチャート。
【図２８】個別型タスク管理サーバーと連携型タスク管理サーバーとが互いにメッセージをやりとりする様子を説明するためのシーケンス図。
【発明を実施するための形態】
【００１９】
本発明の実施形態について図面を参照して詳細に説明する。
【００２０】
＜システム構成の説明＞
図１は、本実施形態によるサービスロボットシステムのシステム構成図である。
本実施形態に係るロボット制御システムとしてのサービスロボットシステムは、ロボットＲ１，Ｒ２、脈拍計２、個別型タスク管理サーバー（Single type Task Server）ＳＴＳ、連携型タスク管理サーバーＭＴＳ、及びタスク設定用端末（Task Setting Terminal）ＴＳＴを備えている。ロボットＲ１，Ｒ２、脈拍計２、個別型タスク管理サーバーＳＴＳ、連携型タスク管理サーバーＭＴＳ、及びタスク設定用端末ＴＳＴは、ネットワークＮＷに接続されている。サービスロボットシステムは、対人サービスを実行するロボットＲ１，Ｒ２を制御する。
【００２１】
ロボットＲ１，Ｒ２は、ユーザーに各種サービスを提供するロボットである。ロボットとは自律移動可能な情報処理装置である。ロボットＲ１，Ｒ２により提供されるサービスは、ユーザーの要求あるいは状況に応じてロボットＲ１，Ｒ２がユーザーに対して提供する対人サービスである。対人サービスは、そのサービス内容毎のタスクとして設定されており、各タスクは、複数の一連のアクションで構成されている。ロボットＲ１，Ｒ２は、対人サービスに利用可能なロボットである。
【００２２】
脈拍計２は、ユーザーに装着されている。脈拍計２は、ユーザーの脈拍数を計測する。ロボットＲ１，Ｒ２は、脈拍数情報よりユーザーの感情をセンシングし、その情報からタスクのトリガー判定のしきい値を設定する。
【００２３】
個別型タスク管理サーバーＳＴＳは、ロボットＲ１，Ｒ２が単体で提供可能なサービスを制御するサーバーである。ロボットＲ１，Ｒ２が単体でサービスを提供する場合、そのサービスのタスクに含まれるアクションが全て１つのロボットにより実行される。
【００２４】
連携型タスク管理サーバーＭＴＳは、複数のロボットＲ１，Ｒ２が連携して提供するサービスを制御するサーバーである。複数のロボットＲ１，Ｒ２が連携してサービスを提供する場合、そのサービスのタスクに含まれるアクションが複数のロボットにより分担される。
【００２５】
ネットワークＮＷは、ロボットＲ１，Ｒ２、個別型タスク管理サーバーＳＴＳ、連携型タスク管理サーバーＭＴＳ、及びタスク設定用端末ＴＳＴを相互に接続する。ネットワークＮＷは、有線ＬＡＮ（Local Area Network）、無線ＬＡＮ、移動体通信網など様々な構成が考えられ、またそれらのうち複数の種類のネットワークで構成されていてもよい。また、ロボットＲ１，Ｒ２の設置場所と個別型タスク管理サーバーＳＴＳあるいは連携型タスク管理サーバーＭＴＳの設置場所とが異なっており、ネットワークＮＷがＷＡＮ（Wide Area Network）であり、設置場所の異なるロボットＲ１，Ｒ２と個別型タスク管理サーバーＳＴＳ及び連携型タスク管理サーバーＭＴＳとをＷＡＮで接続してもよい。なお、図１にはロボットが２台である例を示しているが、それに限定されない。ロボットは、何台であってもよい。
【００２６】
タスク設定用端末ＴＳＴは、個別型タスク管理サーバーＳＴＳ及び連携型タスク管理サーバーＭＴＳに対して各サービスのタスクを設定するための端末であり、ネットワークＮＷに接続するためのインターフェイスを備え、ネットワークＮＷを介して個別型タスク管理サーバーＳＴＳ及び連携型タスク管理サーバーＭＴＳと通信する。
【００２７】
タスク設定用端末ＴＳＴの主な役割は、個別型タスク管理サーバーＳＴＳ又は連携型タスク管理サーバーＭＴＳにあるトリガーアクション設定テーブルを更新したり、編集したりすることである。トリガーアクション設定テーブルは、上述したタスクを構成するアクションと、それらアクションの実行を開始するトリガー条件と、が設定されたテーブルである。トリガーアクション設定テーブルの更新又は編集の主体が管理者などの人間である場合は、タスク設定用端末ＴＳＴは、入出力デバイスを備える。入力デバイスは、例えば、キーボード及びマウスであり、出力デバイスは、例えば、ディスプレイやプリンターからなる。更新又は編集を行う主体が人間ではない場合は、例えば、人工知能のプログラムである場合、タスク設定用端末ＴＳＴは、そのプログラムを実行する環境を備える。タスク設定用端末ＴＳＴが個別型タスク管理サーバーＳＴＳ又は連携型タスク管理サーバーＭＴＳ上のトリガーアクション設定テーブを更新し、編集するとき、通信プロトコルとしては、例えば、ＦＴＰ（File Transfer Protocol）が使用される。タスク設定用端末ＴＳＴは、個別型タスク管理サーバーＳＴＳ又は連携型タスク管理サーバーＭＴＳのデータメモリーにある他のテーブルを、トリガーアクション設定テーブルを更新あるいは編集するときと同様の方法で更新及び編集することも可能である。
【００２８】
（脈拍計の構成の説明）
図２は、本実施形態における脈拍計２の構成を示すブロック図である。
脈拍計２には、ユーザーの血管の振動を計測する方式、あるいはユーザーの血管に流れる血液の振動を光で計測する方式がある。脈拍計２は、マイクロプロセッサーからなるＣＰＵ（Central Processing Unit）３を備え、このＣＰＵ３にバス４を介して脈拍センサー５、メモリー６、及び通信インターフェイス７が接続されている。
【００２９】
通信インターフェイス７は、ＣＰＵ３の制御の下で、ネットワークＮＷにより規定される通信プロトコルに従い、連携型タスク管理サーバーＭＴＳ及びタスク設定用端末ＴＳＴとメッセージを送受信する。通信プロトコルとしては、例えば、ＴＣＰ／ＩＰ（Transmission Control Protocol／Internet Protocol）等が使用されるが、他の通信プロトコルが使用されてもよい。
【００３０】
メモリー６は、脈拍計２が計測している脈拍数の情報を時系列に蓄積する。ＣＰＵ３は、脈拍センサー５とメモリー６と通信インターフェイス７との動作を制御するが、ロボットＲ１，Ｒ２より脈拍数情報の要求があった場合、メモリー６に蓄積された情報を、通信インターフェイス７を通じて提供する。
【００３１】
（個別型タスク管理サーバーの構成の説明）
図３は、個別型タスク管理サーバーＳＴＳのハードウエア及びソフトウエアの構成を示すブロック図である。個別型タスク管理サーバーＳＴＳは、マイクロプロセッサーからなるＣＰＵ１１を備え、このＣＰＵ１１にバス１２を介して記憶部及び記憶手段としての記憶装置１３、メモリー１４、及び通信インターフェイス１５が接続されている。
【００３２】
通信インターフェイス１５は、ＣＰＵ１１の制御の下で、ネットワークＮＷにより規定される通信プロトコルに従い、連携型タスク管理サーバーＭＴＳ及びタスク設定用端末ＴＳＴとメッセージを送受信する。通信プロトコルとしては、例えば、ＴＣＰ／ＩＰ等が使用されるが、他の通信プロトコルが使用されてもよい。
【００３３】
記憶装置１３は、タスクライブラリーテーブル１３１、受付済みタスクテーブル１３２、実行中タスク状態テーブル１３３、トリガーアクション設定テーブル１３４、及びロボット状態テーブル１３５を格納している。上述したトリガーアクション設定テーブルは、図３に示されたトリガーアクション設定テーブル１３４のことである。
【００３４】
図１及び図３の構成において、記憶装置１３のトリガーアクション設定テーブル１３４には、ロボットＲ１，Ｒ２に実行させるタスクを一連のアクションで構成し、ユーザーに装着された脈拍計２の情報を連動させ、それらアクションと、それらアクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報が予め記憶されている。そして、トリガー判定部として実行されるメモリー１４上のトリガー判定プログラム１４４は、アクションのトリガー条件が満たされたか否か判定する。アクション実行部及びアクション実行手段として実行されるメモリー１４上のアクション実行プログラム１４３は、指示されたアクションを実行する。タスク実行部及びタスク実行手段として実行されるメモリー１４上の個別型タスク実行プログラム１４２は、ロボットＲ１，Ｒ２に実行させるタスクのトリガーアクション情報に規定されたアクションを順次選択し、選択したアクションのトリガー条件が満たされたか否かトリガー判定プログラム１４４に判定させ、トリガー条件が満たされれば、そのアクションをアクション実行プログラム１４３に実行させる。ロボットＲ１，Ｒ２が行うタスクを一連のアクションで構成し、ユーザーに装着された脈拍計２の情報を連動させ、アクション毎にトリガー条件を設定し、トリガー条件が満たされたときにロボットＲ１，Ｒ２にアクションを実行させるので、ロボットＲ１，Ｒ２が各アクションを開始するときにユーザーが自然と感じるようなトリガー条件を設定することが可能となり、自然な対人サービスを提供することが可能となる。個別型タスク管理プログラム１４１は、後述詳細に説明する。
【００３５】
図４は、タスクライブラリーテーブル１３１の構成例を示す図である。タスクライブラリーテーブル１３１には、ユニバーサルタスク番号１３１０１と、タスク名１３１０２と、対応能力要求１３１０３と、他タスク並行実行可否１３１０４を表す情報と、トリガーアクション設定テーブル場所１３１０５と、が互いに対応づけて格納される。
【００３６】
ユニバーサルタスク番号１３１０１は、サービスロボットシステムで一意であり、タスクを識別するために用いられる。
【００３７】
タスク名１３１０２は、タスクの名称である。
【００３８】
対応能力要求１３１０３は、タスクに対応するためにロボットＲ１，Ｒ２が必要な能力を示している。ここでいうタスクへ対応するというのはタスクに含まれるアクションを実行するという意味である。対応能力要求１３１０３は、タスクに含まれるアクションを実行するためにロボットＲ１，Ｒ２に必要な能力ということもできる。対応能力要求１３１０３は、タスクに対応するトリガーアクション設定テーブル１３４に含まれる全てのアクションのアクション要求能力を全て満たすように決定される。アクション要求能力は、各アクションを実行するためにロボットＲ１，Ｒ２に求められる能力であり、その情報は、トリガーアクション設定テーブル１３４にアクション毎に設定される。
【００３９】
あるタスクに対して、ロボットＲ１，Ｒ２の持っている能力の制限によって、対応できない、すなわちタスクに含まれるアクションを実行できないこともある。同じタスクに対して、ロボットＲ１，Ｒ２の持っている能力の差異によって、タスクへの対応方法、つまりタスクに含まれるアクションの実行方法も異なる。タスクへの対応方法として個別対応と連携対応とがあり、さらに対応不可という場合もある。個別対応というのは、該当タスクに該当ロボット単独で対応することを示している。連携対応というのは、該当タスクに該当ロボットが他のロボットと協力して対応することを示している。対応不可は、該当タスクが該当ロボットによって対応できないことを示している。
【００４０】
他タスク並行実行可否１３１０４は、該当タスクが他のタスクと並行して同じロボットにて実行されることが可能であるかどうかを示している。他タスク並行実行可否１３１０４を決める方法は、一例として、個別対応の場合に用いられるトリガーアクション設定テーブル１３４と、連携対応の場合に用いられる連携型トリガーアクション設定テーブル２３４にあるアクション並行実行可否２３４０７を全部確認し、トリガーアクション設定テーブル１３４と連携型トリガーアクション設定テーブル２３４とに設定されている全てのアクションが並行実行不可である場合は、他タスク並行実行可否１３１０４を不可と設定し、それ以外の場合は可と設定する、というものである。連携型トリガーアクション設定テーブル２３４は、図１２を参照して後述する。
【００４１】
トリガーアクション設定テーブル場所１３１０５は、トリガーアクション設定テーブル１３４の保存先を示している。
【００４２】
図５は、受付済みタスクテーブル１３２の構成図である。受付済みタスクテーブル１３２には、タスク管理番号１３２０１と、ユニバーサルタスク番号１３２０２と、対応方法１３２０３と、が互いに対応づけて格納される。タスク管理番号１３２０１は、システムの中で唯一性及び不変性を持っており、この番号を解読することでタスクの発生の日付及び担当ロボットが分かるように採番方法が定められている。この実施例では、タスク管理番号１３２０１は、タスクを受け付けた日付と、ロボットＩＤと、同一日付内での４桁の通し番号とを合わせたものとなっている。
【００４３】
図６は、トリガーアクション設定テーブル１３４の構成図である。トリガーアクション設定テーブル１３４には、タスク毎の複数のテーブルファイルが含まれている。各テーブルファイルには、テーブルファイル名１３４０１が付与されている。トリガーアクション設定テーブル１３４の各テーブルファイルには、トリガー番号１３４０２、トリガー判定式１３４０３、アクション１３４０４、アクション要求能力１３４０５、アクション並行実行可否１３４０６、及びアクション省略可否１３４０７が互いに対応づけて記憶される。図６に、トリガーアクション設定テーブル１３４に記憶される情報の一例が示されている。
【００４４】
トリガーアクション設定テーブル１３４のテーブルファイルは、タスクを構成する一連のアクションのそれぞれを起すトリガーの設定により定義される。図５に示した受付済みタスクテーブル１３２のユニバーサルタスク番号１３２０２は、トリガーアクション設定テーブル１３４のテーブルファイルと一対一に対応する番号である。
【００４５】
なお、アクション１３４０４は、アクション実行プログラム１４３が実行できる汎用関数、又はタスクライブラリーテーブル１３１に含まれたタスクを構成するアクションを表す文字列である。アクションは、例えば、ロボットＲ１，Ｒ２に手を振らせる関数や、図１４に示すロボットＲ１，Ｒ２にあるセンサー３１１からセンサー情報を取り出すアクションを示す文字列である。
【００４６】
アクションを起こすトリガー条件は、トリガー判定式１３４０３で定義される。トリガー判定式１３４０３は、トリガー判定プログラム１４４が実行できる戻り値を持つ汎用関数、又はタスクライブラリーテーブル１３１に含まれたタスクを使った条件式を表す文字列からなるものである。トリガー判定プログラム１４４による判定でトリガー判定式１３４０３が真である場合は、アクション１３４０４は、アクション実行プログラム１４３に当該アクションを実行される。トリガー番号＝１のアクションのようにトリガー判定式１３４０３が真という常に真であることを意味する。
【００４７】
１つのトリガー判定式１３４０３と、それに対応するアクション１３４０４とは、トリガー番号１３４０２で紐付けされ、トリガーアクション設定テーブル１３４の１つの行に格納される。１つのトリガー判定式１３４０３が複数のアクションに対応することが可能である。また、複数の連続するアクションのトリガー判定式１３４０３をトリガー条件が常に「真」であると設定することにより、複数のトリガー番号１３４０２が対応しているアクション１３４０４を無条件に連続的に実行させることも可能である。
【００４８】
トリガー番号１３４０２は、複数のアクション１３４０４を実行する場合の最初、最後、及び順番を示す番号である。例えば、図６の例では、最初のアクション１３４０４のトリガー番号１３４０２を０とし、最後のアクション１３４０４のトリガー番号１３４０２を−１としている。それ以外のアクション１３４０４には、実行の順番に通し番号となるトリガー番号１３４０２が付与されている。
【００４９】
アクション要求能力１３４０５は、当該アクションを実行するためにロボットＲ１，Ｒ２に要求される能力である。ロボットＲ１，Ｒ２がそのアクションを実行するためには、ロボットＲ１，Ｒ２が備えている能力としてのタスク対応能力が、このアクション要求能力１３４０５を包含している必要がある。タスク対応能力は、図８を参照して後述する。
【００５０】
アクション並行実行可否１３４０６は、当該アクションを他のアクションと並行して実行することが可能であるかどうかを示している。
【００５１】
アクション省略可否１３４０７は、アクション要求能力１３４０５が指定した能力に満たせないロボットが、該当アクションをスキップして、次のアクションを実行することが可能であるかどうかを示している。
【００５２】
図７は、実行中タスク状態テーブル１３３の構成図である。実行中タスク状態テーブル１３３には、タスク管理番号１３３０１と、現在のトリガー判定式１３３０２と、現在のアクション１３３０３と、トリガーアクション設定テーブル場所１３３０４と、現在のトリガー番号１３３０５と、他タスク並行実行可否１３３０６と、が互いに対応づけられて記憶される。図７には、実行中タスク状態テーブル１３３に記憶される情報の一例が示されている。実行中タスク状態テーブル１３３は、個別型タスク管理プログラム１４１と、個別型タスク実行プログラム１４２と、後述する図９に示す連携型タスク管理プログラム２４１と、連携型タスク実行プログラム２４２と、によって更新される情報である。実行中タスク状態テーブル１３３は、実行されている個別型タスク及び連携型タスクの進捗を示している。実行中タスク状態テーブル１３３の更新の詳細は、後述する。
【００５３】
図８は、ロボット状態テーブル１３５の構成図である。ロボット状態テーブル１３５には、ロボット名１３５０１と、ロボットＩＤ１３５０２と、タスク対応能力１３５０３と、現在のタスクのタスク管理番号１３５０４と、が互いに対応づけされて記憶される。図８には、ロボット状態テーブル１３５に記憶される情報の一例が示されている。タスク対応能力１３５０３は、ロボットＲ１，Ｒ２が備えている能力を示している。個別タスク管理サーバーＳＴＳは、タスク対応能力１３５０３に示されたロボットＲ１，Ｒ２の能力を基に、タスクにどのように対応するかロボットＲ１，Ｒ２の対応方法１３２０３を決める。
【００５４】
なお、図４に示したタスクライブラリーテーブル１３１の対応能力要求１３１０３においては、省略可能なアクションのアクション要求能力に相当するものは「オプション」と明示されている。
【００５５】
図３に戻り、メモリー１４には、本実施形態にて必要なプログラムの一部として、個別型タスク管理プログラム１４１と、個別型タスク実行プログラム１４２と、アクション実行プログラム１４３と、トリガー判定プログラム１４４と、が格納されている。
【００５６】
個別型タスク管理プログラム１４１は、主に以下の処理をＣＰＵ１１に実行させることで、タスクの受付及び実行準備を行う。
【００５７】
（１−１）個別型タスク管理プログラム１４１は、通信インターフェイス１５若しくはバス１２を介してタスク初期処理依頼メッセージＭ１を受信したら、そのタスク初期処理依頼メッセージＭ１にある依頼タスクのユニバーサルタスク番号Ｍ１０２及び希望ロボットのロボットＩＤ  Ｍ１０３を用いて、タスクライブラリーテーブル１３１及びロボット状態テーブル１３５を参照して、依頼タスクは、希望ロボットによって実行可能かどうかを判断する。タスク初期処理依頼メッセージＭ１は、図１５に示されている。タスク初期処理依頼メッセージＭ１には、メッセージ識別子Ｍ１０１、依頼タスクのユニバーサルタスク番号Ｍ１０２、希望ロボットのロボットＩＤ  Ｍ１０３、及び依頼元ＩＤ  Ｍ１０４が格納される。依頼タスクは、タスク初期処理依頼メッセージＭ１にて実行することが依頼されたタスクである。希望ロボットは、タスク初期処理依頼メッセージＭ１にて依頼されたタスクの実行に用いることを希望する旨が指定されたロボットである。このとき、個別型タスク管理プログラム１４１は、タスクライブラリーテーブル１３１を参照することにより、依頼されたタスクに対応するのに必要なロボットの能力を知得することができる。また、個別型タスク管理プログラム１４１は、ロボット状態テーブル１３５を参照することにより、希望ロボットが備えている能力を知得することができる。そして、個別型タスク管理プログラム１４１は、依頼タクスに必要な能力と、希望ロボットが備えている能力を比較することにより、依頼タスクを希望ロボットが実行できるか否か判断することができる。実行が可能である場合、個別型タスク管理プログラム１４１は、次に対応方法１３２０３を決める。対応方法１３２０３は、例えば、タスクライブラリーテーブル１３１にある対応能力要求１３１０３を、ロボット状態テーブル１３５のタスク対応能力１３５０３が満たしているかどうかに基づいて、決定することができる。いずれか１つのロボットのタスク対応能力１３５０３が対応能力要求１３１０３を満たしていれば、そのロボットが単独でタスクに対応できるので、対応方法１３２０３を個別対応とすればよい。複数のロボットのタスク対応能力１３５０３を組み合わせることで対応能力要求１３１０３を満たすのであれば、対応方法１３２０３を連携対応とすればよい。
【００５８】
（１−２）（１−１）に決められた対応方法１３２０３が個別対応である場合、個別型タスク管理プログラム１４１は、依頼タスクに対応するトリガーアクション設定テーブル１３４を用いて、依頼タスクを実行されるように受付済みタスクテーブル１３２と、実行中タスク状態テーブル１３３と、ロボット状態テーブル１３５と、を更新する。
【００５９】
（１−３）（１−１）に決められた対応方法１３２０３が連携対応である場合、個別型タスク管理プログラム１４１は、連携型タスク管理サーバーＭＴＳに処理されるように、通信インターフェイス１５を介して連携型タスク管理サーバーＭＴＳに連携依頼メッセージＭ２を送信する。連携依頼メッセージＭ２は、図１６に示されている。連携依頼メッセージＭ２には、メッセージ識別子Ｍ２０１、依頼タスクのユニバーサルタスク番号Ｍ２０２、及び依頼元ＩＤ  Ｍ２０３が格納される。
【００６０】
個別型タスク実行プログラム１４２は、主に以下の処理をループでＣＰＵ１１に実行させることで、個別型タスクをアクション単位で段階的に進行させることを実現する。
【００６１】
（２−１）個別型タスク実行プログラム１４２は、受付済みタスクテーブル１３２を参照し、対応方法１３２０３が個別対応である受付済みタスクについて、実行中タスク状態テーブル１３３を行毎でスキャンし、この行にある現在のトリガー判定式１３３０２をトリガー判定依頼メッセージＭ３に含めてトリガー判定プログラム１４４にバス１２を介して送信する。トリガー判定依頼メッセージＭ３は、図１７に示されている。トリガー判定依頼メッセージＭ３には、メッセージ識別子Ｍ３０１、トリガー判定式Ｍ３０２、依頼元ＩＤ  Ｍ３０３、及び依頼先ＩＤ  Ｍ３０４が格納される。
【００６２】
（２−２）個別型タスク実行プログラム１４２は、トリガー判定プログラム１４４から（２−１）のトリガー判定依頼メッセージＭ３に応じて返信されたトリガー判定結果メッセージＭ４を、バス１２を介して受信する。トリガー判定結果メッセージＭ４は、図１８に示されている。トリガー判定結果メッセージＭ４には、メッセージ識別子Ｍ４０１、トリガー判定結果Ｍ４０２、依頼元ＩＤ  Ｍ４０３、及び依頼先ＩＤ  Ｍ４０４が格納される。（２−１）のトリガー判定式Ｍ３０２が満足されたら、個別型タスク実行プログラム１４２は、本トリガーに対応するアクションを実行するように、本アクションをアクション実行依頼メッセージＭ７に含めて、アクション実行プログラム１４３にバス１２を介して送信する。アクション実行依頼メッセージＭ７は、図２１に示されている。アクション実行依頼メッセージＭ７には、メッセージ識別子Ｍ７０１、アクションＭ７０２、依頼元ＩＤ  Ｍ７０３、依頼先ＩＤ  Ｍ７０４、及びトリガー番号Ｍ７０５が格納される。
【００６３】
（２−３）アクション実行プログラム１４３に実行依頼したアクションがトリガーアクション設定テーブル１３４における最後のアクションである場合、個別型タスク実行プログラム１４２は、実行中タスク状態テーブル１３３から該当する行を削除して次の行に移行する。実行依頼したアクションが最後のアクションではない場合、個別型タスク実行プログラム１４２は、本タスクのトリガーアクション設定テーブル１３４における次のアクションに移行するように実行中タスク状態テーブル１３３を更新する。
【００６４】
トリガー判定プログラム１４４は、アクション実行プログラム１４３あるいは連携型タスク実行プログラム２４２から依頼を受け、主に以下の処理をＣＰＵ１１に実行させることで、依頼されたアクションの実行可否を判断し、判断結果、あるいは判断するための根拠を、判断依頼元に提出する。
【００６５】
（３−１）個別型タスク実行プログラム１４２あるいは連携型タスク実行プログラム２４２からトリガー判定依頼メッセージＭ３あるいはトリガー計算依頼メッセージＭ５を通信インターフェイス１５あるいはバス１２を介して受信したら、トリガー判定プログラム１４４は、そのメッセージにあるトリガー判定式Ｍ３０２の文字列から関数名と引数とを識別し、その引数を用いてその関数名の関数を実行する。トリガー計算依頼メッセージＭ５は、図１９に示されている。トリガー計算依頼メッセージＭ５には、メッセージ識別子Ｍ５０１、トリガー計算式Ｍ５０２、依頼元ＩＤ  Ｍ５０３、及び依頼先ＩＤ  Ｍ５０４が格納される。
【００６６】
（３−２）（３−１）で受信したメッセージが個別型タスク実行プログラム１４２からのトリガー判定依頼メッセージＭ３である場合は、トリガー判定プログラム１４４は、トリガー判定式Ｍ３０２の文字列から条件式を識別し、（３−１）で実行した関数の戻り値を条件式に代入し、条件式が満たされているか否かの判定結果をトリガー判定結果メッセージＭ４に含めてバス１２を介して個別型タスク実行プログラム１４２に返信する。
【００６７】
（３−３）（３−１）で受信したメッセージが連携型タスク実行プログラム２４２からのトリガー計算依頼メッセージＭ５である場合は、トリガー判定プログラム１４４は、（３−１）で実行した関数の戻り値をトリガー計算結果とし、トリガー計算結果メッセージＭ６に含めて通信インターフェイス１５で連携型タスク実行プログラム２４２に返信する。トリガー計算結果メッセージＭ６は、図２０に示されている。トリガー計算結果メッセージＭ６には、メッセージ識別子Ｍ６０１、トリガー計算結果Ｍ６０２、依頼元ＩＤ  Ｍ６０３、及び依頼先ＩＤ  Ｍ６０４が格納される。
【００６８】
アクション実行プログラム１４３は、主に以下の処理をＣＰＵ１１に実行させる。
【００６９】
（４−１）個別型タスク実行プログラム１４２あるいは連携型タスク実行プログラム２４２からアクション実行依頼メッセージＭ７を通信インターフェイス１５あるいはバス１２を介して受信したら、アクション実行プログラム１４３は、そのメッセージにあるアクションＭ７０２の文字列から関数名と引数とを識別して、その引数を用いてその関数名の関数を実行する。
【００７０】
（４−２）アクション実行プログラム１４３は、（４−１）の判定結果に基づいてロボット状態テーブル１３５を更新する。
【００７１】
＜連携型タスク管理サーバーの構成の説明＞
図９は、連携型タスク管理サーバーＭＴＳのハードウエア及びソフトウエアの構成を示すブロック図である。連携型タスク管理サーバーＭＴＳは、マイクロプロセッサーからなるＣＰＵ２１を備え、このＣＰＵ２１にバス２２を介して記憶部としての記憶装置２３及びメモリー２４が接続され、さらに通信インターフェイス２５が接続されている。
【００７２】
通信インターフェイス２５は、ＣＰＵ２１の制御の下で、通信ネットワークＮＷにより規定される通信プロトコルに従い、個別型タスク管理サーバーＳＴＳあるいはタスク設定用端末ＴＳＴからのメッセージを受信する。またそれと共に、個別型タスク管理サーバーＳＴＳにメッセージを送信する。通信プロトコルとしては、例えば、ＴＣＰ／ＩＰが使用される。
【００７３】
記憶装置２３には、連携型タスクライブラリーテーブル２３１、受付済み連携型タスクテーブル２３２、実行中連携型タスク状態テーブル２３３、及び連携型トリガーアクション設定テーブル２３４が格納されている。
【００７４】
図１０は、連携型タスクライブラリーテーブル２３１の構成図である。連携型タスクライブラリーテーブル２３１には、ユニバーサルタスク番号２３１０１と、タスク名２３１０２と、連携条件２３１０３と、連携型トリガーアクション設定テーブル場所２３１０４と、が互いに対応づけて記憶される。図１０には、連携型タスクライブラリーテーブル２３１に記憶される情報の一例が示されている。ユニバーサルタスク番号２３１０１は、タスクライブラリーテーブル１３１にあるユニバーサルタスク番号１３１０１と同じものである。連携条件２３１０３は、該当タスクにて連携するロボットＲ１，Ｒ２が持つべき能力を示している。連携するロボットＲ１，Ｒ２が持つべき能力を決める方法は、例えば対応する連携型トリガーアクション設定テーブル２３４にある全てのアクション要求能力２３４０６を満たすようにすることである。連携型トリガーアクション設定テーブル場所２３１０４は、連携型トリガーアクション設定テーブル２３４の保存先を示している。
【００７５】
図１１は、受付済み連携型タスクテーブル２３２の構成図である。受付済み連携型タスクテーブル２３２には、タスク管理番号２３２０１と、ユニバーサルタスク番号２３２０２と、関与ロボットＩＤ２３２０３と、が互いに対応づけて記憶される。図１１には、受付済み連携型タスクテーブル２３２に記憶される情報の一例が示されている。受付済み連携型タスクテーブル２３２にあるタスク管理番号２３２０１は、タスクを受け付けた日付と、タスクに関与する全てのロボットＩＤ１３５０２と、４桁の通し番号を合わせたものである。
【００７６】
図１２は、連携型トリガーアクション設定テーブル２３４の構成図である。連携型トリガーアクション設定テーブル２３４には、タスク毎の複数のテーブルファイルが含まれている。各テーブルファイルには、テーブルファイル名２３４０１が付与されている。各テーブルファイルには、トリガー番号２３４０２、トリガー判定式２３４０３、アクション２３４０４、関与ロボット２３４０５、アクション要求能力２３４０６、及びアクション並行実行可否２３４０７が互いに対応づけて記憶される。図１２には、連携型トリガーアクション設定テーブル２３４に記憶される情報の一例が示されている。
【００７７】
連携型トリガーアクション設定テーブル２３４のテーブルファイルは、連携型タスクライブラリーテーブル２３１に定義される連携型タスクのユニバーサルタスク番号２３１０１と一対一で対応している。連携型トリガーアクション設定テーブル２３４には、連携型タスクを構成する複数のアクションのそれぞれを起こすトリガーが設定される。連携型タスクを構成する複数のアクションは、複数のロボットが分担して実行する。連携型トリガーアクション設定テーブル２３４にはアクション毎にそのアクション２３４０４に関与するロボットが関与ロボット２３４０５として設定される。関与ロボット２３４０５における連携元ロボットは、あるロボットから他のロボットに交代するときに、それまでのアクションを実行してきたロボットである。連携先ロボットは、あるロボットから他のロボットに交代するとき、その後のアクションの実行を引き継ぐロボットである。
【００７８】
なお、アクション２３４０４は、アクション実行プログラム１４３が実行できる汎用関数、又はタスクライブラリーテーブル１３１に含まれたタスクを構成するアクションを表す文字列である。アクション２３４０４を起こすトリガー条件は、トリガー判定式２３４０３で定義される。トリガー判定式２３４０３は、トリガー判定プログラム１４４が実行できる戻り値を持つ汎用関数、又はタスクライブラリーテーブル１３１に含まれたタスクを使った条件式を表す文字列からなるものである。
【００７９】
なお、連携型トリガーアクション設定テーブル２３４にある判定式は、トリガーアクション設定テーブル１３４にある判定式と異なって、複数のロボットに関わる判定式となることもある。連携型タスク実行プログラム２４２によって実行された連携型のトリガー判定式２３４０３の計算結果が真である場合、アクション２３４０４は、アクション実行プログラム１４３に実行される。
【００８０】
１つのトリガー判定式２３４０３とそれに対応するアクション２３４０４とは、トリガー番号２３４０２で紐付け、連携型トリガーアクション設定テーブル２３４の１つの行に格納される。トリガー番号２３４０２は、複数のアクション２３４０４を実行する場合の最初、最後、及び順番を示す番号である。例えば図１２の例では、最初のアクション２３４０４のトリガー番号を０とし、最後のアクション２３４０４のトリガー番号を−１としている。それ以外のアクション２３４０４には、実行の順番に通し番号となるトリガー番号２３４０２が付与されている。
【００８１】
関与ロボット２３４０５は、該当アクションのトリガーの判定とアクションの実行とに係るロボットを示している。
【００８２】
アクション要求能力２３４０６は、当該アクションを実行するロボットに要求される能力である。あるロボットがそのアクションを実行するためには、ロボットが備えている能力としてのタスク対応能力１３５０３が、このアクション要求能力２３４０６を包含している必要がある。
【００８３】
アクション並行実行可否２３４０７は、当該アクションを他のアクションと並行して実行することが可能であるかどうかを示している。ロボットの連携で情報の引続が必要な場合は、図１２のように連携型トリガーアクション設定テーブル２３４に一行を加え、連携元ロボットから連携先ロボットへ情報を送信するアクションを設計すればよい。
【００８４】
ここに示したように、トリガーアクション情報としての連携型トリガーアクション設定テーブル２３４には、アクション２３４０４毎にそのアクションを実行させるロボットの割当てが設定可能である。連携型タスク実行部として実行されるメモリー２４上の連携型タスク実行プログラム２４２は、アクション実行部としてのアクション実行プログラム１４３に、トリガーアクション情報に含まれるそれぞれのアクション２３４０４をそのトリガーアクション情報にて、そのアクション２３４０４の実行に割り当てられたロボットを用いて実行させる。アクション２３４０４毎にそのアクションを実行させるロボットを設定することができるので、複数のロボットを連携させてタスクを実行することができる。
【００８５】
図１３は、実行中連携型タスク状態テーブル２３３の構成図である。実行中連携型タスク状態テーブル２３３には、タスク管理番号２３３０１、現在のトリガー判定式２３３０２、現在のアクション２３３０３、連携型トリガーアクション設定テーブル場所２３３０４、及び現在のトリガー番号２３３０５が互いに対応づけて記録される。複数のロボットが連携しながら実行しているタスクの状態を示す情報が格納される。図１３には、実行中連携型タスク状態テーブル２３３に記憶される情報の一例が示されている。複数のアクションで構成されるタスクは、実行中であれば、現在の状態として途中のアクションまで進んでいる状態がある。実行中連携型タスク状態テーブル２３３には実行中のタスクの現在の状態が記録されている。
【００８６】
実行中連携型タスク状態テーブル２３３は、連携型タスク管理プログラム２４１と、連携型タスク実行プログラム２４２と、によって更新され、実行されている連携型タスク及び連携型タスクの進捗を示している。
【００８７】
図９に戻り、メモリー２４には、連携型タスク管理プログラム２４１と、連携型タスク実行プログラム２４２と、が格納されている。
【００８８】
連携型タスク管理プログラム２４１は、主に以下の処理をＣＰＵ２１に実行させることで、タスクの受付及び実行準備を行う。
【００８９】
（５−１）連携型タスク管理プログラム２４１は、通信インターフェイス２５を介して連携依頼メッセージＭ２を受信したら、連携依頼メッセージＭ２にある依頼タスクのユニバーサルタスク番号Ｍ２０２及び依頼元ＩＤ  Ｍ２０３を用いて、連携型タスクライブラリーテーブル２３１及びロボット状態テーブル１３５を参照して、依頼タスクに対応できるロボット、つまり連携先ロボットとなりうるロボットが存在するかどうかを判断する。連携先ロボットとなりうるロボットが存在するかどうかを判断する方法としては、例えば連携型タスクライブラリーテーブル２３１にある連携条件２３１０３を満たしているロボットがロボット状態テーブル１３５に存在するかどうかを調べればよい。
【００９０】
（５−２）（５−１）にて連携先ロボットとなりうるロボットが存在する場合、連携型タスク管理プログラム２４１は、依頼タスクに対応する連携型トリガーアクション設定テーブル２３４を用いて、依頼タスクが実行されるように、受付済み連携型タスクテーブル２３２と、実行中連携型タスク状態テーブル２３３と、ロボット状態テーブル１３５と、実行中タスク状態テーブル１３３と、受付済みタスクテーブル１３２と、を更新する。
【００９１】
（５−３）（５−１）で連携先ロボットが存在しないと判断したら、連携型タスク管理プログラム２４１は、実行中タスク状態テーブル１３３及び受付済みタスクテーブル１３２に連携が拒否されたときに実行するデフォルトタスクを追加する。
【００９２】
連携型タスク実行プログラム２４２は、主に以下の処理をループでＣＰＵ２１に実行させることで、連携型タスクをアクション単位で段階的に進行させる。
【００９３】
（６−１）連携型タスク実行プログラム２４２は、実行中連携型タスク状態テーブル２３３を行毎でスキャンする。スキャンにより現在のトリガー判定式２３３０２が得られたら、その現在のトリガー判定式２３３０２をトリガー計算依頼メッセージＭ５に反映し、トリガー計算依頼メッセージＭ５をトリガー判定プログラム１４４に通信インターフェイス２５を介して送信する。
【００９４】
（６−２）連携型タスク実行プログラム２４２は、トリガー判定プログラム１４４から、（６−１）のトリガー計算依頼メッセージＭ５に応じて返信されたトリガー計算結果メッセージＭ６を、通信インターフェイス２５を介して受信する。連携型タスク実行プログラム２４２は、トリガー計算結果メッセージＭ６にて通知された計算結果を用いて、（６−１）のトリガー判定式２３３０２が満足されたかどうか判定する。満足されたら、連携型タスク実行プログラム２４２は、本トリガーに対応するアクションを実行されるように、本アクションをアクション実行依頼メッセージＭ７に含め、アクション実行依頼メッセージＭ７をアクション実行プログラム１４３に通信インターフェイス２５を介して送信する。
【００９５】
（６−３）アクション実行プログラム１４３に実行を依頼したアクションが連携型タスクの最後のアクションである場合は、連携型タスク実行プログラム２４２は、実行中連携型タスク状態テーブル２３３と、実行中タスク状態テーブル１３３と、から、その連携型タスクの行を削除して、次の行に移行する。アクション実行プログラム１４３に実行を依頼したアクションが連携型タスクの最後のアクションでない場合は、連携型タスク実行プログラム２４２は、本連携型タスクの連携型トリガーアクション設定テーブル２３４を用いて、実行中連携型タスク状態テーブル２３３と実行中タスク状態テーブル１３３とにおけるその連携型タスクの行を更新して次の行に移行する。
【００９６】
図１４は、ロボットＲ１，Ｒ２の装置構成を示すブロック図である。ロボットＲ１とロボットＲ２とは、同様の基本構成を有し、マイクロプロセッサーからなるＣＰＵ３０１を備え、このＣＰＵ３０１にバス３０２を介して記憶装置３０３、メモリー３０４、及び通信インターフェイス３０６が接続されている。また、ロボットＲ１，Ｒ２は、さらに各種能力を実現する装置を備えることも可能であり、例えばマイク３０７、移動機構３０８、スピーカー３０９、カメラ３１０、あるいは各種センサー３１１といった各種装置を備えることができる。ロボットＲ１，Ｒ２は、個別型タスク管理サーバーＳＴＳのアクション実行プログラム１４３又はトリガー判定プログラム１４４、あるいは連携型タスク管理サーバーＭＴＳの連携型タスク管理プログラム２４１又は連携型タスク実行プログラム２４２から、通信インターフェイス３０５を介して、アクション実行のトリガーを判定するための実行コマンドあるいはアクションの実行コマンドを受信し、実行する。
【００９７】
また、ロボットＲ１，Ｒ２は、メモリー３０４及び記憶装置３０３にて、ロボット自身の機構、姿勢、移動等を制御するロボット制御アプリケーションと、ロボット自身の制御以外の機能、例えばセンサーによる情報収集あるいは位置推定などの機能を実現する各種アプリケーションとを記憶し、ＣＰＵ３０１により実行することも可能である。
【００９８】
＜メッセージの説明＞
以下、装置間で送受信されるメッセージについて説明する。上述したように本実施形態では７つのメッセージが用いられる。本実施形態では用いられるメッセージとして、タスク初期処理依頼メッセージＭ１、連携依頼メッセージＭ２、トリガー判定依頼メッセージＭ３、トリガー判定結果メッセージＭ４、トリガー計算依頼メッセージＭ５、トリガー計算結果メッセージＭ６、及びアクション実行依頼メッセージＭ７がある。これらのメッセージはアプリケーション層に規定されるメッセージである。ここでは主にメッセージのペイロードに搭載される情報について説明する。この情報をペイロードデータとして送受信するためのカプセル化は通信方式により異なってよい。
【００９９】
図１５は、タスク初期処理依頼メッセージＭ１を示す図である。タスク初期処理は、実行を依頼された依頼タスクにロボットＲ１，Ｒ２を割り当てて受付済みとする処理である。タスク初期処理依頼メッセージＭ１は、タスク初期処理を依頼するためのメッセージである。タスク初期処理依頼メッセージＭ１には、メッセージ識別子Ｍ１０１と、依頼タスクのユニバーサルタスク番号Ｍ１０２と、希望ロボットのロボットＩＤ  Ｍ１０３と、依頼元ＩＤ  Ｍ１０４と、が記憶される。なお、依頼元ＩＤ  Ｍ１０４と希望ロボットのロボットＩＤ  Ｍ１０３とが同じであることがある。これは依頼元のロボットが自身のタスク初期処理を依頼するものである。図１５には、タスク初期処理依頼メッセージＭ１に記憶される情報の一例が示されている。
【０１００】
メッセージ識別子Ｍ１０１は、メッセージの種類とメッセージの問答関係とを表す。例えば本実施形態では、メッセージ識別子Ｍ１０１の先頭のＭとそれに続く上位２桁はアルファベットと数字の組合せによりメッセージ種類を表し、次の６桁はメッセージ同士の関係性を示す識別情報ＩＤである。互いに問答関係を有するメッセージ同士は６桁の識別情報ＩＤが同じ数字となる。なお、後述する他の６つのメッセージにおけるメッセージ識別子もこのメッセージ識別子Ｍ１０１と同様にメッセージの種類とメッセージの問答関係とを表す。
【０１０１】
依頼タスクのユニバーサルタスク番号Ｍ１０２は、実行を依頼された依頼タスクを一意に識別する識別番号である。
【０１０２】
希望ロボットのロボットＩＤ  Ｍ１０３は、タスク初期処理の対象とするロボットのロボットＩＤである。タスク初期処理は、実行を依頼された依頼タスクにロボットを割り当てて受付済みとする処理である。
【０１０３】
依頼元ＩＤ  Ｍ１０４は、タスク初期処理の依頼元となるロボットのロボットＩＤである。
【０１０４】
図１６は、連携依頼メッセージＭ２を示す図である。連携依頼メッセージＭ２は、連携対応を依頼するためのメッセージである。連携依頼は、タスク初期処理の依頼を受けて必要に応じて行う処理である。連携依頼メッセージＭ２は、タスク初期処理依頼メッセージＭ１と問答関係を有する。連携依頼メッセージＭ２には、メッセージ識別子Ｍ２０１と、依頼タスクのユニバーサルタスク番号Ｍ２０２と、依頼元ＩＤ  Ｍ２０３と、が記憶される。図１６には、連携依頼メッセージＭ２に記憶される情報の一例が示されている。
【０１０５】
メッセージ識別子Ｍ２０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１０６】
依頼タスクのユニバーサルタスク番号Ｍ２０２は、連携対応を依頼する依頼タスクを示す識別番号である。
【０１０７】
依頼元ＩＤ  Ｍ２０３は、依頼タスクの連携対応の連携元となるロボットのロボットＩＤである。
【０１０８】
図１７は、トリガー判定依頼メッセージＭ３を示す図である。トリガー判定依頼は、個別対応にてトリガー条件が満たされているか否か、つまり、単一のロボットで依頼タスクのアクションを実行するとした場合にトリガー判定式が真か偽かの判定を依頼するためのメッセージである。トリガー判定依頼メッセージＭ３には、メッセージ識別子Ｍ３０１と、トリガー判定式Ｍ３０２と、依頼元ＩＤ  Ｍ３０３と、依頼先ＩＤ  Ｍ３０４と、が記憶される。図１７には、トリガー判定依頼メッセージＭ３に記憶される情報の一例が示されている。
【０１０９】
メッセージ識別子Ｍ３０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１１０】
トリガー判定式Ｍ３０２は、個別対応での判定を依頼するトリガー判定式を示す。
【０１１１】
依頼元ＩＤ  Ｍ３０３は、トリガー判定を依頼する側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットＩＤである。
【０１１２】
依頼先ＩＤ  Ｍ３０４は、トリガー判定を依頼される側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションを実行するロボットのロボットＩＤである。
【０１１３】
図１８は、トリガー判定結果メッセージＭ４を示す図である。トリガー判定結果メッセージＭ４は、トリガー判定の結果が真であるか偽であるかを通知するためのメッセージである。トリガー判定結果メッセージＭ４は、トリガー判定依頼メッセージＭ３と問答関係を備える。トリガー判定結果メッセージＭ４には、メッセージ識別子Ｍ４０１と、トリガー判定結果Ｍ４０２と、依頼元ＩＤ  Ｍ４０３と、依頼先ＩＤ  Ｍ４０４と、が記憶される。図１８に、トリガー判定結果メッセージＭ４に記憶される情報の一例が示されている。
【０１１４】
メッセージ識別子Ｍ４０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１１５】
トリガー判定結果Ｍ４０２は、トリガー判定の結果が真であるか偽であるかを示す。
【０１１６】
依頼元ＩＤ  Ｍ４０３は、トリガー判定を依頼する側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットＩＤである。
【０１１７】
依頼先ＩＤ  Ｍ４０４は、トリガー判定を依頼される側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションを実行するロボットのロボットＩＤである。
【０１１８】
図１９は、トリガー計算依頼メッセージＭ５を示す図である。トリガー計算依頼は、連携対応にてトリガー条件が満たされているか否か、つまり複数のロボットの連携で依頼タスクのアクションを実行するとした場合にトリガー判定式が真か偽かの判定を依頼するためのメッセージである。トリガー計算依頼メッセージＭ５には、メッセージ識別子Ｍ５０１と、トリガー計算式Ｍ５０２と、依頼元ＩＤ  Ｍ５０３と、依頼先ＩＤ  Ｍ５０４と、が記憶される。図１９には、トリガー計算依頼メッセージＭ５に記憶される情報の一例が示されている。
【０１１９】
メッセージ識別子Ｍ５０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１２０】
トリガー計算式Ｍ５０２は、連携対応での判定を依頼するトリガー判定式としてのトリガー計算式を示す。
【０１２１】
依頼元ＩＤ  Ｍ５０３は、トリガー判定を依頼する側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットＩＤである。
【０１２２】
依頼先ＩＤ  Ｍ５０４は、トリガー判定を依頼される側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションを実行するロボットのロボットＩＤである。
【０１２３】
図２０は、トリガー計算結果メッセージＭ６を示す図である。トリガー計算結果メッセージＭ６は、トリガー判定の結果が真であるか偽であるかを通知するためのメッセージである。トリガー計算結果メッセージＭ６は、トリガー計算依頼メッセージＭ５と問答関係を備える。トリガー計算結果メッセージＭ６には、メッセージ識別子Ｍ６０１と、トリガー計算結果Ｍ６０２と、依頼元ＩＤ  Ｍ６０３と、依頼先ＩＤ  Ｍ６０４と、が記憶される。図２０には、トリガー計算結果メッセージＭ６に記憶される情報の一例が示されている。
【０１２４】
メッセージ識別子Ｍ６０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１２５】
トリガー計算結果Ｍ６０２は、トリガー判定の結果が真であるか偽であるかを示す。
【０１２６】
依頼元ＩＤ  Ｍ６０３は、トリガー判定を依頼する側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットＩＤである。
【０１２７】
依頼先ＩＤ  Ｍ６０４は、トリガー判定を依頼される側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションを実行するロボットのロボットＩＤである。
【０１２８】
図２１は、アクション実行依頼メッセージＭ７を示す図である。アクション実行依頼メッセージＭ７は、トリガー判定が真であるときに、そのトリガー判定式あるいはトリガー計算式に対応するアクションの実行を依頼するためのメッセージである。アクション実行依頼メッセージＭ７には、メッセージ識別子Ｍ７０１と、アクションＭ７０２と、依頼元ＩＤ  Ｍ７０３と、依頼先ＩＤ  Ｍ７０４と、トリガー番号Ｍ７０５と、が記憶される。図２１には、アクション実行依頼メッセージＭ７に記憶される情報の一例が示されている。
【０１２９】
メッセージ識別子Ｍ７０１は、メッセージ識別子Ｍ１０１と同様に、メッセージの種類とメッセージの問答関係とを表す。
【０１３０】
アクションＭ７０２は、実行を依頼するアクションを示す。
【０１３１】
依頼元ＩＤ  Ｍ７０３は、トリガー判定を依頼する側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションの前のアクションを実行したロボットのロボットＩＤである。
【０１３２】
依頼先ＩＤ  Ｍ７０４は、トリガー判定を依頼される側のロボットのロボットＩＤ、つまりトリガー判定の対象であるアクションを実行するロボットのロボットＩＤである。
【０１３３】
トリガー番号Ｍ７０５は、実行を依頼するアクションに対応するトリガー番号を示す。トリガー番号は、トリガーアクション設定テーブル１３４又は連携型トリガーアクション設定テーブル２３４においてアクションに付与された番号である。トリガー番号Ｍ７０５によりタスクが現在どこまで進行しているかが分かる。
【０１３４】
＜システム動作の説明＞
次に、以上のように構成されたサービスロボットシステムの各種処理の動作について以下に説明する。なお、ここでは、タスクｔをロボット１台で実行する形態を個別形態ｔｓとし、複数台のロボットで実行する形態を連携形態ｔｍとする。個別形態ｔｓと連携形態ｔｍとは、それぞれ一連のアクションとそのアクションを起こすトリガーで定義されている。サービスロボットシステムの各種処理の動作は、対人サービスを実行するロボットＲ１，Ｒ２を制御するためのロボット制御方法である。
ロボットＲ１，Ｒ２に対するタスクとして、例えばタスクｔを実行させるための事前設定として、実行すべきタスクｔについて個別形態ｔｓに対応するトリガーアクション設定テーブル１３４あるいは連携形態ｔｍに対応する連携型トリガーアクション設定テーブル２３４がシステムに存在しない場合、本実施形態のサービスロボットシステムでは、トリガーアクション設定テーブル１３４あるいは連携型トリガーアクション設定テーブル２３４を例えば、下記の方法で追加する。
【０１３５】
まず、個別形態ｔｓのタスク及びアクションを設定する方法について説明する。
【０１３６】
ロボットＲ１，Ｒ２を管理する主体、例えば、管理者は、まず、ネットワークＮＷに接続しているタスク設定用端末ＴＳＴを使って、通信インターフェイス１５を介して同じネットワークＮＷに接続している個別型タスク管理サーバーＳＴＳにアクセスする。そして、管理者は、個別型タスク管理サーバーＳＴＳの記憶装置１３のトリガーアクション設定テーブル１３４に、実行すべきタスクｔに個別対応する個別形態ｔｓを定義するテーブルファイルを追加する。トリガーアクション設定テーブル１３４にテーブルファイルを追加したら、管理者は、次に、記憶装置１３にあるタスクライブラリーテーブル１３１に新たな一行を追加し、この行に、タスクｔのユニバーサルタスク番号１３１０１と、タスク名１３１０２と、対応能力要求１３１０３と、他タスク並行実行可否１３１０４と、トリガーアクション設定テーブル場所１３１０５と、を記入する。
【０１３７】
次に、連携形態ｔｓのタスク及びアクションを設定する方法について説明する。
【０１３８】
管理者は、タスク設定用端末ＴＳＴを使って、個別型タスク管理サーバーＳＴＳへのアクセスと同様の方法で、連携型タスク管理サーバーＭＴＳにアクセスする。そして、管理者は、連携型タスク管理サーバーＭＴＳの記憶装置２３にある連携型トリガーアクション設定テーブル２３４に、連携形態ｔｍを定義したテーブルファイルを追加する。連携型トリガーアクション設定テーブル２３４にテーブルファイルを追加したら、管理者は、次に、記憶装置２３にある連携型タスクライブラリーテーブル２３１に新たな一行を追加し、この行にタスクｔのユニバーサルタスク番号２３１０１と、タスク名２３１０２と、連携条件２３１０３と、連携型トリガーアクション設定テーブル場所２３１０４と、を記入する。
【０１３９】
なお、ここではタスクの追加について説明したが、タスクの削除も同様に行うことができる。
【０１４０】
実行すべきタスクｔについて個別形態ｔｓに対応するトリガーアクション設定テーブル１３４あるいは連携形態ｔｍに対応する連携型トリガーアクション設定テーブル２３４は、存在するが、その更新が必要である場合、本実施形態のサービスロボットシステムではトリガーアクション設定テーブル１３４あるいは連携型トリガーアクション設定テーブル２３４を例えば、下記の方法で更新する。なお、トリガーアクション設定テーブル１３４あるいは連携型トリガーアクション設定テーブル２３４の更新は、テーブルの行の添削や行内の一部箇所の編集等を意味する。
【０１４１】
管理者は、タスク設定用端末ＴＳＴを使って個別型タスク管理サーバーＳＴＳにアクセスする。そして、管理者は、個別型タスク管理サーバーＳＴＳの記憶装置１３にあるトリガーアクション設定テーブル１３４におけるタスクｔの個別形態ｔｓに対応するテーブルファイルを更新する。また、管理者は、トリガーアクション設定テーブル１３４の個別形態ｔｓのテーブルファイルを更新するのと同様の方法で連携型タスク管理サーバーＭＴＳの記憶装置２３にある連携型トリガーアクション設定テーブル２３４におけるタスクｔの連携形態ｔｍに対応するテーブルファイルを更新することができる。
【０１４２】
したがって、トリガーアクション設定テーブル１３４及び連携型トリガーアクション設定テーブル２３４のテーブルファイルの追加、更新、削除によって、ロボットＲ１，Ｒ２を管理する主体、例えば、システム管理者がタスクの形態、例えば、アクションの内容やアクションを実行する条件などを柔軟に設定でき、ロボットＲ１，Ｒ２が場所や条件に応じて適切なサービスを提供することを実現する。
【０１４３】
以下、図６に示されたトリガーアクション設定テーブル１３４の例を用いて、ロボットＲ１，Ｒ２が「タスク＿挨拶＿個別形態」を実行する様子を説明する。そこには単体のロボットが接近してきた人間に挨拶をするというタスクが規定されている。
【０１４４】
図６において、トリガー番号が０である最初の行のトリガー判定式は、「関数＿人間接近検出（関数実行ロボットＩＤ，１０メートル）＝＝検出」である。「関数＿人間接近検出（）」は、トリガー判定プログラム１４４にある関数であり、人間が接近してきたことを検出するトリガー判定式である。１番目の引数「関数実行ロボットＩＤ」は、判定を実行するロボットのロボットＩＤを示し、２番目の引数「１０メートル」は、人間の接近を判定する距離の閾値である。人間がロボットの１０メートル以内に入ると関数の値が真となる。なお、人が多い場所では、「１０メートル」という閾値では、挨拶すべき相手ではない人間を誤検出する場合が増え、挨拶をすべき人間の接近を正しく検出する成功率が低くなる可能性がある。その場合、ロボットを管理する主体、例えば、管理者は、この引数を例えば「６メートル」のように、より短い距離に変更すればよい。
【０１４５】
トリガー判定プログラム１４４にてトリガー判定式が「真」と判定されると、トリガー判定プログラム１４４から個別型タスク実行プログラム１４２にトリガー判定式が真であるという応答が返送される。トリガー判定式が真であるという応答を受けた個別型タスク実行プログラム１４２は、アクション「関数＿ターゲットロック（関数実行ロボットＩＤ）」をアクション実行プログラム１４３に実行させる。
【０１４６】
「関数＿ターゲットロック（）」は、アクション実行プログラム１４３に備えられた関数の関数名である。その引数「関数実行ロボットＩＤ」は、関数を実行するロボットのロボットＩＤである。すなわち、このアクションは、人間が自分に近づいている可能性があると判断したロボットが、この人間を対人サービスのターゲットとしてロックするというアクションである。人間をターゲットとしてロックする処理というのは具体的には例えば、人間の顔を認識する処理である。
【０１４７】
次に、トリガー番号が１の行に移行する。この行のトリガー判定式は、「真」、つまり常に真であるので、個別型タスク実行プログラム１４２は、ターゲットロックのアクションを実行した後、自動的に、この行の「関数＿顔向き調整（関数実行ロボットＩＤ）」を、アクション実行プログラム１４３に実行させる。こうすると、ロボットは、自分の顔を対人サービスのターゲットである人間としての顧客に向け、その顧客に目線を合わせる。
【０１４８】
次に、トリガー番号が２の行に移行する。この行のトリガー判定式は、「関数＿距離判断（関数実行ロボットＩＤ，ターゲット座標）＜＝５メートル」であり、ロックしたターゲットとの距離を測定して閾値と比較し、距離が５メートル以内になったら、「真」と判断する。これは、ターゲットとしてロックした人間がロボットに何らかのサービスを求めている可能性が高いという判断である。この場合、「関数＿胴体向き調整（関数実行ロボットＩＤ）」が実行され、ロボットは、ターゲットである人間に体を向ける。人が多い場所では、「５メートル」という距離は、ターゲットの人間がロボットに何らかのサービスを求めているか否かを正しく検出できず、成功率が低くなる可能性がある、その場合、ロボットを管理する主体、例えば、管理者は、閾値とする引数を例えば、「２メートル」というように、より短い距離に変更すればよい。
【０１４９】
しかしながら、「２メートル」までロボットが接近してくると、ターゲットの人間が警戒心やストレスを抱くことがあり、何らかのサービスを求めているか否かの判断の成功率が低くなる可能性がある。
次に、トリガー番号が３の行に移行する。そこでターゲットの人間がロボットに何らかのサービスを求めているか否かを正しく検出するため、人間の感情を測る脈拍数によって判定する。具体的には、接近する前と接近した後の脈拍数を人間に装着された脈拍計２に通信で問合せ、当該脈拍数を獲得する。ロボットでは、トリガー判定式「関数＿脈拍数比較判断（関数実行ロボットＩＤ，脈拍数上昇」が実行される。脈拍数が接近前に比べて接近後に上昇した場合、人間がロボットの接近にストレスを抱いているので、人間が何らかのサービスを求めていないと判断する。この場合、「関数＿胴体向き調整（関数実行ロボットＩＤ）」が実行され、ロボットは、ターゲットである人間から体を逸らす。
【０１５０】
次に、トリガー番号が−１という最後の行に移行する。「関数＿正面検出（関数実行ロボットＩＤ）＝＝検出」というトリガー判定式が「真」というのは、サービスターゲットである人間がロボットに何らかのサービスを求めていることが確実であると判断する判定式である。このトリガー判定式が真となったら、「関数＿挨拶（関数実行ロボットＩＤ）」をアクション実行プログラム１４３に実行させる。これにより、ロボットがターゲットである人間に挨拶する。例えばロボットは、人間に「こんにちは、何かお困りでしょうか」と尋ねる。
【０１５１】
個別型タスク管理サーバーＳＴＳがロボットにタスク、例えば、タスクｔを実行させる動作について説明する。
【０１５２】
個別型タスク管理プログラム１４１は、タスクｔの実行を要求するリクエストを受信すると、タスク初期処理を実行する。
【０１５３】
図２２は、個別型のタスク初期処理のフローチャートである。
【０１５４】
個別型タスク管理プログラム１４１は、ステップＳ１４１０１により、タスク初期処理依頼メッセージＭ１を通信インターフェイス１５又はバス１２を介して受信する。タスク初期処理依頼メッセージＭ１の送信元は、少なくとも、アクション実行プログラム１４３、トリガー判定プログラム１４４、又はタスク設定用端末ＴＳＴである可能性が考えられる。個別型タスク管理プログラム１４１は、本メッセージのメッセージ識別子Ｍ１０１を検査することにより、本メッセージがタスク初期処理依頼メッセージＭ１であることを確認することができる。
【０１５５】
次に、個別型タスク管理プログラム１４１は、ステップＳ１４１０２により、タスク初期処理依頼メッセージＭ１を解読し、実行が要求されたタスクである依頼タスクのユニバーサルタスク番号Ｍ１０２と、依頼タスクを実行することが希望されたロボットである希望ロボットのロボットＩＤ  Ｍ１０３と、を取得する。
【０１５６】
さらに、個別型タスク管理プログラム１４１は、タスクライブラリーテーブル１３１を、バス１２を介して参照し、取得したユニバーサルタスク番号Ｍ１０２を用いて、依頼タスクに該当するタスクのタスク名１３１０２、対応能力要求１３１０３、及び他タスク並行実行可否１３１０４を取得する。
【０１５７】
他タスク並行実行可否１３１０４の情報が「否」である場合、個別型タスク管理プログラム１４１は、ステップＳ１４１０３により、実行中タスク状態テーブル１３３のタスク管理番号１３３０１を参照し、希望ロボットが現在、タスクを実行しているかどうかを確認する。希望ロボットがタスクを実行している場合、個別型タスク管理プログラム１４１は、現在、希望ロボットは、タスクｔを実行できない状態であると判断し、ステップＳ１４１１２により、対応不可な場合に実行すべきデフォルトタスクをアクション実行プログラム１４３に実行させる。希望ロボットがタスクを実行していない場合、個別型タスク管理プログラム１４１は、タスクｔを実行できると判断し、ステップＳ１４１０４に移行する。
【０１５８】
ステップＳ１４１０４に移行すると、個別型タスク管理プログラム１４１は、タスク初期処理依頼メッセージＭ１にある希望ロボットのロボットＩＤ  Ｍ１０３を用いて、ロボット状態テーブル１３５から希望ロボットのタスク対応能力１３５０３を取得する。
次に、個別型タスク管理プログラム１４１は、ステップＳ１４１０５により、ステップＳ１４１０２で取得したタスクｔの「オプション」で示された能力を除く対応能力要求１３１０３と、希望ロボットのタスク対応能力１３５０３と、を比較し、希望ロボットが単体でタスクｔに対応できるか否か判定する。対応能力要求１３１０３においてオプションとされた能力は、省略可能なアクションにて必要とされる能力である。ここでオプションの能力を除外したのは、希望ロボットがその能力を備えていなくても依頼タスクに個別対応が可能だからである。
【０１５９】
個別型タスク管理プログラム１４１は、タスクｔに希望ロボットが単体で対応できると判断したらステップＳ１４１０６に移行し、タスクｔに希望ロボットが単体で対応できないと判断したらステップＳ１４１１０に移行する。ステップＳ１４１１０では、個別型タスク管理プログラム１４１は、タスクｔが連携対応できるか否か判定する。タスクｔが連携対応できるものであれば、個別型タスク管理プログラム１４１は、ステップＳ１４１１１により、通信インターフェイス１５を介して連携型タスク管理サーバーＭＴＳに、依頼タスクの連携対応を依頼するために連携依頼メッセージＭ２を送信する。一方、タスクｔが連携対応できない場合、個別型タスク管理プログラム１４１は、ステップＳ１４１１２に移行する。
【０１６０】
一方、ステップＳ１４１０６に移行すると、個別型タスク管理プログラム１４１は、取得したユニバーサルタスク番号１３１０１を用いて、タスクｔの個別形態ｔｓに対応するトリガーアクション設定テーブル場所１３１０５を取得し、そこに示された場所からトリガーアクション設定テーブル１３４の一行目を読み込む。さらに、個別型タスク管理プログラム１４１は、ステップＳ１４１０７により、実行中タスク状態テーブル１３３にタスクｔの行を追加することによりタスクｔを実行中のタスクとし、その行にタスクｔの関連情報を書込む。
次に、個別型タスク管理プログラム１４１は、ステップＳ１４１０８により、受付済みタスクテーブル１３２にもタスクｔの行を追加することによりタスクｔを受付済みタスクとし、その行にもタスクｔの関連情報を書込む。
【０１６１】
最後に、個別型タスク管理プログラム１４１は、ステップＳ１４１０９により、ロボット状態テーブル１３５のロボットＩＤを参照して希望ロボットの状態を示す情報を識別し、希望ロボットの現在のタスクのタスク管理番号１３５０４を、タスクｔを示す番号に更新する。
【０１６２】
ここに示したように、タスク管理部として実行されるメモリー１４上の個別型タスク管理プログラム１４１がタスクの実行を管理する。記憶装置１３のタスクライブラリーテーブル１３１には、タスク毎にタスクが他のタスクと並行して実行できるタスクであるか否かを規定したタスクライブラリー情報が記録されている。タスク管理部としての個別型タスク管理プログラム１４１は、タスクの実行が要求されたときタスクライブラリー情報を参照し、タスクが他のタスクと並行して実行できるものであれば他のタスクが実行中か否かによらずタスク実行部としての個別型タスク実行プログラム１４２にタスクの実行を開始させ、タスクが他のタスクと並行して実行できないものであれば他のタスクが実行されているか否か確認し、他のタスクが実行されていれば、他のタスクが終了してからタスク実行部としての個別型タスク実行プログラム１４２にタスクを実行させる。他のタスクと並行して実行することが可能なタスクであれば早期に開始することができるので、対人サービスの提供を迅速に進めることができる。
【０１６３】
また、連携型タスク管理部としての連携型タスク管理プログラム２４１は、タスクに含まれるそれぞれのアクションに要求される要求能力に基づいて、タスクに含まれるアクションとそのアクションの実行に利用するロボットとを設定する。タスクに含まれるアクションをその要求能力に応じて複数のロボットに割り当てることができるので、個々に能力が異なる複数のロボットを組み合わせて有効に活用し、様々な能力を必要とするタスクを効率よく実行することができる。
【０１６４】
連携型タスク管理部としての連携型タスク管理プログラム２４１は、タスクに含まれるアクションに要求される要求能力を備えたロボットの有無を調査し、要求能力を備えたロボットがあれば、ロボットをタスクに含まれるアクションに優先的に割り当てる。タスクに含まれる全てのアクションを賄えるロボットがあれば、そのロボットを優先的に用いて全てのアクションを１つのロボットに実行させるので、効率よくタスクを実行することができる。連携型タスク管理部としての連携型タスク管理プログラム２４１は、タスクに含まれる全てのアクションに要求される要求能力を備えたロボットの有無を調査し、要求能力を備えたロボットがあれば、ロボットをタスクに含まれるアクションに優先的に割り当てもよい。
【０１６５】
ただし、図６に示したように、タスクに含まれるアクションには実行を省略することが可能な省略可能アクションがある場合がある。連携型タスク管理部は、タスクに含まれるアクションに要求される要求能力を備えたロボットが無ければ、タスクに含まれる省略可能アクション以外の全てのアクションに要求される要求能力である必須要求能力を備えたロボットの有無を調査し、オプションの要求能力を備えていなくても必須要求能力を備えたロボットがあれば、そのロボットをタスクに含まれるアクションに優先的に割り当てる。省略可能なアクションを除けばタスクに含まれるアクションを１つのロボットで実行できる場合に、そのロボットにタスクを実行させることができるので、ロボットのリソースを有効に利用することができる。連携型タスク管理部は、要求能力を満たすロボットが存在しない場合、アクションが省略可能アクションであれば、その省略可能アクションの省略を決定する。省略可能なアクションを除けばタスクに含まれるアクションを満たすロボットがある場合に、省略可能なアクションを省略してタスクの実行を確保することができる。連携型タスク管理部は、タスクに含まれる全てのアクションに要求される要求能力を備えたロボットが無ければ、タスクに含まれる省略可能アクション以外の全てのアクションに要求される要求能力である必須要求能力を備えたロボットの有無を調査し、オプションの要求能力を備えていなくても必須要求能力を備えたロボットがあれば、そのロボットをタスクに含まれるアクションに優先的に割り当ててもよい。
【０１６６】
個別型タスク実行プログラム１４２がタスクｔをアクション単位で段階的に進行させる個別型タスク実行処理について説明する。
【０１６７】
図２３は、個別型タスク実行処理のフローチャートである。ステップＳ１４２０１により、個別型タスク実行プログラム１４２は、実行中タスク状態テーブル１３３を行毎でスキャンし、以下の処理を繰り返す。
【０１６８】
ステップＳ１４２０２により、個別型タスク実行プログラム１４２は、実行中タスク状態テーブル１３３のタスク管理番号１３３０１を用いて受付済みタスクテーブル１３２を参照し、スキャンしたタスクの対応方法１３２０３を確認する。
【０１６９】
タスクｔの対応方法１３２０３が連携対応である場合、個別型タスク実行プログラム１４２は、ステップＳ１４２１０に移行する。一方、タスクｔの対応方法１３２０３が個別対応である場合、個別型タスク実行プログラム１４２は、ステップＳ１４２１１に移行する。
【０１７０】
ステップＳ１４２１１では、個別型タスク実行プログラム１４２は、当該タスクを実行しているロボットが実行しているタスクが並行実行可能かどうか判定する。当該ロボットが複数のタスクを並行して実行している場合、タスクにて次に実行すべきアクションと、当該ロボットが現在実行中の他の全てのタスクのアクションが並行実行可能かどうか判定する。
【０１７１】
並行実行ができない場合、個別型タスク実行プログラム１４２は、ステップＳ１４２１０に移行する。並行実行可能な場合、個別型タスク実行プログラム１４２は、ステップＳ１４２０３に移る。
【０１７２】
ステップＳ１４２０３では、個別型タスク実行プログラム１４２は、該当する行の現在のトリガー判定式１３３０２を読み込み、トリガー判定依頼メッセージＭ３にそのトリガー判定式１３３０２を含めて、トリガー判定依頼メッセージＭ３を、バス１２を介してトリガー判定プログラム１４４に送信する。
【０１７３】
トリガー判定依頼メッセージＭ３は、ステップＳ１４２０４でトリガー判定結果メッセージＭ４を受信し、トリガー判定結果メッセージＭ４内のメッセージ識別子Ｍ４０１を確認する。例えばトリガー判定結果メッセージＭ４がトリガー判定依頼メッセージＭ３に対する応答であるとすると、それら２つのメッセージに含まれるメッセージ識別子が一致する。
【０１７４】
次に、個別型タスク実行プログラム１４２は、ステップＳ１４２０５によりトリガー判定結果を読み込んで、トリガー判定式Ｍ３０２が満足されたかどうかを確認する。トリガー判定式Ｍ３０２が満足されていない場合、個別型タスク実行プログラム１４２は、本トリガーに対応するアクションを実行せずにステップＳ１４２１０に移行する。一方、トリガー判定式Ｍ３０２が満足された場合、個別型タスク実行プログラム１４２は、本トリガーに対応するアクションを実行するので、ステップＳ１４２０６に移行する。
【０１７５】
ステップＳ１４２０６により、個別型タスク実行プログラム１４２は、該当する行のアクションＭ７０２及びトリガー番号Ｍ７０５を含めたアクション実行依頼メッセージＭ７をアクション実行プログラム１４３に送信する。
【０１７６】
続いて、ステップＳ１４２０７で、個別型タスク実行プログラム１４２は、ステップＳ１４２０６で実行したアクションが該当タスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、トリガー番号Ｍ７０５が最後の番号であるかどうかをチェックすることである。
【０１７７】
実行したアクションが最後のアクションである場合、個別型タスク実行プログラム１４２は、ステップＳ１４２０８により、実行中タスク状態テーブル１３３の現在の行を削除し、ステップＳ１４２１０に移行する。
【０１７８】
一方、実行したアクションが最後のアクションではない場合、個別型タスク実行プログラム１４２は、ステップＳ１４２０９に移行する。個別型タスク実行プログラム１４２は、ステップＳ１４２０９により、トリガーアクション設定テーブル１３４を参照して、実行したアクションの次のアクション１３４０４に対応する行の情報を用いて、実行中タスク状態テーブル１３３の現在の行を更新する。
【０１７９】
なお、次のアクションのアクション要求能力が、当該ロボットにとって実行できないものである場合、該当アクションをスキップし、次々のアクションに対応する行の情報を用いて、実行中タスク状態テーブル１３３の現在の行を更新する。
【０１８０】
なお、次のアクションのアクション要求能力が、当該ロボットにとって実行できるものか否かは、タスク対応能力１３５０３を参考することにより分かる。
【０１８１】
最後に、個別型タスク実行プログラム１４２は、ステップＳ１４２１０に移行する。
【０１８２】
上述したように、個別型タスク実行プログラム１４２は、トリガー判定プログラム１４４にトリガー判定式Ｍ３０２が満足されているかどうかを判定させて、その判定結果に基づいてアクションの実行可否を判断する。また、後で詳しく説明するが、連携型タスク実行プログラム２４２もトリガー判定プログラム１４４にトリガー判定式Ｍ３０２を計算させて、その計算結果に基づいてアクションの実行可否を判断する。
【０１８３】
ここに示したように、トリガーアクション情報としてのトリガーアクション設定テーブル１３４には、アクションが他のアクションと並行して実行できるアクションであるか否かが設定されている。タスク実行部としての個別型タスク実行プログラム１４２は、選択したアクションが他のアクションと並行して実行できる場合には、先行するアクションを実行中に、選択したアクションのトリガー条件が満たされたか否かをトリガー判定部としてのトリガー判定プログラム１４４に判定させ、選択したアクションが他のアクションと並行して実行できない場合には、先行するアクションが終了してから、選択したアクションのトリガー条件が満たされたか否かトリガー判定部に判定させる。他のアクションと並行して実行することが可能なアクションであれば早期に開始することができるので、一連のアクションを迅速に進めることができる。
【０１８４】
ここで、それらに共通するトリガー判定プログラム１４４によるトリガー判定処理について説明する。
【０１８５】
図２４は、トリガー判定処理のフローチャートである。
【０１８６】
トリガー判定プログラム１４４は、ステップＳ１４４０１により、トリガー判定依頼メッセージＭ３又はトリガー計算依頼メッセージＭ５を、バス１２又は通信インターフェイス１５を介して受信すると、トリガー判定処理を開始する。続いて、トリガー判定プログラム１４４は、ステップＳ１４４０２により、受信したメッセージにあるトリガー判定式Ｍ３０２の文字列から関数名と引数を識別する。さらに、トリガー判定プログラム１４４は、ステップＳ１４４０３により関数を実行する。
【０１８７】
そして、トリガー判定プログラム１４４は、ステップＳ１４４０４にて、受信したメッセージのメッセージ識別子Ｍ４０１を用いて、受信したメッセージの種類を判断する。受信したメッセージがトリガー計算依頼メッセージＭ５である場合、トリガー判定プログラム１４４は、ステップＳ１４４０５に移行して、実行した関数の戻り値をトリガー計算結果メッセージＭ６に含めて、通信インターフェイス１５を介して、連携型タスク実行プログラム２４２に送信する。
【０１８８】
一方、受信したメッセージがトリガー判定依頼メッセージＭ３である場合、トリガー判定プログラム１４４は、ステップＳ１４４０６に移行し、現在のトリガー判定式１３３０２の文字列から条件式を識別し、実行した関数の戻り値を条件式に代入し、真偽の判定を実施する。
【０１８９】
そして、トリガー判定プログラム１４４は、ステップＳ１４４０７により、判定の結果をトリガー判定結果メッセージＭ４に含めて、バス１２を介して個別型タスク実行プログラム１４２に返信する。
【０１９０】
上述したように、個別型タスク実行プログラム１４２は、トリガー判定式Ｍ３０２が満足されたらアクション実行プログラム１４３にアクションを実行させる。また、後で詳しく説明するが、連携型タスク実行プログラム２４２もトリガー判定式が満足されたらアクション実行プログラム１４３にアクションを実行させる。
【０１９１】
アクション実行プログラム１４３は、個別型タスク実行プログラム１４２又は連携型タスク実行プログラム２４２の依頼によりアクション実行処理によりアクションを実行する。
【０１９２】
図２５は、アクション実行処理のフローチャートである。
【０１９３】
アクション実行プログラム１４３は、ステップＳ１４３０１により、アクション実行依頼メッセージＭ７を、バス１２又は通信インターフェイス１５を介して受信すると、アクション実行処理を開始する。
【０１９４】
続いて、アクション実行プログラム１４３は、ステップＳ１４３０２により、受信したメッセージにあるアクションＭ７０２の文字列から関数名及び引数を識別し、ステップＳ１４３０３により関数を実行する。
【０１９５】
次に、アクション実行プログラム１４３は、ステップＳ１４３０４にて、ステップＳ１４３０３で実行したアクションがタスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、アクション実行プログラム１４３は、現在のトリガー番号１３３０５が最後の番号であるかどうかをチェックする。実行したアクションが最後のアクションではない場合、アクション実行プログラム１４３は、処理を終了する。
【０１９６】
一方、実行したアクションが最後のアクションである場合、アクション実行プログラム１４３は、ステップＳ１４３０５に移行する。ステップＳ１４３０５では、アクション実行プログラム１４３は、受信したアクション実行依頼メッセージＭ７の依頼元ＩＤ  Ｍ７０３を用いて、バス１２を介して記憶装置１３にアクセスし、ロボット状態テーブル１３５から現在のタスクのタスク管理番号１３５０４を削除する。
【０１９７】
なお、アクションは他のタスクを起動することができる。例えば、タスクｔの個別形態ｔｓに含まれる一つのアクションは、別のタスクを実行させる関数である。この関数はタスクを起動するための汎用性を持ち、例えば、引数に基づいてタスク初期処理依頼メッセージＭ１を生成して個別型タスク管理プログラム１４１に送信するという機能を持つものである。
【０１９８】
タスクｔからタスクｑを起動するため、アクション実行プログラム１４３は、この関数をアクションとして用いることにより、タスク初期処理依頼メッセージＭ１を生成して個別型タスク管理プログラム１４１に送信する。
【０１９９】
タスク初期処理依頼メッセージＭ１を受信した個別型タスク管理プログラム１４１が、タスクｑを連携対応すると決めれば、タスクｑは、連携型タスク管理サーバーＭＴＳによって処理されることになる。したがって、個別形態のタスクが連携形態のタスクを起動することも可能である。なお、その場合に連携型のタスクｑと個別型のタスクｔとが同じ内容のタスクであってもよい。
【０２００】
連携型タスク管理サーバーＭＴＳがロボットにタスクを実行させる動作について説明する。
【０２０１】
連携型タスク管理プログラム２４１は、タスクを実行させるリクエストを受信すると、タスク初期処理を実行する。
【０２０２】
図２６は、連携型のタスク初期処理のフローチャートである。
【０２０３】
連携型タスク管理プログラム２４１は、ステップＳ２４１０１により、連携依頼メッセージＭ２を、通信インターフェイス２５を介して受信すると、タスク初期処理を開始する。
【０２０４】
連携依頼メッセージＭ２の送信元は、少なくとも、アクション実行プログラム１４３、トリガー判定プログラム１４４、又はタスク設定用端末ＴＳＴのいずれかである可能性が考えられる。
【０２０５】
続いて、連携型タスク管理プログラム２４１は、ステップＳ２４１０２により、連携先ロボットを選定する処理を実行する。連携型タスク管理プログラム２４１は、連携依頼メッセージＭ２にある依頼タスクのユニバーサルタスク番号Ｍ２０２及び依頼元ＩＤ  Ｍ２０３を用いて、連携型タスクライブラリーテーブル２３１及びロボット状態テーブル１３５を参照し、依頼タスクに対応することができるロボットを選定する。
【０２０６】
そして、連携型タスク管理プログラム２４１は、ステップＳ２４１０３により、依頼タスクに対応できるロボット、つまり連携先ロボットとなるロボットが存在するかどうかを判断する。連携先ロボットが存在するかどうかを判定する方法として、例えば、連携型タスクライブラリーテーブル２３１にある連携条件２３１０３を満たしているロボットが、ロボット状態テーブル１３５に存在するかどうかを検索する、という方法がある。
【０２０７】
連携先となるロボットが存在しない場合、連携型タスク管理プログラム２４１は、ステップＳ２４１０４に移行し、連携元ロボットの実行中タスク状態テーブル１３３及び受付済みタスクテーブル１３２に、連携が拒否されたときに実行すべきデフォルトタスクの行を追加し、その行にデフォルトタスクの関連情報を書込む。
【０２０８】
一方、連携先となるロボットが存在する場合、連携型タスク管理プログラム２４１は、そのロボットを連携先とし、ステップＳ２４１０５に移行し、連携型タスクライブラリーテーブル２３１を参照して、ユニバーサルタスク番号Ｍ２０２に対応する連携型タスクの連携型トリガーアクション設定テーブル２３４の一行目を読み込んで、実行中連携型タスク状態テーブル２３３及び受付済み連携型タスクテーブル２３２に連携先の関連情報を書込む。
【０２０９】
なお、トリガー判定式２３４０３及びアクション２３４０４にある連携先と連携元とを、連携先としたロボットを示す連携先ＩＤと、連携元となるロボットを示す連携元ＩＤとで書き換える。
【０２１０】
続いて、連携型タスク管理プログラム２４１は、連携中のロボットが並行実行不可の他のタスクを受け付けることを防ぐため、ステップＳ２４１０６により、個別型タスク管理サーバーＳＴＳの実行中タスク状態テーブル１３３及び受付済みタスクテーブル１３２に、連携型タスクの関連情報を書込む。
【０２１１】
最後に、連携型タスク管理プログラム２４１は、ステップＳ２４１０７により、連携元及び連携先のロボットのロボットＩＤ１３５０２を用いて、ロボット状態テーブル１３５における現在のタスクのタスク管理番号１３５０４を更新する。
【０２１２】
図２２及び図２６を用いて、ここまでに示したように、個別型タスク管理プログラム１４１がタスクを個別対応できないと判断した場合に、連携型タスク管理プログラム２４１が連携対応できるかどうか判断する。タスクに連携対応できる場合には、連携型タスクライブラリーテーブル２３１を用いてタスクを実行する。このときタスクのアクションは、タスクライブラリーテーブル１３１に規定されたものから連携型タスクライブラリーテーブル２３１に規定されたものへと切り替えられることとなる。このとき、ロボットの交代をユーザーに認識させるために、連携元ロボット及び連携先ロボットの少なくとも一方が実行する引継ぎのアクションが挿入されることとなる。
【０２１３】
すなわち、連携型タスク管理部としての連携型タスク管理プログラム２４１が、あるアクションとしての第１のアクションの実行にあるロボットとしての第１のロボットを割当て、第１のアクションに続く他のアクションとしての第２のアクションの実行に他のロボットとしての第２のロボットを割り当てる場合、第１のアクションと第２のアクションとの間に、ロボットの交代をユーザーに認識させるために、第１のロボット及び第２のロボットの一方が実行する引継ぎアクションを挿入している。又は、第１のロボット及び第２のロボットの少なくとも一方が実行する引継ぎアクションを挿入していてもよい。タスクを構成するアクション間でロボットが交代するとき引継ぎアクションによってロボットの交代をユーザーに認識させることができるので、ユーザーにとって違和感のない自然な対人サービスを実現することができる。
【０２１４】
このとき、引継ぎアクションを簡単な動作とし、トリガーアクション情報に第２のアクションが他のアクションと並行して実行できることを設定してもよい。あるいは、第２のアクションが他のアクションと並行して実行できないことを設定することにしてもよい。そうすると、複数のロボットを連携させる場合に第１のロボットから第２のロボットへの交代をユーザーに認識させてから第２のロボットの行動を開始させるので、自然な連携を確実に達成することができる。
【０２１５】
連携型タスク実行プログラム２４２は、連携型のタスクをアクション単位で段階的に進行させる連携型タスク実行処理について説明する。
【０２１６】
図２７は、連携型タスク実行処理のフローチャートである。ステップＳ２４２０１により、連携型タスク実行プログラム２４２は、実行中連携型タスク状態テーブル２３３を行毎でスキャンし、以下の処理を繰り返す。
【０２１７】
ステップＳ２４２１０において、連携型タスク実行プログラム２４２は、当該タスクを実行しているロボットが実行しているタスクが並行実行可能かどうか判定する。当該ロボットが複数のタスクを並行実行している場合、連携型タスク実行プログラム２４２は、そのタスクにおいて次に実行すべきアクションと、当該ロボットが現在実行中の他の全てのタスクのアクションが並行実行可能かどうか判定する。
【０２１８】
並行実行ができない場合、連携型タスク実行プログラム２４２は、ステップＳ２４２０９に移行する。並行実行可能な場合、連携型タスク実行プログラム２４２は、ステップＳ２４２０２により、スキャンした行の現在のトリガー判定式２３３０２を読み込み、このトリガー判定式２３３０２に含まれた関数の引数により、トリガー判定式の判定に関与するロボットを確認する。
【０２１９】
そして、連携型タスク実行プログラム２４２は、確認した関与ロボットを１つずつ依頼先とし、トリガー計算依頼メッセージＭ５を、通信インターフェイス２５を介してトリガー判定プログラム１４４に送信する。なお、送信された各トリガー計算依頼メッセージＭ５の「トリガー計算式」の箇所に搭載されるのは、依頼先のロボットが関与する関数を表す文字列である。
【０２２０】
そして、連携型タスク実行プログラム２４２は、ステップＳ２４２０３により、送信した各トリガー計算依頼メッセージＭ５に対応する各トリガー計算結果メッセージＭ６を受信してメッセージ識別子Ｍ６０１を確認する。そして、連携型タスク実行プログラム２４２は、ステップＳ２４２０４により、ステップＳ２４２０４で得た全てのトリガー計算結果メッセージＭ６の計算結果を用いて、現在のトリガー判定式２３３０２が満足されたかどうかを確認する。
【０２２１】
本トリガー判定式が満足されていない場合、連携型タスク実行プログラム２４２は、本トリガー判定式に対応するアクションを実行せずステップＳ２４２０９に移行する。一方、トリガー判定式が満足された場合、連携型タスク実行プログラム２４２は、本トリガー判定式に対応するアクションを実行するために、ステップＳ２４２０５に移行する。ステップＳ２４２０５では、連携型タスク実行プログラム２４２は、トリガー判定式に該当する行のアクション２３４０４の文字列から、本アクションに関与する連携ロボットを確認し、確認した関与ロボットを１つずつ依頼先として、現在のトリガー番号２３３０５を含めたアクション実行依頼メッセージＭ７を、アクション実行プログラム１４３に送信する。
【０２２２】
続いて、連携型タスク実行プログラム２４２は、ステップＳ２４２０６で、ステップＳ２４２０５で実行したアクションが該当タスクの最後のアクションであるかどうかを確認する。確認する方法の一つとして、本実施例では、現在のトリガー番号２３３０５が最後の番号であるかどうかをチェックするという方法がある。実行したアクションが最後のアクションである場合、連携型タスク実行プログラム２４２は、ステップＳ２４２０７により、実行中タスク状態テーブル１３３及び実行中連携型タスク状態テーブル２３３の現在の行を削除し、ステップＳ２４２０９に移行する。
【０２２３】
一方、実行したアクションが最後のアクションではない場合、連携型タスク実行プログラム２４２は、ステップＳ２４２０８に移行する。ステップＳ２４２０８では、連携型タスク実行プログラム２４２は、連携型トリガーアクション設定テーブル２３４を参照して、実行したアクションの次のアクションに対応する行の情報を用いて、実行中連携型タスク状態テーブル２３３及び実行中タスク状態テーブル１３３の現在の行を更新する。最後に、連携型タスク実行プログラム２４２は、ステップＳ２４２０９に移行する。
【０２２４】
図２８は、個別型タスク管理サーバーＳＴＳと連携型タスク管理サーバーＭＴＳとが互いにメッセージをやりとりする様子を説明するためのシーケンス図である。具体的には、個別型タスク管理サーバーＳＴＳにある個別型タスク管理プログラム１４１、個別型タスク実行プログラム１４２、アクション実行プログラム１４３、及びトリガー判定プログラム１４４と、連携型タスク管理サーバーＭＴＳにある連携型タスク管理プログラム２４１及び連携型タスク実行プログラム２４２と、が互いにメッセージをやりとりする様子を説明するためのシーケンス図である。図２８には、典型的な例が示されている。
【０２２５】
まず、ステップＴ１において、個別型タスク実行プログラム１４２がステップＳ１４２０３に従ってトリガー判定依頼メッセージＭ３をトリガー判定プログラム１４４に送信する。
そして、ステップＴ２において、トリガー判定プログラム１４４が、図２４に示されたフローチャートに従って判定を行い、トリガー判定結果メッセージＭ４を個別型タスク実行プログラム１４２に返信する。この例では、判定結果メッセージのトリガー判定結果Ｍ４０２が「真」であるとする。
【０２２６】
ステップＴ３において、個別型タスク実行プログラム１４２は、ステップＳ１４２０６に従ってアクション実行依頼メッセージＭ７を生成してアクション実行プログラム１４３に送信する。この例では、アクション実行依頼メッセージＭ７にあるアクションＭ７０２は、別のタスクを実行するアクションであるとする。
ステップＴ４において、アクション実行プログラム１４３は、タスク初期処理依頼メッセージＭ１を個別型タスク管理プログラム１４１に送信する。
【０２２７】
そして個別型タスク管理プログラム１４１は、タスク初期処理依頼メッセージＭ１を受信してタスク初期処理を実行する。
【０２２８】
この例では、個別型タスク管理プログラム１４１が、ステップＳ１４１１０により、タスクが連携対応可能であることを判断するものとする。ステップＴ５において、個別型タスク管理プログラム１４１は、連携依頼メッセージＭ２を連携型タスク管理プログラム２４１に送信する。続いて、連携型タスク管理プログラム２４１は、図２６に示されたように、実行中連携型タスク状態テーブル２３３にタスクの関連情報を記入する。また、ステップＴ６において、連携型タスク実行プログラム２４２は、実行中連携型タスク状態テーブル２３３をスキャンしてタスクの処理を開始し、図２７に示されたように、ステップＳ２４２０２により、トリガー計算依頼メッセージＭ５をトリガー判定プログラム１４４に送信する。
【０２２９】
続いて、ステップＴ７において、トリガー判定プログラム１４４が、図２４に示されたフローチャートに従って判定を行い、トリガー計算結果メッセージＭ６を個別型タスク実行プログラム１４２に返信する。この例で、連携型タスク実行プログラム２４２がステップＳ２４２０４により、判定結果メッセージのトリガー計算結果Ｍ６０２を用いてトリガー条件が満たされたと判断するものとする。そして、ステップＴ８において、連携型タスク実行プログラム２４２は、アクション実行依頼メッセージＭ７をアクション実行プログラム１４３に送信する。
【０２３０】
以上、説明したように、ロボットの行動を一連のアクションとして段階的に設定する手段を提供することで、ロボットに当時の環境、場面、要求に応じて適切に行動させるようになる。さらに、ロボットが人間従業員のように、周りの状況の変化に対応して行動の進め方をコントロールできるようになり、ロボットの行動がユーザーに対して自然で友好的であるため、ユーザーにサービスの状況を容易で正確に把握してもらえる。したがって、対人サービスの成功率と顧客体験とが向上する。
【０２３１】
なお、本発明の実施形態について図面を参照して説明したが、本発明がその実施形態に限定されるものではない。例えば、個別型タスク管理サーバーＳＴＳと連携型タスク管理サーバーＭＴＳとは、その物理的な構成は特に限定されることはない。個別型タスク管理サーバーＳＴＳと連携型タスク管理サーバーＭＴＳとが同一装置上に実装されていてもよい。また、個別型タスク管理サーバーＳＴＳの有する機能が複数の装置に分散配置されていてもよい。また、連携型タスク管理サーバーＭＴＳの有する機能が複数の装置に分散配置されていてもよい。
【０２３２】
また、本発明は、実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合わせてもよい。
【０２３３】
以下に、実施形態から導き出される内容を記載する。
【０２３４】
ロボット制御システムは、対人サービスを実行するロボットを制御するロボット制御システムであって、ユーザーに装着された脈拍計と、前記ロボットに実行させるタスクを一連のアクションで構成し、前記脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶する記憶部と、前記アクションの前記トリガー条件が満たされたか否か判定するトリガー判定部と、前記アクションを実行するアクション実行部と、前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させ、前記トリガー条件が満たされれば、前記選択したアクションを前記アクション実行部に実行させるタスク実行部と、を有する。
これによれば、ロボットが行うタスクを一連のアクションで構成し、ユーザーに装着された脈拍計の情報を連動させ、アクション毎にトリガー条件を設定し、トリガー条件が満たされたときにロボットにアクションを実行させるので、ロボットが各アクションを開始するときにユーザーが自然と感じるようなトリガー条件を設定することが可能となり、自然な対人サービスを提供することが可能となる。
【０２３５】
上記のロボット制御システムでは、前記トリガーアクション情報には、前記アクションが他の前記アクションと並行して実行できるアクションであるか否かがさらに設定されており、前記タスク実行部は、前記選択したアクションが前記他のアクションと並行して実行できる場合には、先行する前記アクションを実行中に、前記選択したアクションの前記トリガー条件が満たされたか否かを前記トリガー判定部に判定させ、前記選択したアクションが前記他のアクションと並行して実行できない場合には、前記先行するアクションが終了してから、前記選択したアクションの前記トリガー条件が満たされたか否か前記トリガー判定部に判定させることが好ましい。
これによれば、他のアクションと並行して実行することが可能なアクションであれば早期に開始することができるので、一連のアクションを迅速に進めることができる。
【０２３６】
上記のロボット制御システムでは、前記タスクの実行を管理するタスク管理部をさらに有し、前記記憶部は、前記タスク毎に前記タスクが他の前記タスクと並行して実行できるタスクであるか否かを規定したタスクライブラリー情報をさらに記憶し、前記タスク管理部は、前記タスクの実行が要求されたとき前記タスクライブラリー情報を参照し、前記タスクが前記他のタスクと並行して実行できるものであれば前記他のタスクが実行中か否かによらず前記タスク実行部に前記タスクの実行を開始させ、前記タスクが前記他のタスクと並行して実行できないものであれば前記他のタスクが実行されているか否か確認し、前記他のタスクが実行されていれば、前記他のタスクが終了してから前記タスク実行部に前記タスクを実行させることが好ましい。
これによれば、他のタスクと並行して実行することが可能なタスクであれば早期に開始することができるので、対人サービスの提供を迅速に進めることができる。
【０２３７】
上記のロボット制御システムでは、前記対人サービスに利用可能な前記ロボットが複数あり、前記トリガーアクション情報には前記アクション毎に前記アクションを実行させる前記ロボットの割当てが設定可能であり、前記アクション実行部に、前記トリガーアクション情報に含まれるそれぞれの前記アクションを前記トリガーアクション情報にて前記アクションの実行に割り当てられた前記ロボットを用いて実行させる連携型タスク実行部をさらに有することが好ましい。
これによれば、アクション毎にそのアクションを実行させるロボットを設定することができるので、複数のロボットを連携させてタスクを実行することができる。
【０２３８】
上記のロボット制御システムでは、前記タスクに含まれるそれぞれの前記アクションに要求される要求能力に基づいて、前記タスクに含まれる前記アクションと前記アクションの実行に利用する前記ロボットとを設定する連携型タスク管理部をさらに有することが好ましい。
これによれば、タスクに含まれるアクションをその要求能力に応じて複数のロボットに割り当てることができるので、個々に能力が異なる複数のロボットを組み合わせて有効に活用し、様々な能力を必要とするタスクを効率よく実行することができる。
【０２３９】
上記のロボット制御システムでは、前記連携型タスク管理部は、第１の前記アクションの実行に第１の前記ロボットを割当て前記第１のアクションに続く第２の前記アクションの実行に第２の前記ロボットを割り当てる場合、前記第１のアクションと前記第２のアクションとの間に、前記ロボットの交代を前記ユーザーに認識させるために前記第１のロボット及び前記第２のロボットの一方が実行する引継ぎアクションを挿入することが好ましい。
これによれば、タスクを構成するアクション間でロボットが交代するとき引継ぎアクションによってロボットの交代をユーザーに認識させることができるので、ユーザーにとって違和感のない自然な対人サービスを実現することができる。
【０２４０】
上記のロボット制御システムでは、前記連携型タスク管理部は、前記トリガーアクション情報に前記第２のアクションが他の前記アクションと並行して実行できないことを設定することが好ましい。
これによれば、複数のロボットを連携させる場合に第１のロボットから第２のロボットへの交代をユーザーに認識させてから第２のロボットの行動を開始させるので、自然な連携を確実に達成することができる。
【０２４１】
上記のロボット制御システムでは、前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットの有無を調査し、前記要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てることが好ましい。
これによれば、タスクに含まれる全てのアクションを賄えるロボットがあれば、そのロボットを優先的に用いて全てのアクションを１つのロボットに実行させるので、効率よくタスクを実行することができる。
【０２４２】
上記のロボット制御システムでは、前記タスクに含まれる前記アクションには実行を省略することが可能な省略可能アクションがある場合があり、前記連携型タスク管理部は、前記タスクに含まれる前記アクションに要求される前記要求能力を有した前記ロボットが無ければ、前記タスクに含まれる前記省略可能アクション以外の全ての前記アクションに要求される前記要求能力である必須要求能力を有した前記ロボットの有無を調査し、前記必須要求能力を有した前記ロボットがあれば、前記ロボットを前記タスクに含まれる前記アクションに優先的に割り当てることが好ましい。
これによれば、省略可能なアクションを除けばタスクに含まれるアクションを１つのロボットで実行できる場合に、そのロボットにタスクを実行させることができるので、ロボットのリソースを有効に利用することができる。
【０２４３】
上記のロボット制御システムでは、前記省略可能アクションがあり、前記連携型タスク管理部は、前記要求能力を満たす前記ロボットが存在しない場合、前記アクションが前記省略可能アクションであれば、前記省略可能アクションの省略を決定することが好ましい。
これによれば、省略可能なアクションを除けばタスクに含まれるアクションを満たすロボットがある場合に、省略可能なアクションを省略してタスクの実行を確保することができる。
【０２４４】
ロボット制御方法は、対人サービスを実行するロボットを制御するためのロボット制御方法であって、記憶手段が、前記ロボットに実行させるタスクを一連のアクションで構成し、ユーザーに装着された脈拍計の情報を連動させ、前記アクションと前記アクションのそれぞれを開始するトリガー条件とを規定したトリガーアクション情報を予め記憶し、タスク実行手段が、前記ロボットに実行させる前記タスクの前記トリガーアクション情報に規定された前記アクションを順次選択し、選択した前記アクションの前記トリガー条件が満たされたか否か判定し、前記トリガー条件が満たされれば、アクション実行手段が、前記選択したアクションを実行する。
これによれば、ロボットが行うタスクを一連のアクションで構成し、ユーザーに装着された脈拍計の情報を連動させ、アクション毎にトリガー条件を設定し、トリガー条件が満たされたときにロボットにアクションを実行させるので、ロボットが各アクションを開始するときにユーザーが自然と感じるようなトリガー条件を設定することが可能となり、自然な対人サービスを提供することが可能となる。
【符号の説明】
【０２４５】
２…脈拍計  ３…ＣＰＵ  ４…バス  ５…脈拍センサー  ６…メモリー  ７…通信インターフェイス  １１…ＣＰＵ  １２…バス  １３…記憶装置（記憶部、記憶手段）  １４…メモリー  １５…通信インターフェイス  ２１…ＣＰＵ  ２２…バス  ２３…記憶装置（記憶部、記憶手段）  ２４…メモリー  ２５…通信インターフェイス  １３１…タスクライブラリーテーブル  １３２…受付済みタスクテーブル  １３３…実行中タスク状態テーブル  １３４…トリガーアクション設定テーブル  １３５…ロボット状態テーブル  １４１…個別型タスク管理プログラム  １４２…個別型タスク実行プログラム  １４３…アクション実行プログラム  １４４…トリガー判定プログラム  ２３１…連携型タスクライブラリーテーブル  ２３２…受付済み連携型タスクテーブル  ２３３…実行中連携型タスク状態テーブル  ２３４…連携型トリガーアクション設定テーブル  ２４１…連携型タスク管理プログラム  ２４２…連携型タスク実行プログラム  ３０１…ＣＰＵ  ３０２…バス  ３０３…記憶装置  ３０４…メモリー  ３０５…通信インターフェイス  ３０７…マイク  ３０８…移動機構  ３０９…スピーカー  ３１０…カメラ  ３１１…センサー  ＭＴＳ…連携型タスク管理サーバー  ＮＷ…ネットワーク  Ｒ１，Ｒ２…ロボット  ＳＴＳ…個別型タスク管理サーバー  ＴＳＴ…タスク設定用端末。
【図１】
2020138255.tif 000003
【図２】
2020138255.tif 000004
【図３】
2020138255.tif 000005
【図４】
2020138255.tif 000006
【図５】
2020138255.tif 000007
【図６】
2020138255.tif 000008
【図７】
2020138255.tif 000009
【図８】
2020138255.tif 000010
【図９】
2020138255.tif 000011
【図１０】
2020138255.tif 000012
【図１１】
2020138255.tif 000013
【図１２】
2020138255.tif 000014
【図１３】
2020138255.tif 000015
【図１４】
2020138255.tif 000016
【図１５】
2020138255.tif 000017
【図１６】
2020138255.tif 000018
【図１７】
2020138255.tif 000019
【図１８】
2020138255.tif 000020
【図１９】
2020138255.tif 000021
【図２０】
2020138255.tif 000022
【図２１】
2020138255.tif 000023
【図２２】
2020138255.tif 000024
【図２３】
2020138255.tif 000025
【図２４】
2020138255.tif 000026
【図２５】
2020138255.tif 000027
【図２６】
2020138255.tif 000028
【図２７】
2020138255.tif 000029
【図２８】
2020138255.tif 000030