(57)【要約】【課題】  異なるタスクの移動を行うロボット間の移動計画の協調を効率的に実施することができる。【解決手段】  システム１０は、複数のロボット１２を含み、各ロボットは行動情報を送受信する。行動情報は、ロボットの現在位置の位置情報、実行中のタスクについてのタスク情報および当該タスクについての利益関数を含み、各ロボットは、ロボット自身が或る移動候補点を選択した場合の利益と、他のロボットが或る移動候補点を選択した場合の利益に基づく相互利益が最大となる組み合わせを選択して、経路計画を作成する。このとき、各タスクの優先度が考慮される。ロボットは、タスクを実行する場合に、作成された経路計画に従って移動する。つまり、各タスクの利益関数および優先度を複数のロボットで共有することで、複数のロボットが互いの移動計画を分散的に計算し、それぞれ協調した移動計画の決定および実行が可能になる。【選択図】  図１
2020021351.tif 000002
【特許請求の範囲】
【請求項１】
移動手段を備えるロボットであって、
実行中のタスクについての第１タスク情報を含む第１行動情報を前記ロボットの周囲に存在する他のロボットに送信する送信手段、
前記他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信する受信手段、
前記ロボットが第１移動計画を選択した場合の第１利益を算出する第１利益算出手段、
前記他のロボットが第２移動計画を選択した場合の第２利益を算出する第２利益算出手段、
前記第１タスク情報の優先度と前記第２タスク情報の優先度を考慮した前記第１利益と前記第２利益に基づく相互利益が最大となる前記第１移動計画および前記第２移動計画の組み合わせを選択することにより、前記ロボットが移動する経路計画を作成する作成手段、および
前記作成手段によって作成された経路計画に従って移動するように前記移動手段を制御する制御手段を備える、ロボット。
【請求項２】
前記第１行動情報は、前記ロボットの現在位置についての現在位置情報をさらに含み、
前記第２行動情報は、前記他のロボットの現在位置についての現在位置情報をさらに含む、請求項１記載のロボット。
【請求項３】
前記第１タスク情報は、前記ロボットの目的地についての目的地情報をさらに含み、
前記第２タスク情報は、前記他のロボットの目的地についての目的地情報をさらに含む、請求項１または２記載のロボット。
【請求項４】
前記第１利益算出手段は、所定時間毎に、前記ロボットが存在可能な各位置への第１移動計画を選択した場合の第１利益をそれぞれ算出し、
前記第２利益算出手段は、前記所定時間毎に、前記他のロボットが存在可能な各位置への第２移動計画を選択した場合の第２利益のそれぞれを算出し、
前記相互利益算出手段は、前記所定時間毎に、前記ロボットが存在可能な各位置と前記他のロボットが存在可能な各位置についてのすべての組み合わせについて前記相互利益を算出し、
前記作成手段は、前記所定時間毎に、前記相互利益が最大となる前記第１移動計画および前記第２移動計画の組み合わせを選択することにより、前記ロボットが移動する経路計画を作成する、請求項２記載のロボット。
【請求項５】
前記第１利益算出手段は、所定時間毎に、前記ロボットが存在可能な各位置への第１移動計画を選択した場合の第１利益をそれぞれ算出し、
前記第２利益算出手段は、複数の前記他のロボットの各々について、前記所定時間毎に、当該他のロボットが存在可能な各位置への第２移動計画を選択した場合の第２利益のそれぞれを算出し、
前記相互利益算出手段は、前記所定時間毎に、前記ロボットが存在可能な各位置と前記複数の他のロボットの各々が存在可能な各位置についてのすべての組み合わせについて前記相互利益を算出し、
前記作成手段は、前記所定時間毎に、前記相互利益が最大となる前記第１移動計画および複数の前記第２移動計画の組み合わせを選択することにより、前記ロボットが移動する経路計画を作成する、請求項２記載のロボット。
【請求項６】
前記作成手段は、前記ロボットと前記他のロボットが衝突する組み合わせについては選択肢から除外する、請求項１から５までのいずれかに記載のロボット。
【請求項７】
前記作成手段は、前記第１移動計画および前記第２移動計画の組み合わせと同じ組み合わせについては選択肢から除外する、請求項１から６までのいずれかに記載のロボット。
【請求項８】
移動手段を備えるロボットのロボット制御プログラムであって、
前記ロボットのプロセッサに、
実行中のタスクについての第１タスク情報を含む第１行動情報を前記ロボットの周囲に存在する他のロボットに送信する送信ステップ、
前記他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信する受信ステップ、
前記ロボットが第１移動計画を選択した場合の第１利益を算出する第１利益算出ステップ、
前記他のロボットが第２移動計画を選択した場合の第２利益を算出する第２利益算出ステップ、
前記第１タスク情報の優先度と前記第２タスク情報の優先度を考慮した前記第１利益と前記第２利益に基づく相互利益が最大となる前記第１移動計画および前記第２移動計画の組み合わせを選択することにより、前記ロボットが移動する経路計画を作成する作成ステップ、および
前記作成ステップにおいて作成した経路計画に従って移動するように前記移動手段を制御する制御ステップを実行させる、ロボット制御プログラム。
【請求項９】
移動手段を備えるロボットのロボット制御方法であって、
（ａ）実行中のタスクについての第１タスク情報を含む第１行動情報を前記ロボットの周囲に存在する他のロボットに送信するステップ、
（ｂ）前記他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信するステップ、
（ｃ）前記ロボットが第１移動計画を選択した場合の第１利益を算出するステップ、
（ｄ）前記他のロボットが第２移動計画を選択した場合の第２利益を算出するステップ、
（ｅ）前記第１タスク情報の優先度と前記第２タスク情報の優先度を考慮した前記第１利益と前記第２利益に基づく相互利益が最大となる前記第１移動計画および前記第２移動計画の組み合わせを選択することにより、前記ロボットが移動する経路計画を作成するステップ、および
（ｆ）前記ステップ（ｅ）において作成した経路計画に従って移動するように前記移動手段を制御するステップを含む、ロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はロボット、ロボット制御プログラムおよびロボット制御方法に関し、特にたとえば、日常空間においてサービスを提供する、ロボット、ロボット制御プログラムおよびロボット制御方法に関する。
【背景技術】
【０００２】
この種の従来のネットワークロボットシステムの一例が特許文献１に開示されている。この特許文献１に開示されるネットワークロボットシステムは、ロボットを含み、ロボットはサービスの提供に係る移動経路の生成要求の要求メッセージをロボット制御装置に送信する。ロボット制御装置は、要求メッセージを受けて、ロボット同士が衝突しないように、当該要求メッセージについての移動経路を生成する。そして、ロボット制御装置は、移動経路のうちの一定時間分の移動経路についての移動経路データをロボットに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２３１６９８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の特許文献１のネットワークロボットシステムでは、ロボット制御装置が複数のロボットの移動を制御することにより、ロボット同士の衝突を防止している。このため、ロボットの数が増加するにつれてロボット制御装置の処理負荷が増大する。つまり、複数のロボットが複数の異なるタイプの移動を伴う行動を行う場合に、効率的にロボット間の移動計画を調整するのが困難であった。
【０００５】
それゆえに、この発明の主たる目的は、新規な、ロボット、ロボット制御プログラムおよびロボット制御方法を提供することである。
【０００６】
また、この発明の他の目的は、異なるタスクの移動を行うロボット間の移動計画の協調を効率的に実施することができる、ロボット、ロボット制御プログラムおよびロボット制御方法を提供することである。
【課題を解決するための手段】
【０００７】
第１の発明は、移動手段を備えるロボットであって、実行中のタスクについての第１タスク情報を含む第１行動情報をロボットの周囲に存在する他のロボットに送信する送信手段、他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信する受信手段、ロボットが第１移動計画を選択した場合の第１利益を算出する第１利益算出手段、他のロボットが第２移動計画を選択した場合の第２利益を算出する第２利益算出手段、第１タスク情報の優先度と第２タスク情報の優先度を考慮した第１利益と第２利益に基づく相互利益が最大となる第１移動計画および第２移動計画の組み合わせを選択することにより、ロボットが移動する経路計画を作成する作成手段、および作成手段によって作成された経路計画に従って移動するように移動手段を制御する制御手段を備える、ロボットである。
【０００８】
第２の発明は、第１の発明に従属し、第１行動情報は、ロボットの現在位置についての現在位置情報をさらに含み、第２行動情報は、他のロボットの現在位置についての現在位置情報をさらに含む。
【０００９】
第３の発明は、第１または第の発明に従属し、第１タスク情報は、ロボットの目的地についての目的地情報をさらに含み、第２タスク情報は、他のロボットの目的地についての目的地情報をさらに含む。
【００１０】
第４の発明は、第２の発明に従属し、第１利益算出手段は、所定時間毎に、ロボットが存在可能な各位置への第１移動計画を選択した場合の第１利益をそれぞれ算出し、第２利益算出手段は、所定時間毎に、他のロボットが存在可能な各位置への第２移動計画を選択した場合の第２利益のそれぞれを算出し、相互利益算出手段は、所定時間毎に、ロボットが存在可能な各位置と他のロボットが存在可能な各位置についてのすべての組み合わせについて相互利益を算出し、作成手段は、所定時間毎に、相互利益が最大となる第１移動計画および第２移動計画の組み合わせを選択することにより、ロボットが移動する経路計画を作成する。
【００１１】
第５の発明は、第２の発明に従属し、第１利益算出手段は、所定時間毎に、ロボットが存在可能な各位置への第１移動計画を選択した場合の第１利益をそれぞれ算出し、第２利益算出手段は、複数の他のロボットの各々について、所定時間毎に、当該他のロボットが存在可能な各位置への第２移動計画を選択した場合の第２利益のそれぞれを算出し、相互利益算出手段は、所定時間毎に、ロボットが存在可能な各位置と複数の他のロボットの各々が存在可能な各位置についてのすべての組み合わせについて相互利益を算出し、作成手段は、所定時間毎に、相互利益が最大となる第１移動計画および複数の第２移動計画の組み合わせを選択することにより、ロボットが移動する経路計画を作成する。
【００１２】
第６の発明は、第１から第５までのいずれかに従属し、作成手段は、ロボットと他のロボットが衝突する組み合わせについては選択肢から除外する。
【００１３】
第７の発明は、第１から第６までのいずれかに従属し、作成手段は、第１移動計画および第２移動計画の組み合わせと同じ組み合わせについては選択肢から除外する。
【００１４】
第８の発明は、移動手段を備えるロボットのロボット制御プログラムであって、ロボットのプロセッサに、実行中のタスクについての第１タスク情報を含む第１行動情報をロボットの周囲に存在する他のロボットに送信する送信ステップ、他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信する受信ステップ、ロボットが第１移動計画を選択した場合の第１利益を算出する第１利益算出ステップ、他のロボットが第２移動計画を選択した場合の第２利益を算出する第２利益算出ステップ、第１タスク情報の優先度と第２タスク情報の優先度を考慮した第１利益と第２利益に基づく相互利益が最大となる第１移動計画および第２移動計画の組み合わせを選択することにより、ロボットが移動する経路計画を作成する作成ステップ、および作成ステップにおいて作成した経路計画に従って移動するように移動手段を制御する制御ステップを実行させる、ロボット制御プログラムである。
【００１５】
第９の発明は、移動手段を備えるロボットのロボット制御方法であって、（ａ）実行中のタスクについての第１タスク情報を含む第１行動情報をロボットの周囲に存在する他のロボットに送信するステップ、（ｂ）他のロボットが実行中のタスクについての第２タスク情報を含む第２行動情報を受信するステップ、（ｃ）ロボットが第１移動計画を選択した場合の第１利益を算出するステップ、（ｄ）他のロボットが第２移動計画を選択した場合の第２利益を算出するステップ、（ｅ）第１タスク情報の優先度と第２タスク情報の優先度を考慮した第１利益と第２利益に基づく相互利益が最大となる第１移動計画および第２移動計画の組み合わせを選択することにより、ロボットが移動する経路計画を作成するステップ、および（ｆ）ステップ（ｅ）において作成した経路計画に従って移動するように移動手段を制御するステップを含む、ロボット制御方法である。
【発明の効果】
【００１６】
この発明によれば、異なるタスクの移動を行うロボット間の移動計画の協調を効率的に実施することができる。
【００１７】
この発明の上述の目的、その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００１８】
【図１】図１はこの発明の一実施例を示すシステムの概要を示す図である。
【図２】図２は図１に示すロボットの外観を正面から見た図である。
【図３】図３は図１および図２に示すロボットの電気的な構成を示すブロック図である。
【図４】図４は優先度テーブルの一例を示す図である。
【図５】図５（Ａ）は２台のロボットが目的地まで移動する行動についてのタスクを実行する場合において、狭い幅の通路の一方の端に一方のロボットが位置し、他方の端に他方のロボットが位置する状態を示す図であり、図５（Ｂ）は図５（Ａ）に示す状態から、一方のロボットが狭い幅の通路を通行する状態に変化したことを示す図である。
【図６】図６（Ａ）は図５（Ｂ）に示す状態から、一方のロボットが狭い幅の通路を通行し終えた状態に変化したことを示す図であり、図６（Ｂ）は図６（Ａ）に示す状態から、一方のロボットが狭い幅の通路から去った後に、他方のロボットが狭い幅の通路を通行する状態に変化したことを示す図である。
【図７】図７はロボットが配置される環境における展示物の配置位置を示す図である。
【図８】図８は経路計画を作成する方法を説明するための図である。
【図９】図９（Ａ）はロボットの移動候補を説明するための図であり、図９（Ｂ）は移動候補点を説明するための図である。
【図１０】図１０は図３に示すメモリのメモリマップの一例を示す図解図である。
【図１１】図１１は図３に示すＣＰＵのロボット制御処理の一部を示すフロー図である。
【図１２】図１２は図３に示すＣＰＵのロボット制御処理の他の一部であって、図１１に後続するフロー図である。
【図１３】図１３は図３に示すＣＰＵの経路計画の作成処理の一部を示すフロー図である。
【図１４】図１４は図３に示すＣＰＵの経路計画の作成処理の他の一部であって、図１３に後続するフロー図である。
【図１５】図１５は図３に示すＣＰＵの経路計画の作成処理のその他の一部であって、図１４に後続するフロー図である。
【発明を実施するための形態】
【００１９】
図１を参照して、この実施例のシステム１０は、複数のコミュニケーションロボット(以下、単に「ロボット」という。)１２で構成される。各ロボット１２は、音声および身体動作（ジェスチャ）の少なくとも一方を用いて、人間や他のロボット１２（ロボット１２以外のロボットでもよい）とコミュニケーションを行うことができる。また、各ロボット１２は、他のロボット１２と無線通信することができる。
【００２０】
なお、図１では、３台のロボット１２を図示するが、ロボット１２は、２台以上であれば、４台以上であってもよい。
【００２１】
また、図１では省略するが、操作者は、端末（ＰＣなどの汎用のコンピュータである）を用いてロボット１２にコマンドを送信することにより、遠隔でロボット１２を操作することもできる。以下、この明細書において、ロボット１２を遠隔で操作する操作者を「ユーザ」と呼ぶことにする。また、この「ユーザ」に対して、ロボット１２またはロボット１２のユーザのコミュニケーション対象を「人間」または「人」と呼ぶことにする。
【００２２】
なお、遠隔に設けられた端末を用いてロボット１２を操作等することは既に周知であり、また、本願の本質的な内容ではないため、この明細書においては、ユーザが使用する端末および遠隔操作についての詳細な説明は省略する。
【００２３】
この実施例のロボット１２は、自律行動型のロボットであり、地下街、ショッピングモール、イベント会場、遊園地および美術館などの不特定多数の人間が存在する環境または日常空間に配置され、人間の道案内または誘導を行ったり、荷物を運搬したりするなどの様々なサービスを提供する。このロボット１２は、自身が配置される環境について予め記憶した地図（間取り図）の情報および自身に備わる各種センサからの情報に基づいて自律的に行動する（移動および動作する）ことができる。ただし、この実施例では、図１に示す複数のロボット１２は、同じ環境または日常空間に配置される。以下、ロボット１２の構成について具体的に説明する。
【００２４】
図２を参照して、ロボット１２のハードウェアの構成について説明する。図２は、この実施例のロボット１２の外観を示す正面図である。ロボット１２は台車３０を含み、台車３０の下面にはロボット１２を自律移動させる２つの車輪３２および１つの従輪３４が設けられる。２つの車輪３２は車輪モータ３６（図３参照）によってそれぞれ独立に駆動され、台車３０すなわちロボット１２を前後左右の任意方向に動かすことができる。また、従輪３４は車輪３２を補助する補助輪である。したがって、ロボット１２は、配置された空間内を自律制御によって移動可能である。
【００２５】
台車３０の上には、円柱形のセンサ取り付けパネル３８が設けられ、このセンサ取り付けパネル３８には、多数の赤外線距離センサ４０が取り付けられる。これらの赤外線距離センサ４０は、センサ取り付けパネル３８すなわちロボット１２の周囲の物体（人間や障害物など）との距離を測定するものである。
【００２６】
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、超音波距離センサやミリ波レーダなどを用いることもできる。
【００２７】
センサ取り付けパネル３８の上には、胴体４２が直立するように設けられる。また、胴体４２の前方中央上部（人の胸に相当する位置）には、上述した赤外線距離センサ４０がさらに設けられ、ロボット１２の前方の主として人間との距離を計測する。また、胴体４２には、その側面側上端部のほぼ中央から伸びる支柱４４が設けられ、支柱４４の上には、全方位カメラ４６が設けられる。全方位カメラ４６は、ロボット１２の周囲を撮影するものであり、後述する眼カメラ７０とは区別される。この全方位カメラ４６としては、たとえばＣＣＤやＣＭＯＳのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ４０および全方位カメラ４６の設置位置は、当該部位に限定されず適宜変更され得る。
【００２８】
胴体４２の両側面上端部（人の肩に相当する位置）には、それぞれ、肩関節４８Ｒおよび肩関節４８Ｌによって、上腕５０Ｒおよび上腕５０Ｌが設けられる。図示は省略するが、肩関節４８Ｒおよび肩関節４８Ｌは、それぞれ、直交する３軸の自由度を有する。すなわち、肩関節４８Ｒは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｒの角度を制御できる。肩関節４８Ｒの或る軸（ヨー軸）は、上腕５０Ｒの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節４８Ｌは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｌの角度を制御できる。肩関節４８Ｌの或る軸（ヨー軸）は、上腕５０Ｌの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。
【００２９】
また、上腕５０Ｒおよび上腕５０Ｌのそれぞれの先端には、肘関節５２Ｒおよび肘関節５２Ｌを介して、前腕５４Ｒおよび前腕５４Ｌが設けられる。図示は省略するが、肘関節５２Ｒおよび肘関節５２Ｌは、それぞれ１軸の自由度を有し、この軸（ピッチ軸）の軸回りにおいて前腕５４Ｒおよび前腕５４Ｌの角度を制御できる。
【００３０】
前腕５４Ｒおよび前腕５４Ｌのそれぞれの先端には、人の手に相当する球体５６Ｒおよび球体５６Ｌがそれぞれ設けられる。ただし、指や掌の機能が必要な場合には、人間の手に酷似した形状および機能を持たせた「手」を設けることも可能である。
【００３１】
また、図示は省略するが、台車３０の前面、肩関節４８Ｒと肩関節４８Ｌとを含む肩に相当する部位、上腕５０Ｒ、上腕５０Ｌ、前腕５４Ｒ、前腕５４Ｌ、球体５６Ｒおよび球体５６Ｌには、それぞれ、接触センサ５８（図３で包括的に示す）が設けられる。台車３０の前面の接触センサ５８は、台車３０への人間や他の障害物の接触を検知する。したがって、ロボット１２は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪３２の駆動を停止してロボット１２の移動を急停止させることができる。また、その他の接触センサ５８は、当該各部位に触れたかどうかを検知する。なお、接触センサ５８の設置位置は、当該部位に限定されず、適宜な位置（人の胸、腹、脇、背中および腰に相当する位置）に設けられてもよい。
【００３２】
胴体４２の中央上部（人の首に相当する位置）には首関節６０が設けられ、さらにその上には頭部６２が設けられる。図示は省略するが、首関節６０は、３軸の自由度を有し、３軸の各軸廻りに角度制御可能である。或る軸（ヨー軸）はロボット１２の真上（鉛直上向き）に向かう軸であり、他の２軸（ピッチ軸、ロール軸）は、それぞれ、それと異なる方向で直交する軸である。
【００３３】
頭部６２には、人の口に相当する位置に、スピーカ６４が設けられる。スピーカ６４は、ロボット１２が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク６６Ｒおよびマイク６６Ｌが設けられる。以下、右のマイク６６Ｒと左のマイク６６Ｌとをまとめてマイク６６ということがある。マイク６６は、周囲の音、とりわけコミュニケーションを実行する対象（以下、「コミュニケーション対象」ということある）である人間の声を取り込む。さらに、人の目に相当する位置には、眼球部６８Ｒおよび眼球部６８Ｌが設けられる。眼球部６８Ｒおよび眼球部６８Ｌは、それぞれ眼カメラ７０Ｒおよび眼カメラ７０Ｌを含む。以下、右の眼球部６８Ｒと左の眼球部６８Ｌとをまとめて眼球部６８ということがある。また、右の眼カメラ７０Ｒと左の眼カメラ７０Ｌとをまとめて眼カメラ７０ということがある。
【００３４】
眼カメラ７０は、ロボット１２に接近した人間の顔または人間の他の部分或いは物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ７０は、上述した全方位カメラ４６と同様のカメラを用いることができる。たとえば、眼カメラ７０は、眼球部６８内に固定され、眼球部６８は、眼球支持部（図示せず）を介して頭部６２内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、２軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この２軸の一方は、頭部６２の上に向かう方向の軸（ヨー軸）であり、他方は、一方の軸に直交しかつ頭部６２の正面側（顔）が向く方向に直行する方向の軸（ピッチ軸）である。眼球支持部がこの２軸の各軸廻りに回転されることによって、眼球部６８ないし眼カメラ７０の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ６４、マイク６６および眼カメラ７０の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【００３５】
このように、この実施例のロボット１２は、車輪２０の独立２軸駆動，肩関節４８の３自由度（左右で６自由度），肘関節５２の１自由度（左右で２自由度），首関節６０の３自由度および眼球支持部の２自由度（左右で４自由度）の合計１７自由度を有する。
【００３６】
図３はロボット１２の電気的な構成を示すブロック図である。この図３を参照して、ロボット１２は、ＣＰＵ８０を含む。ＣＰＵ８０は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス８２を介して、メモリ８４、モータ制御ボード８６、センサ入力／出力ボード８８および音声入力／出力ボード９０に接続される。
【００３７】
メモリ８４は、図示は省略をするが、ＲＯＭ、ＨＤＤおよびＲＡＭを含む。ＲＯＭおよびＨＤＤには、ロボット１２の行動を制御（タスクを実行）するための制御プログラム（ロボット制御プログラム）が予め記憶される。たとえば、ロボット制御プログラムは、各センサの出力（センサ情報）を検知するための検知プログラムや、他のロボット１２およびユーザの端末などの外部コンピュータとの間で必要なデータおよびコマンドを送受信するための通信プログラムなどを含む。また、ＲＡＭは、ＣＰＵ８０のワークメモリおよびバッファメモリとして用いられる。
【００３８】
さらに、この実施例では、ロボット１２は、人間とのコミュニケーションをとるために発話したり、ジェスチャしたりできるように構成されているが、メモリ８４に、このような発話およびジェスチャのための辞書（発話／ジェスチャ辞書）のデータが記憶されている。
【００３９】
モータ制御ボード８６は、たとえばＤＳＰで構成され、各腕や首関節などの各軸モータの駆動を制御する。すなわち、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、肩関節４８Ｒの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｒの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「右腕モータ９６」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、肩関節４８Ｌの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｌの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「左腕モータ９８」と示す）の回転角度を制御する。
【００４０】
さらに、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、首関節６０の直交する３軸のそれぞれの角度を制御する３つのモータ（図３では、まとめて「頭部モータ１００」と示す）の回転角度を制御する。そして、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、車輪３２を駆動する２つのモータ（図３では、まとめて「車輪モータ３６」と示す）の回転角度を制御する。
【００４１】
なお、この実施例では、車輪モータ３６を除くモータは、制御を簡素化するためにステッピングモータ（すなわち、パルスモータ）を用いる。ただし、車輪モータ３６と同様に直流モータを用いるようにしてもよい。また、ロボット１２の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更された、たとえば、他の実施例では、エアアクチュエータが適用されてもよい。
【００４２】
センサ入力／出力ボード８８は、モータ制御ボード８６と同様に、ＤＳＰで構成され、各センサからの信号を取り込んでＣＰＵ８０に与える。すなわち、赤外線距離センサ４０のそれぞれからの反射時間に関するデータがこのセンサ入力／出力ボード８８を通じてＣＰＵ８０に入力される。また、全方位カメラ４６からの映像信号が、必要に応じてセンサ入力／出力ボード８８で所定の処理を施してからＣＰＵ８０に入力される。眼カメラ７０からの映像信号も、同様にして、ＣＰＵ８０に入力される。また、上述した複数の接触センサ５８（図３では、まとめて「接触センサ５８」と示す）からの信号がセンサ入力／出力ボード８８を介してＣＰＵ８０に与えられる。
【００４３】
音声入力／出力ボード９０もまた、同様に、ＤＳＰで構成され、ＣＰＵ８０から与えられる音声合成データに従った音声または声がスピーカ６４から出力される。また、マイク６６からの音声入力が、音声入力／出力ボード９０を介してＣＰＵ８０に与えられる。
【００４４】
また、ＣＰＵ８０は、バス８２を介して通信ＬＡＮボード１０２に接続される。通信ＬＡＮボード１０２は、たとえばＤＳＰで構成され、ＣＰＵ８０から与えられた送信データを無線通信装置１０４に与え、無線通信装置１０４は送信データを、外部コンピュータに送信する。また、通信ＬＡＮボード１０２は、無線通信装置１０４を介して外部コンピュータからデータを受信し、受信したデータ（受信データ）をＣＰＵ８０に与える。
【００４５】
また、ＣＰＵ８０は、バス８２を介して、２次元距離計測装置１０６および３次元距離計測装置１０８に接続される。図２では省略したが、２次元距離計測装置１０６および３次元距離計測装置１０８は、ロボット１２の台車３０、センサ取り付けパネル３８または胴体４２の適宜の位置に取り付けられる。
【００４６】
２次元距離計測装置１０６は、水平方向にレーザーを照射し、物体（人間も含む）に反射して戻ってくるまでの時間から当該物体までの距離を計測するものである。たとえば、トランスミッタ（図示せず）から照射したレーザーを回転ミラー（図示せず）で反射させて、前方を扇状に一定角度（たとえば、０．５度）ずつスキャンする。ここで、２次元距離計測装置１０６としては、SICK社製のレーザーレンジファインダ（型式  LMS200）を用いることができる。このレーザーレンジファインダを用いた場合には、距離８mを±１５mm程度の誤差で計測可能である。
【００４７】
この実施例では、ロボット１２は、２次元距離計測装置１０６で検出された障害物までの２次元（または水平方向）の距離情報と、ロボット１２が配置される環境（たとえば、場所ないし領域）についての地図をマッチングすることで、ロボット１２自身の位置すなわちロボット１２の現在位置を推定する。ただし、より正確な現在位置を推定するために、パーティクルフィルタを用いて計算されたロボット１２のオドメトリ（移動情報）も入力として利用される。ロボット１２の現在位置を推定する手法としては、文献「D. Fox, W. Burgard and S. Thrun, Markov Localization for Mobile Robots in Dynamic Environments, Journal of Artificial Intelligence Research, vol. 11, pp. 391-427, 1999.」に開示される手法を用いることができる。ロボット１２の現在位置を推定すること自体は本願の本質的な内容ではないため、詳細な説明は省略する。
【００４８】
また、３次元距離計測装置１０８は、水平方向を基準（０°）として上下４０°（＋３０°〜−１０°）の検知角度（垂直視野角）を有する３次元全方位レーザ距離計である。この３次元距離計測装置１０８は、０．１秒に１回転して、およそ１００ｍまでの距離を計測し、ロボット１２周辺の３次元距離情報を格納した点群情報を取得することができる。ここでは、３次元距離計測装置１０８としては、Ｖｅｌｏｄｉｎｅ社製のイメージングユニットＬｉＤＡＲ（HDL-32E）（商品名）を用いることができる。
【００４９】
この実施例では、ロボット１２は、３次元距離計測装置１０８で検出された３次元の距離情報に基づいて人間を検出するとともに、当該人間の位置を計測する。具体的には、３次元距離計測装置１０８から得られる３次元の距離情報と上記の地図を用いて、ロボット１２が環境内のどの位置に存在しているか、およびどの方向を向いているかが推定される。次に、３次元距離計測装置１０８から取得した３次元の距離情報と、地図に基づく環境内の３次元の距離情報と比較し、近似する３次元の距離情報を格納した点群情報が示す点群を背景としてフィルタリングする。続いて、３次元距離計測装置１０８から取得した３次元の距離情報を格納した点群情報が示す点群のうち、閾値（Zmin, Zmax）を用いて一定の高さに存在しない点群をフィルタリングする。この実施例では、Zminが５ｃｍに設定され、Zmaxが２２０ｃｍに設定され、極端な高さの点群は、人間でないと判断し、人間の位置を計測する処理から除外される。
【００５０】
一定の高さに存在しない点群がフィルタリングされると、フィルタリング後のすべての点群に含まれる高さ情報を０に設定した２次元の点群情報が生成される。生成された２次元の点群情報は、ユークリッド距離を用いてクラスタリングされる。一例として、Point Cloud Libraryに実装されているクラスタリング手法が利用される。
【００５１】
さらに、クラスタリングされた点群情報に含まれる元々の高さ情報を利用し、高さの最大値から高さの最小値を引いた値が３０ｃｍ未満であるもの、および点群の数が閾値以下であるもの（ここでは４個と設定した）がフィルタリングされる。つまり、小さすぎる物または壁などの人間以外の物と判断されたクラスタが除去される。そして、フィルタリング後の各クラスタの重心位置が各人間の位置情報として設定される。つまり、ロボット１２の周囲に存在する人間が検出されるとともに、検出された人間の位置が計測される。ロボット１２の周囲に複数の人間が存在することが検出された場合には、ロボット１２のコミュニケーション対象の一人の人間が所定のルールに従って選択される。一例として、所定のルールは、ロボット１２からの距離が最短距離であること、または、ロボット１２のユーザが自身の端末を用いて指定したことである。ただし、ユーザからコミュニケーション対象が指定された場合には、ロボット１２からの距離に基づいて決定されたコミュニケーション対象よりも優先される。
【００５２】
なお、ロボット１２の位置を推定したり、人間の位置を計測したりするために、ロボット１２は、２次元距離計測装置１０６および３次元距離計測装置１０８を備えているが、これらの計測装置は、ロボット１２に備えずに、または、ロボット１２に備えるとともに、ロボット１２が配置される環境内に設置されてもよい。また、床センサなどの他のセンサを用いて、ロボット１２の位置を推定したり、人間の位置を計測（推定）したりしてもよい。
【００５３】
また、この実施例では、ロボット１２は、２次元距離計測装置１０６および３次元距離計測装置１０８を備えるようにしてあるが、３次元距離計測装置１０８の計測結果を用いてロボット１２自身の位置を推定することもできるため、２次元距離計測装置１０６は省略することもできる。
【００５４】
上記のようなロボット１２は、人間とのコミュニケーションに基づく行動を実行したり、当該ロボット１２のユーザの命令に従う行動を実行したりする。ロボット１２の行動すなわちタスクは、当該ロボット１２が提供するサービスについての行動である。ただし、人間とのコミュニケーションに基づく行動は、人間との会話を認識（音声認識）し、会話に含まれる人間の要求に応じた行動である。また、ユーザの命令に従う行動は、ユーザの端末から送信されたコマンドに従う行動である。
【００５５】
図１では省略したが、ユーザの端末は、直接、または、ネットワークを介して、ロボット１２と通信可能である。ただし、複数のロボット１２はそれぞれ識別可能であり、ユーザは、端末を用いて、選択した一台のロボット１２と通信する。一例として、ロボット１２に識別情報（ロボットＩＤ）を割り当てておき、ロボット１２から送信する送信データおよびロボット１２が受信する受信データ（すなわち、ユーザの端末から送信する送信データ）にロボットＩＤを付加するようにすればよい。この場合、ロボット１２は、自身のロボットＩＤを付加した送信データをユーザの端末に送信する。また、ロボット１２は、ユーザの端末から受信データを受信すると、受信データに含まれるロボットＩＤを検出して、ロボット１２自身への受信データ（またはコマンド）であるかどうかを判断する。
【００５６】
なお、ロボット１２がユーザの端末に送信する送信データは、ユーザの端末からのコマンドに従うタスクの実行を終了したことの通知などのデータである。
【００５７】
図１を用いて説明したように、複数のロボット１２が同じ環境（場所または領域）に配置されるため、各ロボット１２が移動する場合には、ロボット１２同士の衝突を避ける必要がある。
【００５８】
したがって、ロボット１２が移動する経路（以下、「移動経路」という）を算出する場合に、少なくとも他のロボット１２と同時に同じ位置（空間）に存在しないように調整する必要がある。この調整のために、一般的には、各ロボット１２の移動経路を算出する中央制御装置が設けられる。中央制御装置は、複数のロボット１２が配置される環境の地図情報を記憶し、各ロボット１２とネットワークを介して通信可能に接続され、各ロボット１２の現在位置および各ロボット１２の移動の目的地を把握し、ロボット１２からの移動経路の生成要求に応じて、他のロボット１２との衝突を避けるように移動経路を生成する。
【００５９】
しかし、このような中央制御装置を設けた場合には、設置および管理の費用がかかり、また、ロボット１２の数が増えるに従って中央制御装置の処理負荷が増大する。このため、効率的にロボット１２間の移動計画を調整するのが困難である。
【００６０】
これを回避するため、この実施例では、別々のタスクを実行している複数のロボット１２間における移動の調整を分散的に実現するようにしてある。つまり、複数のロボット１２がタスクを実行する場合に、効率的にロボット１２間の移動計画を調整するようにしてある。
【００６１】
日常空間においては、この実施例のロボット１２は、道案内、誘導、運搬などの様々なタスク（行動）を実行する。この場合、複数のロボット１２のうち、近距離にいるロボット１２間で、ロボット１２同士の衝突が発生しないように、移動計画が決定（算出）される。ただし、この明細書において、ロボット１２の行動は、単に、ロボット１２が目的地に移動することを含む。また、この実施例では、近距離は、ロボット１２の現在位置（２次元平面上の位置）を中心とする所定範囲（たとえば、半径１０ｍの円）である。
【００６２】
ここで、ロボット１２同士の衝突が発生する場合には、空間リソースの競合が発生していると言える。したがって、ロボット１２同士が衝突しないように移動するための移動経路を計画することは、空間リソースの競合の解決プロセスとみなすことができる。
【００６３】
また、この実施例では、大量のルールをロボット１２の行動に記述するのではなく、ロボット１２同士が同じ空間を占有したい状況が発生した場合に、優先度の低いタスクを実行する方が自身の利益の最大化を行うのではなく、むしろ自分の利益を差し引き、より優先度の高いタスクを実行する方の利益に寄与する行動を選択するように、ロボット１２が実行可能な形で定式化し、空間リソースの競合を回避するようにしてある。つまり、一連の空間の譲り合いは、ロボット１２同士の間における相互利益を最大化する、ロボット１２同士の振る舞いとして表現される。
【００６４】
ロボット１２自身（着目するロボット１２）をエージェントｉとし、所定範囲内に存在する他のロボット１２をエージェントｊとした場合に、空間の譲り合いというエージェントｉおよびエージェントｊが協調および／または連携する行動は、エージェントｉとエージェントｊの間における空間リソースの競合の解決プロセスとみなすことができる。エージェントｉが、合理的な振る舞いを行うとすれば、エージェントｉにおける行動の選択は、自身の利益最大化として表現される。具体的には、数１で表現することができる。
【００６５】
［数１］
2020021351.tif 000003
【００６６】
また、ｐは、エージェントｉが取り得る移動計画を示し、Ｕｉ（ｐ）は、移動計画ｐを選択したときにエージェントｉが得る利益を示す。この明細書において、利益とは、タスクの目的を達成する度合を意味する。この実施例では、タスクの目的を達成する度合が高い程、利益が大きい。したがって、移動するエージェントｉでは、目的地に早く到達できるほど利益が大きい。また、Ｐはエージェントｉが取り得る全ての移動計画の集合である。これらのことは、エージェントｊについても同様である。
【００６７】
仮に、エージェントｉのみが存在する場合には、数１によって、エージェントｉの目的を達成する最適な移動計画が算出（または決定）される。ただし、エージェントｉおよびエージェントｊが存在する場合には、お互いの利益間に競合が生じると、数１を同時に満足する解は存在しなくなってしまう。この場合、エージェントｉとエージェントｊの間で移動の調整が必要である。
【００６８】
このため、この実施例では、タスク（行動）毎に優先度を予め決定しておき、優先度の高低で利益間の競合を回避するようにしてある。また、この実施例では、空間リソースの競合または利益競合の解決方法を、相互利益を最大化する行動の選択として、数２のように定式化した。
【００６９】
［数２］
2020021351.tif 000004
【００７０】
ここで、αは、エージェントｉが実行するタスクの優位性についての係数であり、係数αの値は０から１の間で設定される。数２からも明らかなように、係数αが１に近づけば、エージェントｊは、よりエージェントｊの利益を差し引き、エージェントｉの利益を最大化するための行動（この実施例では、迂回または待機（停止））が選択される。
【００７１】
なお、この実施例では、簡単のため、エージェントの数が２である場合について説明するが、エージェントの数が３以上である場合には、エージェントｉの移動計画ｐは数３に従って算出される。ただし、αｉ＋αｊ＋αｋ＋ … ＝１である。また、係数αｉ、αｊ、αｋ、…の値は、各エージェントｉ、ｊ、ｋ、…が実行するタスクに割り当てられた優先度を、各エージェントｉ、ｊ、ｋ、…が実行するタスクに割り当てられた優先度を加算した値（合計値）で割ることにより決定される。
【００７２】
［数３］
2020021351.tif 000005
【００７３】
ここで、上述したのように、各ロボット１２は、自律行動し、道案内、誘導、運搬などの様々なタスクを実行（またはサービスを提供）する。道案内とは、たとえば、目的地までの経路が分からない、つまり道に迷った人間を目的地まで案内することを意味する。また、誘導とは、たとえば、環境内の或る場所（目的地）まで人間を誘導すること意味する。運搬とは、たとえば、人間の依頼によって荷物を目的地まで運搬することを意味する。ただし、ロボット１２が提供するこれらのサービスは単なる一例であり、移動を伴うサービスであれば、その具体的態様は限定されない。
なお、道案内および誘導についてのタスクを実行するロボットの詳細については、本願の出願人が先に出願し、既に公開された特開２００７−２６０８２２号および特開２０１１−６５６号に開示されており、本願発明の本質的な内容とは異なるため、ここでは詳細な説明は省略する。
【００７４】
また、運搬のサービスは、「速達運搬」と、「通常運搬」の２種類に分類される。「速達運搬」は、目的地に速達郵便のような急ぎの書類を運搬するサービスである。また、「通常運搬」は、目的地に小包のような荷物を単に運搬するサービスである。
【００７５】
各タスクには、優先度が予め設定されている。一例として、優先度は、サービスの緊急度に応じて設定される。他の例では、優先度は、ロボット１２が配置される環境におけるサービスの提供のし易さに応じて設定される。これらの両方およびさらに他の条件（理由）を加味して優先度が設定されてもよい。この実施例では、優先度は０から１０までの整数で表わされ、数値が大きいほど優先度が高い。ただし、優先度の数値は一例であり、限定されるべきではなく、ロボット１２が配置される環境、同じ環境に配置されるロボット１２の数などの状況に応じて適宜変更されてよい。
【００７６】
図４は、優先度についてのテーブル（以下、「優先度テーブル」という）の一例を示す。ロボット１２は、図４に示すような優先度テーブルのデータを記憶しており、経路計画を作成する場合には、この優先度テーブルを参照して、係数αを算出する。
【００７７】
図４の優先度テーブルに示すように、各タスクには、識別情報（タスクＩＤ）が割り当てられており、タスクＩＤに対応して、タスク名および優先度が記述される。図４に示す例では、タスクＩＤ「AAAA」に対応して、タスク名「道案内」が記述され、優先度「5」が設定される。説明は省略するが、他のタスクについても同様である。したがって、タスクＩＤが分ければ、ロボット１２が実行中のタスクおよびその優先度を知ることができる。
【００７８】
なお、図４に示す優先度テーブルは単なる例示であり、限定されるべきでない。たとえば、ロボットＩＤは、人間が解読できない記号が用いられてもよい。
【００７９】
ただし、この実施例では、少なくとも所定範囲内に存在する複数のロボット１２は互いに行動情報を送受信（交換）する。ここで、行動情報は、ロボット１２の現在位置、ロボット１２が実行中のタスクの情報（タスク情報）、ロボット１２が実行中のタスクについての利益Uを算出するための関数（以下、「利益関数」という）およびロボット１２の目的地の情報を意味する。現在位置および目的地は、２次元座標である。ただし、タスク情報は、タスク情報は、タスクの識別情報および実行中のタスクにおける移動の目的地の情報を含む。また、ロボット１２が配置される環境に対応する地図には、所定の位置を原点とした２次元座標系が設定されており、環境内の目印（柱、扉、部屋、交差点、鑑賞物、展示品など）の配置位置の２次元座標も事前に登録されている。
【００８０】
なお、ロボット１２は、自身の現在位置と、受信した他のロボット１２の行動情報に含まれる他のロボット１２の現在位置の距離を算出し、所定距離（この実施例では、１０ｍ）を超える場合には、当該他のロボット１２は所定範囲内に存在しないため、受信した他のロボット１２の行動情報を削除する。  環境内を移動するロボット１２（エージェントｉ）と他のロボット１２（エージェントｊ）が狭い幅の通路を挟んだ位置に存在し、エージェントｉとエージェントｊが逆向きに通路を通り抜けたい場合には、同時に通路を移動すると、すれ違うことができないため、立ち往生してしまう。ここでは、エージェントｉが「速達運搬」のタスクを実行中であり、エージェントｊが「通常運搬」のタスクを実行中であると仮定する。
【００８１】
この場合、タスクの優先度に応じて、たとえば、優先度の低いタスクを実行しているエージェントｊは、優先度の高いタスクを実行しているエージェントｉが狭い幅の通路を通り抜けるのを待機し、エージェントｉが狭い幅の通路を通り抜けると、狭い幅の通路に侵入し、当該通路を通り抜ける。
【００８２】
図５（Ａ）は、エージェントｉ（着目するロボット１２）とエージェント（他のロボット１２）が狭い幅の通路を挟んだ位置に存在する様子の概略を真上方向から見た概略図である。図５（Ａ）において（図５（Ｂ）、図６（Ａ）、図６（Ｂ）および図９（Ａ）も同じ）、エージェントｉ（着目するロボット１２）とエージェント（他のロボット１２）の頭部を丸で示し、頭部に記載した目の付いている方が前方（図９（Ａ）の（６）で示す方向）であり、その反対方向が後方（図９（Ａ）の（４）で示す方向）である。ここでは、壁で挟まれた狭い幅の通路を、エージェントｉが一方から他方に通り抜けたい状況であり、エージェントｊが他方から一方に通り抜けたい状況である。ただし、狭い幅の通路は、エージェントｉとエージェントｊがすれ違うことができないため、同時に通り抜けようとした場合、立ち往生が発生する。
【００８３】
上記のとおり、エージェントｉが実行するタスクの優先度が、エージェントｊが実行するタスクの優先度よりも高い場合には、先に、エージェントｉが狭い幅の通路を通り抜けて、その後、エージェントｊがその通路を通り抜けることにより、タスクの優先度を考慮したロボット１２の移動を実行（実現）することができる。つまり、空間の譲り合いが実現される。
【００８４】
具体的には、図５（Ｂ）および図６（Ａ）に示すように、エージェントｉが狭い幅の通路を移動し、さらに、狭い幅の通路を通り抜けるまで、エージェントｊは停止して、エージェントｉが通路を通り抜けるのを待機する。そして、図６（Ａ）および図６（Ｂ）に示すように、エージェントｉが狭い幅の通路を通り抜けると、エージェントｊはエージェントｉとは逆向きに狭い幅の通路を移動し、通り抜ける。
【００８５】
このように、特別な制約または条件が存在しない場合には、エージェントｉは、遠回りせずに目的地に向けて、適切な移動速度で移動する。この行動は、（１）移動によって、より目的地に近付くほど利益が高く、（２）適切な速度で移動できる程利益が高いという２つの要素に分類することができる。
【００８６】
これらの要素を利用した移動を伴う行動についてのタスクに関する利益関数は数３で示される。ただし、上記の「道案内」、「誘導」、「速達運搬」および「普通運搬」の各行動には、「移動」が含まれる。また、数３をまとめると、数４となる。ただし、数３および数４において、Uは利益であり、tは経路計画で使用する予測時間であり、posはt秒後の予測位置であり、posnowは現在位置であり、Gは目的地であり、Distは距離（または差分）であり、ｘは移動距離であり、vprefは適切な速度を意味する。この実施例では、移動のタスクを実行する場合には、１０秒（後述する予測時間t）分の予測を実施する。また、エージェントｉの経路計画を算出する場合には、エージェントｉとエージェントｊのそれぞれの利益Uが時間間隔Δt毎(たとえば、０．５秒毎)に、数４に従って算出される。
【００８７】
この明細書においては、「経路計画」は、予測時間ｔ分について予測されるエージェントｉの移動経路（以下、「予測時間ｔ分の移動経路」ということがある）を意味し、「移動計画」は、時間間隔Δt後に予測されるエージェントｉの位置を意味する。
【００８８】
適切な速度vprefは、エージェントｉまたはエージェントｊが移動するときに望ましい移動速度を意味し、行動（またはタスク）に応じて設定される。緊急性の無い行動であれば、通常の移動速度が適切な速度vprefとして設定される。通常の移動速度は、成人が歩く速度の平均値であり、エージェントｉまたはエージェントｊは、減速距離を考慮して、その平均値よりも少し低く設定される。緊急性の高い行動であれば、通常の移動速度よりも早い速度が適切な速度vprefとして設定される。最徐行する必要のある行動であれば、通常の移動速度よりも遅い速度が適切な速度vprefとして設定される。たとえば、エージェントｉおよびエージェントｊのそれぞれについて、高、中（通常の移動速度）、低の３段階の速度が予め想定されており、行動に応じて、適切な速度vprefが設定される。以下、この明細書において同じである。
【００８９】
［数３］
U(G, t, pos)=f(Dist(posnow, G)-Dist(pos, G))
ただし、f(d)=-|d-vpref*t|である。
【００９０】
［数４］
U(G, t, pos)=-|(Dist(posnow, G)-Dist(pos, G))-vpref*t|
この実施例では、利益Uの最大値は０になるように調整されている。数３において、(Dist(posnow, G)-Dist(pos, G))は、目的地Gへの近接項であり、現在位置posnowから、t秒後の位置posが目的地Gに近い程、大きい値となり、大きい値程、利益Uが大きくなる。
【００９１】
また、数３において、f(d)=-|d-vpref*t|は、ロボット１２の移動制約項を示し、t秒の間に、望ましい速度vprefで移動できるときに最大値（すなわち、f(d)=0）となり、望ましい速度vprefからずれるに従ってf(d)の値は小さくなる。
【００９２】
目的地Gへの近接項とエージェントｉの移動制約項を組み合わせることで、目的地Gに近づきつつ、望ましい速度vprefでエージェントｉが移動されるように、利益Uが最大化されるように設計されている。
【００９３】
なお、図示は省略するが、エージェントｊの優先度がエージェントｉの優先度よりも高い場合には、たとえば、エージェントｊが先に狭い幅の通路を通り抜け、その後、エージェントｉが狭い幅の通路を通り抜ける。
【００９４】
また、この実施例では、各行動（タスク）は移動を伴うため、利益Uを算出するための利益関数は同じにしてあるが、限定される必要はない。たとえば、複数の人間を誘導する場合には、比較的幅の広い通路を移動した方が良いと考えられるため、見通しの条項を利益関数に加えても良いと考えられる。
【００９５】
図７は、或る展示会場に複数の展示物が配置されている様子を真上方向から見た概略図である。図７を参照して、エージェントｉとエージェントｊが空間を譲り合う他の例について説明する。ただし、ここでは、エージェントｉは鑑賞者である人間を誘導するタスクを実行し、エージェントｊは鑑賞者である人間を道案内するタスクを実行するものとする。この場合、図４に示したように、エージェントｉが実行するタスクの優先度がエージェントｊが実行するタスクの優先度よりも高い。
【００９６】
なお、図７では、簡単のため、誘導または道案内される人間については図示を省略してある。
【００９７】
図７に示すように、展示会場には、６つの展示物Ａ、展示物Ｂ、展示物Ｃ、展示物Ｄ、展示物Ｅおよび展示物Ｆがそれぞれ壁面の前に展示されている。エージェントｉは、展示物Ｅおよび展示物Ｆの前方の位置から展示物Ｂに人間を誘導するタスクを実行し、エージェントｊは展示物Ｄの前に居る人間を展示物Ａまで道案内するタスクを実行する。この場合、実線の矢印で示すように、エージェントｉおよびエージェントｊがそれぞれの目的地である展示物Ｂおよび展示物Ａに向けて直線的に移動すると、バツ印で示す位置でエージェントｉとエージェントｊが衝突してしまう。つまり、空間リソースが競合する。
【００９８】
この場合、たとえば、エージェントｉが実行するタスクの優先度よりも低い優先度のタスクを実行するエージェントｊは、点線の矢印で示すように、迂回する。ただし、点線の矢印で示す移動経路は例示であり、実際の移動経路は、経路計画を算出し、算出した結果に従ってロボット１２（ここでは、エージェントｊ）が移動することにより決定される。
【００９９】
図８はロボット１２の経路計画を作成する方法を説明するための図である。また、図９（Ａ）はロボット１２の移動方向を示す図であり、図９（Ｂ）は移動候補点を説明するための図である。
【０１００】
なお、図８では、エージェントｉとエージェントｊが一列に並び、その前方に目的地としての展示物が配置されている場合について示してある。このような状態は、ロボット１２の経路計画を作成する方法を説明するための単なる例示である。
【０１０１】
着目するロボット１２（エージェントｉ）の経路計画を作成する、すなわち予測時間ｔ分の移動経路を算出する場合には、エージェントｉの現在位置（以下、「自己位置」ということがある）を推定するとともに、他のロボット１２（エージェントｊ）の現在位置を検出（または取得）し、現在位置からΔt秒後の位置（以下、「移動候補点」）に移動したと仮定した場合におけるエージェントｉの利益とエージェントｊの利益をそれぞれ算出し、各利益に優先度に基づいて算出した係数αを掛けて、相互利益を算出する。ただし、図８では、エージェントｊについての係数αｊは、１からエージェントｉについての係数αｉを減算した値で示してある。また、係数αｉは、エージェントｉが実行中のタスクの優先度を、エージェントｉが実行中のタスクの優先度とエージェントｊが実行中のタスクの優先度の和で割った数値である。同様の方法で、係数αｊについても算出してもよい。
【０１０２】
図９（Ａ）に示すように、Δt秒後のエージェントｉおよびエージェントｊの位置は（１）−（９）で示す方向における位置である。この実施例では、予測時間ｔ分の移動経路を算出する場合には、エージェントｉおよびエージェントｊが存在する環境についての地図が所定長さ（たとえば、０．４ｍまたは０．５ｍ）のグリッド状に分解され、エージェントｉおよびエージェントｊがグリッド単位で移動されるように、時間間隔Δt分移動した位置すなわち移動候補点が決定される。ただし、上記の所定長さは、エージェントｉおよびエージェントｊが、それぞれ、適切な速度vprefでΔt秒間移動した場合に移動可能な距離に決定される。
【０１０３】
図９（Ｂ）に示すように、上記の（１）−（９）で示す移動方向における移動候補点は、９つの升目の各々の中心位置である。つまり、現在の移動方向（正面方向）を基準に、前後左右および斜め方向に移動した場合の位置に対応する８つの移動候補点に、中央の升目の中心位置（現在位置）に対応する１つの移動候補点が追加される。ただし、（５）で示す中央の升目の中心位置は、エージェントｉおよびエージェントｊが移動しない（静止している）場合の位置である。
【０１０４】
図８に戻って、相互利益は、エージェントｉが複数（この実施例では、９つ）の移動候補点（Δt秒後の位置）の各々に移動した場合（「第１移動計画を選択した場合」に相当する）における各利益と、エージェントｊが複数（この実施例では、９つ）の移動候補点の各々に移動した場合（「第２移動計画を選択した場合」に相当する）における各利益の全ての組み合わせについて、それぞれ算出される。つまり、エージェントｉの複数の移動候補点と、エージェントｊの複数の移動候補点のすべての組み合わせ（９×９＝８１）について、相互利益が算出される。
【０１０５】
ただし、図８に示す例では、エージェントｉとエージェントｊの前方に目的地となる展示物が配置されているものとする。また、移動前のエージェントｉとエージェントｊを実線で示し、移動後のエージェントｉとエージェントｊを点線で示す。なお、エージェントｉまたはエージェントｊは移動しない（すなわち待機する）場合もある。
【０１０６】
算出された全ての相互利益から最大の相互利益の組み合わせが選択され、選択された組み合わせのエージェントｉの移動候補点がΔt秒後のエージェントｉの位置として記憶される。ただし、エージェントｉとエージェントｊが衝突する場合の組み合せについては、最大の相互利益の組み合わせを選択する前に選択の候補（または選択肢）から除外される。この実施例では、エージェントｉとエージェントｊの距離が所定距離（たとえば、１ｍ）以下である場合に、これらが衝突すると判断するようにしてある。
【０１０７】
また、最大の相互利益の組み合わせが選択されると、選択された組み合わせにおけるΔt秒後のエージェントｉの位置とエージェントｊの位置を基準として、さらにΔt秒後（つまり、２×Δt秒後）にエージェントｉが複数の移動候補点の各々に移動した場合の各利益と、２×Δt秒後にエージェントｊが複数の移動候補点の各々に移動した場合の各利益との全ての組み合わせについて、それぞれ相互利益が算出される。つまり、前の回で選択されたエージェントｉの位置とエージェントｊの位置をそれぞれ現在位置として、Δt秒後の移動候補点がエージェントｉおよびエージェントｊのそれぞれについて算出される。
【０１０８】
なお、図８に示す例では、Δt秒後および２×Δt秒後のいずれの場合にも中段に記載された移動候補点の組み合わせについての相互利益が最大である。
【０１０９】
このようにして、エージェントｉとエージェントｊのΔt秒毎の位置（移動候補点）が予測時間t分選択または決定される。つまり、予測時間t分のエージェントｉの移動経路すなわち経路計画が算出される。予測時間tは、実行されるタスクに応じて予め決定されており、たとえば、ロボット１２が任意の目的地Gまで移動するタスクを実行する場合には、ロボット１２は移動するエージェントｉであり、この場合には、予測時間tは１０秒である。
【０１１０】
ただし、実際にロボット１２を移動させている場合に、人間または障害物に衝突する可能性がある場合には、ロボット１２は移動を停止する。ロボット１２は、自身の位置を算出する場合に、２次元距離計測装置１０６の出力に基づいて周囲に存在する人間または障害物との距離を計測しているため、人間または障害物に衝突する可能性があることを知ることができる。
【０１１１】
なお、上記のように作成される経路計画では、何度も同じ場所を通る冗長な経路計画が作成されてしまうことがある。冗長な経路計画が作成された場合には、利益の総和が減少せず、かつエージェントｉとエージェントｊが衝突しない範囲で、冗長部分が削除される。
【０１１２】
詳細な説明は省略するが、エージェントｊの数が２である場合には、エージェントｉの複数の移動候補点と、一方のエージェントｊ１の複数の移動候補点と、他方のエージェントｊ２の複数の移動候補点のすべての組み合わせ（９×９×９＝７２９）について、相互利益が算出される。この場合には、相互利益が最大となる組み合わせが選択され、選択された組み合わせのエージェントｉの移動候補点がΔt秒後のエージェントｉの位置として記憶される。
【０１１３】
また、最大の相互利益の組み合わせが選択されると、選択された組み合わせにおけるΔt秒後のエージェントｉの位置とエージェントｊ１の位置とエージェントｊ２の位置を基準として、さらにΔt秒後（つまり、２×Δt秒後）にエージェントｉが複数の移動候補点の各々に移動した場合の各利益と、２×Δt秒後にエージェントｊ１が複数の移動候補点の各々に移動した場合の各利益と、２×Δt秒後にエージェントｊ２が複数の移動候補点の各々に移動した場合の各利益の全ての組み合わせについて、それぞれ相互利益が算出される。つまり、前の回で選択されたエージェントｉの位置とエージェントｊ１の位置とエージェントｊ２の位置をそれぞれ現在位置として、Δt秒後の移動候補点がエージェントｉとエージェントｊ１とエージェントｊ２のそれぞれについて算出される。
【０１１４】
なお、説明は省略するが、エージェントｊの数が３以上の場合も、エージェントｊの数が２の場合と同様にして、エージェントｉの経路計画が算出される。
【０１１５】
図１０は図３に示したメモリ８４（ＲＡＭ）のメモリマップ５００を示す図である。図１０に示すように、メモリ８４は、プログラム記憶領域５０２およびデータ記憶領域５０４を含む。プログラム記憶領域５０２は、ロボット制御プログラムを記憶する。ロボット制御プログラムは、自己位置推定プログラム５０２ａ、通信プログラム５０２ｂ、係数算出プログラム５０２ｃ、移動候補点算出プログラム５０２ｄ、相互利益算出プログラム５０２ｅ、経路計画作成プログラム５０２ｆおよび行動制御プログラム５０２ｇを含む。
【０１１６】
なお、ロボット制御プログラムは、ロボット１２が起動されたときに、ＨＤＤから読み出され、ＲＡＭに記憶される。
【０１１７】
自己位置推定プログラム５０２ａは、２次元距離計測装置１０６の出力と地図データ５０４ａに基づいて、ロボット１２自身の位置すなわち自己位置を推定（または検出）するためのプログラムである。通信プログラム５０２ｂは、他のロボット１２およびユーザの端末などの外部コンピュータと無線通信するためのプログラムである。
【０１１８】
係数算出プログラム５０２ｃは、ロボット１２自身（エージェントｉ）が実行中のタスクの優先度と、所定範囲内に存在する他のロボット１２（エージェントｊ）が実行中のタスクの優先度から係数αを算出するためのプログラムである。移動候補点算出プログラム５０２ｄは、エージェントｉのΔt秒後の複数の移動候補点とのエージェントｊのΔt秒後の複数の移動候補点を、それぞれ算出するためのプログラムである。ただし、移動候補点は、エージェントｉが、基準位置からΔt秒分移動した場合の位置である。また、基準位置の初期値は、エージェントｉの現在位置であり、時間間隔Δt秒毎に更新される。これらのことは、エージェントｊについても同様である。
【０１１９】
相互利益算出プログラム５０２ｅは、エージェントｉが複数の移動候補点に移動した場合の各利益と、エージェントｊが複数の移動候補点に移動した場合の各利益に基づいて、エージェントｉの複数の移動候補点とエージェントｊの複数の移動候補点の各組み合わせについての相互利益をそれぞれ算出するためのプログラムである。ただし、利益関数は、ＨＤＤに予め記憶されており、実行中のタスクに応じて決定される。
【０１２０】
経路計画作成プログラム５０２ｆは、移動候補点算出プログラム５０２ｄおよび相互利益算出プログラム５０２ｅを予測時間t分繰り返し実行し、各回において、相互利益算出プログラム５０２ｅに従って算出される複数の相互利益から最大の相互利益を選択し、選択した相互利益を有する組におけるエージェントｉおよびエージェントｊの移動候補点をそれぞれ記憶して、ロボット１２の経路計画を作成するためのプログラムである。ただし、上述したように、冗長な経路計画が作成されないために、エージェントｉの移動候補点とエージェントｊの移動候補点の組み合わせと同じ組み合わせについては、選択肢から除外される。また、上述したように、最大の相互利益を選択する前に、エージェントｉとエージェントｊが衝突する場合の移動候補点の組み合わせについては選択肢から除外される。
【０１２１】
行動制御プログラム５０２ｇは、人間とのコミュニケーションに基づくタスクを実行したり、ユーザの命令に従うタスクを実行するためのプログラムであって、ロボット１２自身（エージェントｉ）の行動を制御する。ただし、上述したように、タスクを実行する場合、ロボット１２は、作成した経路計画に従って移動する。
【０１２２】
図示は省略するが、プログラム記憶領域５０２には、センサ情報を検知するための検知プログラム、３次元距離計測装置１０８の出力に基づいて、ロボット１２の周囲に存在する人間を検出するとともに、検出した人間の位置を検出するための人間位置検出プログラム、コミュニケーション対象の人間の音声を認識するための音声認識プログラム、およびコミュニケーション対象の人間に音声を出力するための音声出力プログラムなどの他のプログラムも記憶される。
【０１２３】
また、データ記憶領域５０４には、地図データ５０４ａ、優先度テーブルデータ５０４ｂ、係数データ５０４ｃ、第１行動情報データ５０４ｄ、第２行動情報データ５０４ｅ、相互利益データ５０４ｆおよび経路計画データ５０４ｇが記憶される。
【０１２４】
地図データ５０４ａは、ロボット１２が配置される環境を上方から見た２次元の地図についてのデータである。上述したように、地図には、所定の位置を原点とする２次元座標が割り当てられており、平面上の位置は座標で表される。また、地図には、通路、壁、柱および固定的に配置されている障害物（たとえば、消火器、ごみ箱など）が記載される。さらに、展示物（Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆなど）が配置された環境においては、展示物も地図に記載される。障害物および展示物の位置（２次元座標）は予め知ることができる。
【０１２５】
なお、ユーザの端末は、地図データ５０４ａと同じまたは同等の地図データを記憶しており、または、参照可能であり、ユーザは、端末を介してこの地図データに対応する地図を参照し、ロボット１２の目的地Gを指定したり、コミュニケーション対象として選択する人間が存在する位置を指定したりする。
【０１２６】
優先度テーブルデータ５０４ｂは、図４に示したような優先度テーブルについてのデータであり、予め設定される。係数データ５０４ｃは、係数算出プログラム５０２ｃに従って算出された係数αについての数値データである。
【０１２７】
第１行動情報データ５０４ｄは、ロボット１２自身（エージェントｉ）の行動情報についてのデータである。第２行動情報データ５０４ｅは、エージェントｉの所定範囲内に存在する他のロボット１２（エージェントｊ）の行動情報についてのデータである。
【０１２８】
なお、エージェントｊの数が２以上の場合には、各エージェントｊについての行動情報が識別可能に記憶される。
【０１２９】
相互利益データ５０４ｆは、相互利益算出プログラム５０２ｅに従って算出される複数の相互利益についてのデータである。上述したように、移動候補点算出プログラム５０２ｄおよび相互利益算出プログラム５０２ｅは、予測時間t分繰り返し実行されるため、相互利益データ５０４ｆは各回で更新される。
【０１３０】
経路計画データ５０４ｇは、Δt秒毎に（各回で）相互利益が最大となるエージェントｉの位置（移動候補点）を、予測時間t分時系列に従って並べた移動経路すなわち経路計画についてのデータである。この経路計画データ５０４ｇは、後述する展開済みの移動計画リストLcloseに含まれるエージェントｉの移動予測軌跡P.Piのデータに相当する。
【０１３１】
図示は省略するが、データ記憶領域５０４には、他のデータが記憶されたり、フラグおよび／またはタイマ（カウンタ）が設けられたりする。
【０１３２】
図１１および図１２は、図３に示したＣＰＵ８０のロボット制御処理を示すフロー図である。図１１に示すように、ＣＰＵ８０は、ロボット制御処理を開始すると、ステップＳ１で、終了かどうかを判断する。ここでは、ＣＰＵ８０は、ユーザの端末から停止コマンドを受信したかどうかを判断する。ステップＳ１で“ＹＥＳ”であれば、つまり、終了であれば、ロボット制御処理を終了する。
【０１３３】
一方、ステップＳ１で“ＮＯ”であれば、つまり、終了でなければ、ステップＳ３で、自己位置を推定（検出）し、ステップＳ５で、第１行動情報を送信し、ステップＳ７で、第２行動情報を受信し、ステップＳ９に進む。
【０１３４】
ただし、ステップＳ３では、第１行動情報データ５０４ｄにおけるロボット１２自身の現在位置の位置情報が更新される。また、ステップＳ５では、ＣＰＵ８０は、通信ＬＡＮボード１０２および無線通信装置１０４を介して、第１行動情報データ５０４ｄをブロードキャスト（送信）する（後述するステップＳ２１も同様である）。なお、ステップＳ５では、行動の内容が決定されていないため、行動情報には、タスク情報および利益関数は含まれない。さらに、ステップＳ７では、ＣＰＵ８０は、無線通信装置１０４を介して他のロボット１２から受信した受信データとしての第２行動情報データ５０４ｅを、通信ＬＡＮボード１０２から取得する（後述するステップＳ２３も同様である）。
【０１３５】
なお、図示は省略するが、人間とコミュニケーションしていない場合またはユーザの端末から何らコマンドを受信していない場合には、ロボット１２は停止していても良く、また、自由に移動しても良い。
【０１３６】
ステップＳ９では、行動の内容が決定されたかどうかを判断する。つまり、ＣＰＵ８０は、人間とのコミュニケーションに基づいて行動（タスク）を決定したり、ユーザの端末からタスクの実行を指示するコマンドを受信したりしたかどうかを判断する。ただし、ユーザは、端末を用いてコマンドを入力するともに、目的地Gを指定する。
【０１３７】
ステップＳ９で“ＮＯ”であれば、つまり、行動の内容が決定されていなければ、ステップＳ１に戻る。一方、ステップＳ９で“ＹＥＳ”であれば、つまり、行動の内容が決定されれば、ステップＳ１１、係数αを算出する。つまり、ＣＰＵ８０は、優先度テーブルデータ５０４ｂを参照して、実行する（実行中）のタスクに対応する優先度を取得し、第２行動情報データ５０４ｅに含まれるタスクＩＤが示すタスクに対応する優先度を取得し、係数αを算出する。このとき、算出された係数αの数値データすなわち係数データ５０４ｃがデータ記憶領域５０４に記憶される。
【０１３８】
続くステップＳ１３では、後述する経路計画の作成処理（図１３および図１４参照）を実行して、図１２に示すステップＳ１５で、行動を開始する。ロボット１２は、ロボット制御処理と並行して、ステップＳ９において、決定された行動すなわちタスクを実行することにより、移動を含む行動を実行し、移動するときに、作成した経路計画に従って（後述する、展開済みの移動計画リストLcloseに含まれるエージェントｉの移動予測軌跡P.Piを参照して）移動する。
【０１３９】
次のステップＳ１７では、行動を完了したかどうかを判断する。つまり、ＣＰＵ８０は、タスクの実行を終了したかどうかを判断する。ステップＳ１７で“ＹＥＳ”であれば、つまり、行動を完了すれば、図１１に示したステップＳ１に戻る。
【０１４０】
一方、ステップＳ１７で“ＮＯ”であれば、つまり、行動を完了していなければ、ステップＳ１９で、自己位置を推定し、ステップＳ２１で、第１行動情報を送信し、ステップＳ２３で、第２行動情報を受信し、ステップＳ２５で、他のロボット１２（エージェントｊ）の行動が変化したかどうかを判断する。つまり、ＣＰＵ８０は、ステップＳ２３で受信した第２行動情報データ５０４ｅに含まれるタスクＩＤが変化したかどうかを判断する。
【０１４１】
ステップＳ２５で“ＮＯ”であれば、つまり、他のロボット１２の行動が変化していなければ、ステップＳ２９に進む。一方、ステップＳ２５で“ＹＥＳ”であれば、ステップＳ２７で、係数αを算出し、ステップＳ２９に進む。つまり、ステップＳ２７では、エージェントｊの行動の変化に応じて、係数αが再計算される。ステップＳ２９では、経路計画の作成処理を実行し、ステップＳ１７に戻る。
【０１４２】
図１３、図１４および図１５は、図１１のステップＳ１３および図１２のステップＳ２９に示した経路計画の作成処理を示すフロー図である。図１３に示すように、ＣＰＵ８０は、経路計画の作成処理を開始すると、ステップＳ５１で、展開済みの移動計画リストLcloseと、展開前の移動計画リストLopenを初期化する。次のステップＳ５３では、初期移動計画P0を作成する。
【０１４３】
ここで、移動計画Pは、時間間隔Δtの累積値P.t、エージェントｉの移動予測軌跡P.Pi、エージェントｊの移動予測軌跡P.Pjおよび累積値P.tにおける利益P.Uを含む。
【０１４４】
また、上記の初期移動計画P0は、移動計画Pの初期値である。したがって、初期移動計画P0では、累積値P.t＝０であり、エージェントｉの移動予測軌跡P.Piはエージェントｉの現在位置のみであり、エージェントｊの移動予測軌跡P.Pjはエージェントｊの現在位置のみであり、利益P.Uは、エージェントｉの現在位置とエージェントｊの現在位置に基づいて算出される。ただし、エージェントｉの移動予測軌跡P.Piは、時間間隔Δt毎のエージェントｉの位置を時系列順に並べた集合（またはリスト）である。また、エージェントｊの移動予測軌跡P.Pjは、時間間隔Δt毎のエージェントｊの位置を時系列順に並べた集合（またはリスト）である。
【０１４５】
次に、ステップＳ５５で、初期移動計画を展開前の移動計画リストLopenの先頭に追加し、ステップＳ５７で、展開前の移動計画リストLopenの先頭にある移動計画Pを取り出し、展開済みの移動計画リストLcloseに追加した後に、ステップＳ５９で、取り出した移動計画Pを、展開前の移動計画リストLopenから削除する。
【０１４６】
図１４に示すように、続くステップＳ６１では、累積値P.tが予測時間tと一致するかどうかを判断する。つまり、予測時間ｔ分の移動経路が算出されたかどうかを判断する。上述したように、予測時間tは、実行中のタスクによって予め決定されている。
【０１４７】
ステップＳ６１で“ＹＥＳ”であれば、つまり、累積値P.tが予測時間tと一致すれば、経路計画の作成処理を終了して、図１１および図１２に示したロボット制御処理にリターンする。
【０１４８】
一方、ステップＳ６１で“ＮＯ”であれば、つまり、累積値P.tが予測時間tと一致しなければ、ステップＳ６３で、基準位置を中心としたエージェントｉの移動候補点をすべて算出する。ただし、基準位置は、移動候補点を算出するためのエージェントｉの位置であり、初回はエージェントｉの現在位置であり、２回目以降は、Δt秒毎に予測されたエージェントｉの位置である。
【０１４９】
次のステップＳ６５では、基準位置を中心としたエージェントｊの移動候補点をすべて算出する。ただし、基準位置は、移動候補点を算出するためのエージェントｊの位置であり、初回はエージェントｊの現在位置であり、２回目以降は、Δt秒毎に予測されたエージェントｊの位置である。
【０１５０】
続いて、ステップＳ６７で、変数ｍを初期化し（ｍ＝１）、ステップＳ６９で、変数ｎを初期化する（ｎ＝１）。変数ｍは、エージェントｉの移動候補点を個別に識別するための変数であり、変数ｎは、エージェントｊの移動候補点を個別に識別するための変数である。
【０１５１】
次に、ステップＳ７１で、ｍ番目のエージェントｉの移動候補点を読出し、ステップＳ７３で、ｎ番目のエージェントｊの移動候補点を読み出す。そして、図１５に示すステップＳ７５で、時間間隔Δt後の移動計画P（以下、「移動計画P´」という）を作成する。移動計画P´では、累積値P.t＝P.t＋Δtであり、エージェントｉの移動予測軌跡P.Piにはエージェントｉのｍ番目の移動候補点が追加され、エージェントｊの移動予測軌跡P.Pjにはエージェントｊのｎ番目の移動候補点が追加され、相互利益P.Uは、エージェントｉのｍ番目の移動候補点と、エージェントｊのｎ番目の移動候補点に基づいて算出される。つまり、エージェントｉがｍ番目の移動候補点に移動した場合の利益と、エージェントｊがｎ番目の移動候補点に移動した場合の利益の相互利益P.Uが数２に従って算出される。このとき、ステップＳ１１またはステップＳ２７で算出された係数αが用いられる。
【０１５２】
次のステップＳ７７では、移動計画P´が展開済みの移動計画リストLcloseに存在するかどうかを判断する。ステップＳ７７で“ＹＥＳ”であれば、つまり、移動計画P´が展開済みの移動計画リストLcloseに存在すれば、ステップＳ８５に進む。このように、重複する移動計画P´については、展開前の移動計画リストLopenに含まれない。つまり、エージェントｉの移動候補点とエージェントｊの移動候補点の組み合わせと同じ組み合わせについては、選択肢から除外される。このため、冗長な経路計画が作成されるのが防止される。一方、ステップＳ７７で“ＮＯ”であれば、つまり、移動計画P´が展開済みの移動計画リストLcloseに存在しなければ、ステップＳ７９で、移動計画P´で、エージェントｉとエージェントｊの衝突が発生するかどうかを判断する。
【０１５３】
ステップＳ７９で“ＹＥＳ”であれば、つまり、移動計画P´で、エージェントｉとエージェントｊの衝突が発生する場合には、ステップＳ８５に進む。つまり、エージェントｉとエージェントｊが衝突する場合の移動計画P´は、展開前の移動計画リストLopenに含まれない。一方、ステップＳ７９で“ＮＯ”であれば、つまり、移動計画P´で、エージェントｉとエージェントｊの衝突が発生しない場合には、ステップＳ８１で、移動計画P´を展開前の移動計画リストLopenに追加して、ステップＳ８３で、展開前の移動計画リストLopenの要素を相互利益P.Uの大きい順に並べる。
【０１５４】
続いて、ステップＳ８５で、変数ｎが９であるかどかを判断する。つまり、ＣＰＵ８０は、累積値P.tにおいて、ｍ番目のエージェントｉの移動候補点と、すべてのエージェントｊの移動候補点の組み合わせのそれぞれについての相互利益P.Uを算出したかどうかを判断する。
【０１５５】
ステップＳ８５で“ＮＯ”であれば、つまり、変数ｎが９でなければ、ステップＳ８７で、変数ｎを１加算して（ｎ＝ｎ＋１）、図１４に示したステップＳ７３に戻る。一方、ステップＳ８５で“ＹＥＳ”であれば、つまり、変数ｎが９であれば、ステップＳ８９で、変数ｍが９であるかどうかを判断する。つまり、ＣＰＵ８０は、累積値P.tにおいて、エージェントｉの複数の移動候補点とエージェントｊの複数の移動候補点のすべての組み合わせのそれぞれについての相互利益P.Uを算出したかどうかを判断する。
【０１５６】
ステップＳ８９で“ＮＯ”であれば、つまり、変数ｍが９でなければ、ステップＳ９１で、変数ｍを１加算して（ｍ＝ｍ＋１）、図１４に示したステップＳ６９に戻る。一方、ステップＳ８９で“ＹＥＳ”であれば、つまり、変数ｍが９であれば、図１３に示したステップＳ５７に戻る。
【０１５７】
この実施例によれば、ロボット同士で行動情報を送受信し、空間リソースの競合を回避するように、ロボットの経路計画を作成し、作成した経路計画に従ってロボットを移動させるので、各ロボットの経路計画を算出するための中央制御装置を設ける必要がなく、別々のタスクを実行している複数のロボット間における移動の調整を分散的に実現することができる。このように、各タスクの利益関数および優先度を複数のロボットで共有することで、複数のロボットが互いの移動計画を分散的に計算し、それぞれ協調した移動計画の決定および実行が可能になる。つまり、異なるタスクの移動を行うロボット間の移動計画の協調を効率的に実施することができる。
【０１５８】
なお、この実施例では、各ロボットが経路計画を作成するようにしたが、各ロボットは、ロボット自身（エージェントｉ）の経路計画のみならず、他のロボット（エージェントｊ）の経路計画も算出しているため、エージェントｉが、エージェントｉの経路計画とエージェントｊの経路計画を算出し、エージェントｊに経路計画を送信するようにしてもよい。このようにしても、中央制御装置を設けずに、効率的にロボット間の移動計画を調整することができる。
【０１５９】
また、この実施例では、各エージェントについて、９つの移動候補点に移動した場合の利益を算出し、相互利益を算出するようにしたが、移動候補点の数は９に限定される必要はない。ＣＰＵまたはコンピュータの処理能力が高い場合には、移動候補点の数は１０以上であってもよい。また、ＣＰＵまたはコンピュータの処理能力が低い場合には、移動候補点の数は９未満にしてもよいが、移動候補点の数を減らし過ぎるのは好ましくない。
【符号の説明】
【０１６０】
１０  …システム
１２  …コミュニケーションロボット
６４  …スピーカ
６６  …マイク
７０  …眼カメラ
８０  …ＣＰＵ
１０６  …２次元距離計測装置
１０８  …３次元距離計測措置
【図１】
2020021351.tif 000006
【図２】
2020021351.tif 000007
【図３】
2020021351.tif 000008
【図４】
2020021351.tif 000009
【図５】
2020021351.tif 000010
【図６】
2020021351.tif 000011
【図７】
2020021351.tif 000012
【図８】
2020021351.tif 000013
【図９】
2020021351.tif 000014
【図１０】
2020021351.tif 000015
【図１１】
2020021351.tif 000016
【図１２】
2020021351.tif 000017
【図１３】
2020021351.tif 000018
【図１４】
2020021351.tif 000019
【図１５】
2020021351.tif 000020