図1を参照して、この実施例のシステム10は、コミュニケーションロボット(以下、単に「ロボット」という。)12を含む。このロボット12は、音声および身体動作(ジェスチャ)の少なくとも一方を用いて、人間や他のロボットとコミュニケーションを行うことができる。また、ロボット12は、たとえば無線LANなどのネットワーク14に接続し、ネットワーク14上のコンピュータと通信することができる。
この実施例では、ロボット12は、いわゆるテレプレゼンス(または、テレイグジステンス)ロボットであり、ネットワーク14に接続されたユーザ端末16と通信可能である。ユーザ端末16は、ロボット12を遠隔操作する操作者(以下、「ユーザ」という)が使用する汎用のコンピュータである。ユーザは、ユーザ端末16を用いてロボット12にタスクを実行させるためのコマンドを送信する。また、ユーザは、ユーザ端末16を用いて音声をロボット12に送信し、ロボット12から音声を出力することにより、ロボット12の近傍に存在する人間に話をする。以下、この明細書においては、ユーザに対して、ロボット12またはロボット12を遠隔操作するユーザのコミュニケーション対象を「人間」または「人」と呼ぶことにする。
また、ロボット12から送信される音声および/または映像(動画像または静止画像)をユーザ端末16で受信し、ユーザ端末16で音声および/または映像を出力することにより、ユーザは、ロボット12の周囲に存在する物を見たり、ロボット12の周囲の状況を把握したり、ロボット12の周囲に存在する人間の話を聞いたりすることができる。
なお、遠隔に設けられたユーザ端末16でロボット12を操作等することは既に周知であり、また、本願の本質的な内容ではないため、この明細書においては、遠隔操作についての詳細な説明は省略する。
図2を参照して、ロボット12のハードウェアの構成について説明する。図2は、この実施例のロボット12の外観を示す正面図である。ロボット12は台車30を含み、台車30の下面にはロボット12を自律移動させる2つの車輪32および1つの従輪34が設けられる。2つの車輪32は車輪モータ36(図3参照)によってそれぞれ独立に駆動され、台車30すなわちロボット12を前後左右の任意方向に動かすことができる。また、従輪34は車輪32を補助する補助輪である。したがって、ロボット12は、配置された空間内を自律制御によって移動可能である。
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の赤外線距離センサ40が取り付けられる。これらの赤外線距離センサ40は、センサ取り付けパネル38すなわちロボット12の周囲の物体(人間や障害物など)との距離を測定するものである。
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、超音波距離センサやミリ波レーダなどを用いることもできる。
センサ取り付けパネル38の上には、胴体42が直立するように設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ40がさらに設けられ、ロボット12の前方の主として人間との距離を計測する。また、胴体42には、その側面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット12の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ40および全方位カメラ46の設置位置は、当該部位に限定されず適宜変更され得る。
胴体42の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節48Rおよび肩関節48Lによって、上腕50Rおよび上腕50Lが設けられる。図示は省略するが、肩関節48Rおよび肩関節48Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節48Rは、直交する3軸のそれぞれの軸廻りにおいて上腕50Rの角度を制御できる。肩関節48Rの或る軸(ヨー軸)は、上腕50Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節48Lは、直交する3軸のそれぞれの軸廻りにおいて上腕50Lの角度を制御できる。肩関節48Lの或る軸(ヨー軸)は、上腕50Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕50Rおよび上腕50Lのそれぞれの先端には、肘関節52Rおよび肘関節52Lが設けられる。図示は省略するが、肘関節52Rおよび肘関節52Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕54Rおよび前腕54Lの角度を制御できる。
前腕54Rおよび前腕54Lのそれぞれの先端には、人の手に相当する球体56Rおよび球体56Lがそれぞれ設けられる。ただし、指や掌の機能が必要な場合には、人間の手に酷似した形状および機能を持たせた「手」を設けることも可能である。
また、図示は省略するが、台車30の前面、肩関節48Rと肩関節48Lとを含む肩に相当する部位、上腕50R、上腕50L、前腕54R、前腕54L、球体56Rおよび球体56Lには、それぞれ、接触センサ58(図3で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人間や他の障害物の接触を検知する。したがって、ロボット12は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット12の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。なお、接触センサ58の設置位置は、当該部位に限定されず、適宜な位置(人の胸、腹、脇、背中および腰に相当する位置)に設けられてもよい。
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部に相当する表示装置62および眼カメラ70が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット12の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
表示装置62は、その表示面がロボット12の顔として機能し、主として、ロボット12を遠隔操作するユーザの顔画像(ユーザ画像)を表示する。表示装置62の表示面の向きは、首関節60の動きに従って変化される。また、ユーザ画像の画像データ(映像信号)は、ユーザ端末16に設けられたカメラで撮影され、ネットワーク14を介してロボット12に送信される。ユーザ画像が表示装置62に表示されるため、ロボット12とコミュニケーションを実行する人間は遠隔に存在するユーザとコミュニケーションを行っている体感を得る。
図2では省略するが、表示装置62またはその近傍には、スピーカ64(図3参照)が設けられる。スピーカ64は、ロボット12が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、図2では省略するが、表示装置62またはその近傍には、マイク66(図3参照)が設けられる。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。
また、眼カメラ70が、表示装置62の上側の中央に設けられる。眼カメラ70は、ロボット12に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、この実施例では、ユーザ端末16のユーザがロボット12を通して、対象物を見る場合には、この対象物がロボット12の眼カメラ70で撮影される。
なお、眼カメラ70の設置位置は、表示装置62の上側の中央にまたはその近傍に限定されず、適宜な位置に設けられてよい。
また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。上述したように、眼カメラ70は、表示装置62の上側の中央に取り付けられる。したがって、表示装置62の動きに従って撮影方向が変化される。
なお、上述のスピーカ64およびマイク66の設置位置は、表示装置62またはその近傍に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット12は、車輪32の独立2軸駆動、肩関節48の3自由度(左右で6自由度)、肘関節52の1自由度(左右で2自由度)および首関節60の3自由度の合計13自由度を有する。
図3はロボット12の電気的な構成を示すブロック図である。この図3を参照して、ロボット12は、CPU80を含む。CPU80は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス82を介して、メモリ84、モータ制御ボード86、センサ入力/出力ボード88および音声入力/出力ボード90に接続される。
メモリ84は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、ロボット12の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサの出力(センサ情報)を検知するための検知プログラムや、外部コンピュータとの間で必要なデータやコマンドを送受信するための通信プログラムなどが記録される。また、RAMは、ワークメモリやバッファメモリとして用いられる。
さらに、この実施例では、ロボット12は、人間とのコミュニケーションをとるために発話したり、ジェスチャしたりできるように構成されているが、メモリ84に、このような発話およびジェスチャのための辞書(発話/ジェスチャ辞書)が設定されている。
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「右腕モータ96」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(図3では、まとめて「左腕モータ98」と示す)の回転角度を制御する。
さらに、モータ制御ボード86は、CPU80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(図3では、まとめて「頭部モータ100」と示す)の回転角度を制御する。そして、モータ制御ボード86は、CPU80からの制御データを受け、車輪32を駆動する2つのモータ(図3では、まとめて「車輪モータ36」と示す)の回転角度を制御する。
なお、この実施例では、車輪モータ36を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ36と同様に直流モータを用いるようにしてもよい。また、ロボット12の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更された、たとえば、他の実施例では、エアアクチュエータが適用されてもよい。
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでCPU80に与える。すなわち、赤外線距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてCPU80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからCPU80に入力される。眼カメラ70からの映像信号も、同様にして、CPU80に入力される。また、上述した複数の接触センサ58(図3では、まとめて「接触センサ58」と示す)からの信号がセンサ入力/出力ボード88を介してCPU80に与えられる。音声入力/出力ボード90もまた、同様に、DSPで構成され、CPU80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してCPU80に与えられる。
また、CPU80は、バス82を介して通信LANボード102に接続される。通信LANボード102は、たとえばDSPで構成され、CPU80から与えられた送信データを無線通信装置104に与え、無線通信装置104は送信データを、ネットワーク14を介してユーザ端末16に送信する。また、通信LANボード102は、無線通信装置104を介してデータを受信し、受信したデータ(受信データ)をCPU80に与える。
たとえば、送信データとしては、ロボット12で撮影および/または記憶された映像信号および/または音声信号であったり、ロボット12が行った行動(コミュニケーション行動)についての履歴情報などであったりする。また、受信データとしては、ユーザ端末16からの映像信号および/または音声信号であったり、ユーザ端末16からの操作信号(コマンド)であったりする。
また、CPU80は、バス82を介して、表示ドライバ92に接続される。上記の表示装置62が表示ドライバ92に接続される。表示ドラバイ92は、GPUおよびVRAMを含み、CPU80の指示に従って表示装置62に表示する画像に対応する画像データを生成する。表示ドライバ92で生成された画像データが表示装置62に出力され、画像データに対応する画像が表示装置62の画面に表示される。
さらに、CPU80は、バス82を介して、2次元距離計測装置106および3次元距離計測装置108に接続される。2次元距離計測装置106は、水平方向にレーザーを照射し、物体(人間も含む)に反射して戻ってくるまでの時間から当該物体までの距離を計測するものである。たとえば、トランスミッタ(図示せず)から照射したレーザーを回転ミラー(図示せず)で反射させて、前方を扇状に一定角度(たとえば、0.5度)ずつスキャンする。ここで、2次元距離計測装置106としては、SICK社製のレーザーレンジファインダ(型式 LMS200)を用いることができる。このレーザーレンジファインダを用いた場合には、距離8mを±15mm程度の誤差で計測可能である。
この実施例では、ロボット12は、2次元距離計測装置106で検出された障害物までの2次元(または水平方向)の距離情報と、ロボット12が配置される環境(たとえば、場所ないし領域)についての地図をマッチングすることで、ロボット12自身の位置すなわちロボット12の現在位置を推定する。ただし、より正確な現在位置を推定するために、パーティクルフィルタを用いて計算されたロボット12のオドメトリ(移動情報)も入力として利用される。ロボット12の現在位置を推定する手法としては、文献「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.」に開示される手法を用いることができる。ロボット12の現在位置を推定すること自体は本願の本質的な内容ではないため、詳細な説明は省略する。
また、3次元距離計測装置108は、水平方向を基準(0°)として上下40°(+30°〜−10°)の検知角度(垂直視野角)を有する3次元全方位レーザ距離計である。この3次元距離計測装置108は、0.1秒に1回転して、およそ100mまでの距離を計測し、ロボット12周辺の3次元距離情報を格納した点群情報を取得することができる。ここでは、3次元距離計測装置108としては、Velodine社製のイメージングユニットLiDAR(HDL-32E)(商品名)を用いることができる。
この実施例では、ロボット12は、3次元距離計測装置108で検出された3次元の距離情報に基づいて人間を検出するとともに、当該人間の位置を計測する。具体的には、3次元距離計測装置108から得られる3次元の距離情報と上記の地図を用いて、ロボット12が環境内のどの位置に存在しているか、およびどの方向を向いているかが推定される。次に、3次元距離計測装置108から取得した3次元の距離情報と、地図に基づく環境内の3次元の距離情報と比較し、近似する3次元の距離情報を格納した点群情報が示す点群を背景としてフィルタリングする。続いて、3次元距離計測装置108から取得した3次元の距離情報を格納した点群情報が示す点群のうち、閾値(Zmin, Zmax)を用いて一定の高さに存在しない点群をフィルタリングする。この実施例では、Zminが5cmに設定され、Zmaxが220cmに設定され、極端な高さの点群は、人間でないと判断し、人間の位置を計測する処理から除外される。
一定の高さに存在しない点群がフィルタリングされると、フィルタリング後のすべての点群に含まれる高さ情報を0に設定した2次元の点群情報が生成される。生成された2次元の点群情報は、ユークリッド距離を用いてクラスタリングされる。一例として、Point Cloud Libraryに実装されているクラスタリング手法が利用される。
さらに、クラスタリングされた点群情報に含まれる元々の高さ情報を利用し、高さの最大値から高さの最小値を引いた値が30cm未満であるもの、および点群の数が閾値以下であるもの(ここでは4個と設定した)がフィルタリングされる。つまり、小さすぎる物または壁などの人間以外の物と判断されたクラスタが除去される。そして、フィルタリング後の各クラスタの重心位置が各人間の位置情報として設定される。つまり、ロボット12の周囲に存在する人間が検出されるとともに、検出された人間の位置が計測される。ロボット12の周囲に複数の人間が存在することが検出された場合には、ロボット12のコミュニケーション対象の一人の人間が所定のルールに従って選択される。一例として、所定のルールは、ロボット12からの距離が最短距離であること、または、ユーザ端末16から指定されたことである。ただし、ユーザ端末16からコミュニケーション対象が指定された場合には、ロボット12からの距離に基づいて決定されたコミュニケーション対象よりも優先される。
なお、ロボット12の位置を推定したり、人間の位置を計測したりするために、ロボット12は、2次元距離計測装置106および3次元距離計測装置108を備えているが、これらの計測装置は、ロボット12に備えずに、または、ロボット12に備えるとともに、ロボット12が配置される環境内に設置されてもよい。また、床センサなどの他のセンサを用いて、ロボット12の位置を推定したり、人間の位置を計測(推定)したりしてもよい。
また、この実施例では、ロボット12は、2次元距離計測装置106および3次元距離計測装置108を備えるようにしてあるが、3次元距離計測装置108の計測結果を用いてロボット12の位置を推定することもできるため、2次元距離計測装置106は省略することもできる。
日常生活においては、人間と人間の間において、様々な空間の譲り合いが生じている。たとえば、店員が顧客に商品を見るための最も良い場所を譲る。また、狭い幅の通路では、人々は、車椅子に乗った人に道を譲る。さらに、人々は、美術品または動物のような対象物を見る場所において、自分よりも低身長の人または子供に見易い場所を譲る。
この実施例では、このような空間の譲り合いを上記のロボット12と人間との間においても実現するように、ロボット12を行動させる。ただし、この明細書において、ロボット12の行動は、単に、ロボット12が目的地に移動することを含む。
上記のような空間の譲り合いは、多くの場合、明示的なコミュニケーションを経由することなく行われており、状況に依存した多くのルールまたは規範が存在すると考えられる。しかし、多種多様な状況に依存したすべてのルールを網羅的に記述してロボット12の行動を制御するのは現実的に不可能である。
このため、この実施例では、大量のルールをロボット12の行動に記述するのではなく、人間とロボット12が同じ空間を占有したい状況が発生した場合に、優先度の低い方が自身の利益の最大化を行うのではなく、むしろ自分の利益を差し引き、より優先度の高い方の利益に寄与する行動を選択するように、ロボット12が実行可能な形で定式化し、空間の譲り合いを実現するようにしてある。つまり、一連の空間の譲り合いは、人間とロボット12の間における相互利益を最大化する、人間とロボット12の振る舞いとして表現される。
人間をエージェントiとし、ロボット12をエージェントjとした場合に、空間の譲り合いというエージェントiおよびエージェントjが協調および/または連携する行動は、エージェントiとエージェントjの間における空間リソースの競合の解決プロセスとみなすことができる。エージェントiが、合理的な振る舞いを行うとすれば、エージェントiにおける行動の選択は、自身の利益最大化として表現される。具体的には、数1で表現することができる。
[数1]
また、pは、エージェントiが取り得る移動計画を示し、Ui(p)は、移動計画pを選択したときにエージェントiが得る利益を示す。この明細書において、利益とは、タスクの目的を達成する度合を意味する。この実施例では、タスクの目的を達成する度合が高い程、利益が大きい。したがって、移動するエージェントでは、目的地に早く到達できるほど利益が大きい。また、物を見るエージェントでは、対象物が見易い位置へ移動できるほど利益が大きい。また、Pはエージェントiが取り得る全ての移動計画の集合である。これらのことは、エージェントjについても同様である。
仮に、エージェントiのみが存在する場合には、数1によって、エージェントiの目的を達成する最適な移動計画が選択される。ただし、エージェントiおよびエージェントjが存在する場合には、お互いの利益間に競合が生じると、数1を同時に満足する解は存在しなくなってしまう。この場合、エージェントiとエージェントjの間で移動の調整が必要である。
上述したように、人間同士では、こうしたお互いの利益の競合が生じた場合には、明示的な会話を行う事なく、競合を解決する事がある。より具体的には、狭い幅の通路の反対側から車椅子に乗った人がやってきた場合には、他方の人は、立ち止まって横によけ、車椅子の人が通るスペースを自然と確保する。この例は、空間の譲り合いで生じる二つの点を示していると言える。
一つ目は、エージェント同士(人間同士)がお互いの目的と、目的を達成する最適な行動を互いに認識している点である。つまり、人間は、お互いの目的と、目的を達成するための最適な振る舞いを知っている。上記の例で言えば、各人は、車椅子の人が狭い幅の通路を通り抜けたいこと、その目的を達成するには、車椅子の人がまっすぐ進むことが好ましいことを理解している。
二つ目は、エージェント同士の優先関係を認識している点である。優先度の低い人間が、自身の利益を差し引き、優先度の高い人間の利益を確保している。上記の例で言えば、各人は、車椅子に乗る人の優先度が高く、他方の人(車椅子に乗る人以外の人々)の優先度が低いものとして認識している。
この実施例では、上記の考えに基づいて、空間リソースの競合または利益競合の解決方法を、相互利益を最大化する行動の選択として、数2のように定式化した。
[数2]
ここで、αは、エージェントiの優位性を示し、その値は0から1の間で設定される。数2からも明らかなように、αが1に近づけば、エージェントjは、よりエージェントjの利益を差し引き、エージェントiの利益を最大化する行動(この実施例では、移動)が選択される。
この実施例では、人間とロボット12の間に空間を譲り合う状況が発生した場合に、人間とロボット12の社会的な立場または権威に応じて決定される優位性(または優先度)αを用いて、ロボット12とその周囲の人間の相互利益を最大化するように、ロボット12を移動させる。ただし、優位性は、ロボット12が実行する行動(タスク)の緊急度に応じて決定される場合もある。
上記のようなシステム10においては、ロボット12はユーザ端末16からのコマンドに従うタスクを実行する。
たとえば、ロボット12が或る店舗に配置され、このロボット12またはこのロボット12を遠隔で操作するユーザが店員として行動する場合には、陳列棚の商品を確認したり、商品などの荷物を運んだりする。
商品棚の商品を確認する場合には、ユーザは、ユーザ端末16を用いて、陳列された商品を見るタスクを実行するためのコマンドをロボット12に送信する。
詳細な説明は省略するが、商品を見る場合には、ロボット12は、首関節60を回転したり、身体の向きを変更したりすることにより、頭部に相当する表示装置62および眼カメラ70の向きを変える。また、このとき、ロボット12は、商品を眼カメラ70で撮影した撮影画像の画像データをユーザ端末16に送信する。したがって、ユーザは、撮影画像をユーザ端末16に表示することにより、商品を確認することができる。
また、商品などの荷物を運ぶ場合には、ユーザは、ユーザ端末16を用いて、所定の場所(後述する目的地Gに相当する)まで移動するタスクを実行するためのコマンドをロボット12に送信する。この場合、荷物は、他の店員からロボット12に渡される(積載される)。
なお、この実施例では、ロボット12は、胴体42、両手および両腕(48R、48L、50R、50L、52R、52L、54R、54L、56R、56L)に相当する部位を有する形態であるため、両手および両腕を用いて荷物を目的地Gまで運ぶことができる。ただし、ロボット12は、胴体、両手および両腕に相当する部位に代えて、全方位カメラ46、表示装置62および眼カメラ70を支持するように、台車30と首関節60を連結する支持棒が設けられてもよく、その場合には、たとえば、荷物は台車30の上に載せられる。
ロボット12が店員として振る舞う場合には、一般的には、ロボット12(店員)の行動よりも客のような人間の行動が優先される。したがって、人間が商品を確認するロボット12の方に近づいた場合、商品を見易くするために、ロボット12は移動する。つまり、ロボット12は今居る場所を空ける。
また、店舗内を移動するロボット12と人間が狭い幅の通路を挟んだ位置に存在し、ロボット12と人間が逆向きに通路を通り抜けたい場合には、同時に通路を移動すると、すれ違うことができないため、立ち往生してしまう。
ただし、ここでは、ロボット12の優位性よりも客の優位性が高いため、ロボット12は、顧客が狭い幅の通路を通り抜けるのを待機し、顧客が狭い幅の通路を通り抜けると、狭い幅の通路に侵入し、当該通路を通り抜ける。
図4(A)は、人間とロボット12が狭い幅の通路を挟んだ位置に存在する様子の概略を真上方向から見た概略図である。図4(A)において(図4(B)、図5(A)、図5(B)、図9、図10(A)および図10(B)も同じ)、人間およびロボット12の頭部を丸で示し、頭部に記載した目の付いている方が前方(図10(A)および図10(B)の(6)で示す方向)であり、その反対方向が後方(図10(A)および図10(B)の(4)で示す方向)である。ここでは、壁で挟まれた狭い幅の通路を、人間が一方から他方に通り抜けたい状況であり、ロボット12が他方から一方に通り抜けたい状況である。ただし、狭い幅の通路は、ロボット12と人間がすれ違うことができないため、同時に通り抜けようとした場合、立ち往生が発生する。
上記のとおり、ロボット12は店員として振る舞うため、顧客である人間の優位性はロボット12の優位性よりも高く設定される。このような状況においては、先に、人間が狭い幅の通路を通り抜けて、その後、ロボット12がその通路を通り抜けることにより、優位性を考慮したロボット12の移動を実行(実現)することができる。つまり、空間の譲り合いが実行(実現)される。
具体的には、図4(B)および図5(A)に示すように、人間が狭い幅の通路を移動し、さらに、狭い幅の通路を通り抜けるまで、ロボット12は停止して、人間が通路を通り抜けるのを待機する。そして、図5(A)および図5(B)に示すように、人間が狭い幅の通路を通り抜けると、ロボット12は人間とは逆向きに狭い幅の通路を移動し、通り抜ける。
このように、特別な制約または条件が存在しない場合には、人間は、遠回りせずに目的地に向けて、適切な移動速度で移動する。この行動は、(1)移動によって、より目的地に近付くほど利益が高く、(2)適切な速度で移動できる程利益が高いという2つの要素に分類することができる。
これらの要素を利用した「移動」についてのタスクに関する利益関数は数3で示される。また、数3をまとめると、数4となる。ただし、数3および数4において、Uは利益であり、tは経路計画で使用する予測時間であり、posはt秒後の予測位置であり、posnowは現在位置であり、Gは目的地であり、Distは距離(または差分)であり、xは移動距離であり、vprefは適切な速度を意味する。この実施例では、移動のタスクを実行する場合には、10秒(後述する予測時間t)分の予測を実施する。また、ロボット12の経路計画を算出する場合には、人間とロボット12のそれぞれの利益Uが時間間隔Δt毎(たとえば、0.5秒毎)に、数4に従って算出される。
この明細書においては、「経路計画」は、予測時間t分について予測されるロボット12の移動経路(以下、「予測時間t分の移動経路」ということがある)を意味し、「移動計画」は、時間間隔Δt後に予測されるロボット12の位置を意味する。
適切な速度vprefは、人間またはロボット12が移動するときに望ましい移動速度を意味し、行動(またはタスク)に応じて設定される。緊急性の無い行動であれば、通常の移動速度が適切な速度vprefとして設定される。通常の移動速度は、成人が歩く速度の平均値であり、ロボット12は、減速距離を考慮して、その平均値よりも少し低く設定される。緊急性の高い行動であれば、通常の移動速度よりも早い速度が適切な速度vprefとして設定される。最徐行する必要のある行動であれば、通常の移動速度よりも遅い速度が適切な速度vprefとして設定される。たとえば、人間およびロボット12のそれぞれについて、高、中(通常の移動速度)、低の3段階の速度が予め想定されており、行動に応じて、適切な速度vprefが設定される。以下、この明細書において同じである。
[数3]
U(G, t, pos)=f(Dist(posnow, G)-Dist(pos, G))
ただし, f(d)=-|d-vpref*t|
[数4]
U(G, t, pos)=-|(Dist(posnow, G)-Dist(pos, G))-vpref*t|
この実施例では、利益Uの最大値は0になるように調整されている。数3において、(Dist(posnow, G)-Dist(pos, G))は、目的地Gへの近接項であり、現在位置posnowから、t秒後の位置posが目的地Gに近い程、大きい値となり、大きい値程、利益Uが大きくなる。
また、数3において、f(d)=-|d-vpref*t|は、ロボット12の移動制約項を示し、t秒の間に、望ましい速度vprefで移動できるときに最大値(すなわち、f(d)=0)となり、望ましい速度vprefからずれるに従ってf(d)の値は小さくなる。
目的地Gへの近接項とロボット12の移動制約項を組み合わせることで、目的地Gに近づきつつ、望ましい速度vprefでロボット12が移動されるように、利益Uが最大化されるように設計されている。
なお、図示は省略するが、ロボット12またはロボット12のユーザが客であり、人間が店員である場合には、立場が逆転するため、たとえば、ロボット12が先に狭い幅の通路を通り抜け、その後、人間が狭い幅の通路を通り抜ける。
また、上記の例では、店員と客の場合の例について説明したが、これに限定される必要はない。ロボット12と車椅子に乗った人が狭い幅の通路を互いに逆向きに通り抜ける場合には、車椅子の人の優位性がロボット12の優位性よりも高くされ、ロボット12は、車椅子の人が通路を通り抜けた後に、通路を通り抜ける。
図6は、或る展示会場の或る一室に複数の展示物が配置されている様子を真上方向から見た概略図である。図6等を参照して、展示物を鑑賞する場合において、人間とロボット12が空間を譲り合う他の例について説明する。ただし、ここでは、鑑賞者が人間であり、説明員がロボット12であるものとする。
図6に示すように、4つの展示物A、展示物B、展示物Cおよび展示物Dがそれぞれ別の壁面の前に展示されている。通常、鑑賞者は、順路に沿って移動する。たとえば、鑑賞者からの要請があった場合、展示物A、B、C、Dの概要または内容を紹介するロボット12は、展示物A、B、C、Dに周囲に存在し、鑑賞者が展示物A、B、C、Dに近づくと、展示物A、B、C、Dの正面からずれた位置に立つ。つまり、ロボット12は、鑑賞者に、展示物A、B、C、Dを鑑賞し易い場所を譲る。
このとき、ロボット12は、頭部すなわち表示装置62の向きを上下左右に動かしたり、身体の動きを回転させるたりすることで、展示物A、B、C、Dを見て、当該展示物A、B、C、Dについての説明の音声をスピーカ64から出力する。ただし、説明の音声は、ロボット12の合成音声でもよいし、ユーザがユーザ端末16を通して発話した音声でもよい。一方、鑑賞者は、展示物A、B、C、Dの正面に立ち、ロボット12から展示物A、B、C、Dについての説明を受ける。
図7に示すように、展示物A、B、C、Dを鑑賞する場合には、展示物A、B、C、Dから見て正面方向に近い方向であり、展示物A、B、C、Dからの距離が近いほど、展示物A、B、C、Dを鑑賞する場合における利益Uが大きくなる。ただし、上記の方向および距離は、展示物A、B、C、Dの配置位置(または中心位置)からの正面方向に対する方向およびその中心位置からの距離である。ただし、方向および距離は、高さ情報を含まない2次元の方向および距離である。したがって、展示物A、B、C、Dのような対象物を見る(鑑賞する)場合には、利益関数は数5で示される。
ただし、数5において、Uは利益であり、Distは距離(差分)であり、Gは目的地である。ただし、目的地Gは、展示物A、B、C、Dの配置位置である。また、方向の要素に0.1を乗算しているが、これは方向の要素に対する重み付けであり、重みを0.1に決定したのは、方向の要素よりも距離の要素が利益に与える影響が大きいと考えられるからである。たとえば、対象物を鑑賞する人間の数が多い場合には、対象物に対する方向を気にせずに、なるべく対象物に近づこうとする人が比較的多いからである。ただし、これは一例であり、対象物等によって適宜変更可能である。また、ロボット12の経路計画を算出する場合には、鑑賞者およびロボット12のそれぞれの利益Uが時間間隔Δt毎に数5に従って算出される。
[数5]
U(pos, G)=f(cosθ*0.1-Dist(pos, G))
上述したように、一般的には、鑑賞者は、順路に沿って移動し、展示物A、B、C、Dを鑑賞するが、必ずしも順路に沿って移動するとは限らない。したがって、この実施例では、次のようにして、目的地Gを決定するようにしてある。
図8(A)は鑑賞者である人間が移動している場合に、目的地Gを推定する方法を説明するための図であり、図8(B)は人間が静止している場合に、目的地Gを推定する方法を説明するための図である。
図8(A)に示すように、人間が移動している場合には、人間が移動する方向に配置された展示物A、B、CまたはDが、当該人間が鑑賞しようとしている対象物として決定され、鑑賞の対象物として決定された展示物A、B、CまたはDの配置位置が目的地Gとして推定(または決定)される。
図8(B)に示すように、人間が停止している場合には、人間に最も近い位置に配置された展示物A、B、CまたはDが、当該人間が鑑賞しようとしている対象物として決定され、鑑賞の対象物として決定された展示物A、B、CまたはDの配置位置が目的地Gとして推定される。ただし、人間からの距離が同じまたは同程度(差が所定距離以内)の対象物が複数存在する場合には、複数の対象物のうち、人間が停止するまでに移動していた方向に存在する対象物の配置位置が目的地Gとして推定される。
なお、環境に展示物A、B、C、Dのような対象物が存在しない場合には、人間が移動する方向の先に存在する場所ないし領域の中心位置、または、人間が静止している場所ないし領域の中心位置が目的地Gとして推定される。
また、ロボット12が移動のタスクを実行する場合には、ロボット12の目的地Gはコマンドとともにユーザ端末16から送信(指定)される。
図9はロボット12の経路計画を作成する方法を説明するための図である。また、図10(A)は人間の移動方向を示す図であり、図10(B)はロボット12の移動方向を示す図であり、図10(C)は移動候補点を説明するための図である。
ロボット12の経路計画を作成する、すなわち予測時間t分の移動経路を算出する場合には、ロボット12の現在位置(以下、「自己位置」ということがある)を推定するとともに、人間の現在位置を検出し、現在位置からΔt秒後の位置(以下、「移動候補点」)に移動したと仮定した場合における人間の利益とロボット12の利益をそれぞれ算出し、各利益に人間の優位性およびロボット12の優位性を考慮した重み付けをして、相互利益を算出する。ただし、図9では、エージェントjの優位性αjは、1からエージェントiの優位性αiを減算した値である。
図10(A)に示すように、Δt秒後の人間の位置は(1)−(9)で示す方向における位置である。同様に、図10(B)に示すように、Δt秒後のロボット12の位置は(1)−(9)で示す方向における位置である。この実施例では、予測時間t分の移動経路を算出する場合には、ロボット12が存在する環境についての地図が所定長さ(たとえば、0.4mまたは0.5m)のグリッド状に分解され、人間およびロボット12がグリッド単位で移動されるように、時間間隔Δt分移動した位置すなわち移動候補点が決定される。ただし、上記の所定長さは、ロボット12が適切な速度vprefでΔt秒間移動した場合に移動可能な距離に決定される。
図10(C)に示すように、上記の(1)−(9)で示す移動方向における移動候補点は、9つの升目の各々の中心位置である。つまり、現在の移動方向(正面方向)を基準に、前後左右および斜め方向に移動した場合の位置に対応する8つの移動候補点に、中央の升目の中心位置(現在位置)に対応する1つの移動候補点が追加される。ただし、(5)で示す中央の升目の中心位置は、人間またはロボット12が移動しない(静止している)場合の位置である。
図9に戻って、相互利益は、人間が複数(この実施例では、9つ)の移動候補点(Δt秒後の位置)の各々に移動した場合(「第1移動計画を選択した場合」に相当する)における各利益と、ロボット12が複数(この実施例では、9つ)の移動候補点の各々に移動した場合(「第2移動計画を選択した場合」に相当する)における各利益の全ての組み合わせについて、それぞれ算出される。つまり、人間の複数の移動候補点と、ロボット12の複数の移動候補点のすべての組み合わせ(9×9=81)について、相互利益が算出される。
ただし、図9に示す例では、人間とロボット12の前方に鑑賞するべき展示物が配置されているものとする。また、移動前の人間とロボット12を実線で示し、移動後の人間とロボット12を点線で示す。なお、人間またはロボット12は移動しない場合もある。
算出された全ての相互利益から最大の相互利益の組み合わせが選択され、選択された組み合わせのロボット12の移動候補点がΔt秒後のロボット12の位置として記憶される。ただし、人間とロボット12が衝突する場合の組み合せについては、最大の相互利益の組み合わせを選択する前に選択の候補(または選択肢)から除外される。この実施例では、人間とロボット12の距離が所定距離(たとえば、1m)以下である場合に、これらが衝突すると判断するようにしてある。
また、最大の相互利益の組み合わせが選択されると、選択された組み合わせにおけるΔt秒後の人間の位置とロボット12の位置を基準として、さらにΔt秒後(つまり、2×Δt秒後)に人間が複数の移動候補点の各々に移動した場合の各利益と、2×Δt秒後にロボット12が複数の移動候補点の各々に移動した場合の各利益との全ての組み合わせについて、それぞれ相互利益が算出される。つまり、前の回で選択された人間の位置とロボット12の位置をそれぞれ現在位置として、Δt秒後の移動候補点が人間およびロボット12のそれぞれについて算出される。
なお、図9に示す例では、Δt秒後および2×Δt秒後のいずれの場合にも中段に記載された移動候補点の組み合わせについての相互利益が最大である。
このようにして、人間とロボット12のΔt秒毎の位置(移動候補点)が予測時間t分選択または決定される。つまり、予測時間t分のロボット12の移動経路すなわち経路計画が算出される。予測時間tは、実行されるタスクに応じて予め決定されており、たとえば、ロボット12が任意の目的地Gまで移動するタスクを実行する場合には、ロボット12は移動するエージェントであり、この場合には、予測時間tは10秒である。また、ロボット12が展示物A、B、C、Dの概要または内容を紹介するタスクを実行する場合には、ロボット12は物を見るエージェントであり、この場合には、予測時間tは5秒である。
ただし、実際にロボット12を移動させている場合に、人間または障害物に衝突する可能性がある場合には、ロボット12は移動を停止する。ロボット12は、自身の位置を算出する場合に、2次元距離計測装置106の出力に基づいて周囲に存在する人間または障害物との距離を計測しているため、人間または障害物に衝突する可能性があることを知ることができる。
なお、上記のように作成される経路計画では、何度も同じ場所を通る冗長な経路計画が作成されてしまうことがある。冗長な経路計画が作成された場合には、利益の総和が減少せず、かつ人間とロボット12が衝突しない範囲で、冗長部分が削除される。
また、図4(A)−図5(B)の説明では省略したが、人間とロボット12が細い幅の通路を通り抜ける場合にも、図9および図10(A)、(B)、(C)を用いて説明した方法により、ロボット12の経路計画は作成される(予測時間t分の移動経路が算出される)。
図11は図3に示したメモリ84(RAM)のメモリマップ500を示す図である。図11に示すように、メモリ84は、プログラム記憶領域502およびデータ記憶領域504を含む。プログラム記憶領域502は、ロボット制御プログラムを記憶する。ロボット制御プログラムは、自己位置推定プログラム502a、人間位置検出プログラム502b、目的地推定プログラム502c、移動候補点算出プログラム502d、相互利益算出プログラム502e、経路計画作成プログラム502fおよび行動制御プログラム502gを含む。
自己位置推定プログラム502aは、2次元距離計測装置106の出力と地図データ504aに基づいて、ロボット12自身の位置すなわち自己位置を推定(または検出)するためのプログラムである。人間位置検出プログラム502bは、3次元距離計測装置108の出力に基づいて、ロボット12の周囲に存在する人間を検出するとともに、検出した人間の位置を検出するためのプログラムである。
目的地推定プログラム502cは、対象物を鑑賞する場合において、人間の目的地Gを推定するためのプログラムである。移動候補点算出プログラム502dは、人間のΔt秒後の複数の移動候補点とのロボット12のΔt秒後の複数の移動候補点を、それぞれ算出するためのプログラムである。ただし、移動候補点は、ロボット12が、基準位置からΔt秒分移動した場合の位置である。また、基準位置の初期値は、ロボット12の現在位置であり、時間間隔Δt秒毎に更新される。これらのことは人間についても同様である。
相互利益算出プログラム502eは、人間が複数の移動候補点に移動した場合の各利益と、ロボット12が複数の移動候補点に移動した場合の各利益に基づいて、人間の複数の移動候補点とロボット12の複数の移動候補点の各組み合わせについての相互利益をそれぞれ算出するためのプログラムである。ただし、利益関数および優位性(重みα)は、実行中のタスクに応じて決定される。
経路計画作成プログラム502fは、移動候補点算出プログラム502dおよび相互利益算出プログラム502eを予測時間t分繰り返し実行し、各回において、相互利益算出プログラム502eに従って算出される複数の相互利益から最大の相互利益を選択し、選択した相互利益を有する組における人間およびロボット12の移動候補点をそれぞれ記憶して、ロボット12の経路計画を作成するためのプログラムである。ただし、上述したように、冗長な経路計画が作成されないために、人間の移動候補点とロボット12の移動候補点の組み合わせと同じ組み合わせについては、選択肢から除外される。また、上述したように、最大の相互利益を選択する前に、人間とロボット12が衝突する場合の移動候補点の組み合わせについては選択肢から除外される。
行動制御プログラム502gは、ユーザ端末16から指示されたコマンドに対応するタスクを実行するためのプログラムであって、ロボット12自身の行動を制御する。ただし、上述したように、タスクを実行する場合、ロボット12は、作成した経路計画に従って移動させる。
図示は省略するが、プログラム記憶領域502には、音声入力プログラム、映像入力プログラムおよび音声出力プログラムなどの他のプログラムロボット制御プログラムとは異なるプログラムも記憶御される。
また、データ記憶領域504には、地図データ504a、重みデータ504b、自己位置データ504c、人間位置データ504d、相互利益データ504eおよび経路計画データ504fが記憶される。
地図データ504aは、ロボット12が配置される環境を上方から見た2次元の地図についてのデータである。たとえば、地図には、通路、壁、柱および固定的に配置されている障害物(たとえば、消火器、ごみ箱など)が記載される。また、展示物(A、B、C、Dなど)が配置された環境においては、展示物も地図に記載される。
なお、ユーザ端末16は、地図データ504aと同じまたは同等の地図データを記憶しており、または、参照可能であり、ユーザは、ユーザ端末16を介してこの地図データに対応する地図を参照し、ロボット12の目的地Gを指定したり、コミュニケーション対象として選択する人間が存在する位置を指定したりする。
重みデータ504bは、相互利益を算出する場合の重みαについてのデータであり、重みαはロボット12が実行するタスクに応じて予め設定されている。自己位置データ504cは、ロボット12の現在位置についての座標データである。人間位置データ504dは、ロボット12によって検出された人間の現在位置についての座標データである。ただし、複数の人間が検出された場合には、所定のルールに従ってコミュニケーション対象として選択された一人の人間の現在位置についての座標データが人間位置データ504dとして記憶され、タスクの実行を終了するまで追跡される。
相互利益データ504eは、相互利益算出プログラム502eに従って算出される複数の相互利益についてのデータである。上述したように、移動候補点算出プログラム502dおよび相互利益算出プログラム502eは、予測時間t分繰り返し実行されるため、相互利益データ504eは各回で更新される。
経路計画データ504fは、Δt秒毎に(各回で)相互利益が最大となるロボット12の位置(移動候補点)を、予測時間t分時系列に従って並べた移動経路すなわち経路計画についてのデータである。この経路計画データ504fは、後述する展開済みの移動計画リストLcloseに含まれるロボット12の移動予測軌跡P.Prのデータに相当する。
図示は省略するが、データ記憶領域504には、他のデータが記憶されたり、フラグおよび/またはタイマ(カウンタ)が設けられたりする。
図12および図13は、図3に示したCPU80のロボット制御処理を示すフロー図である。図12に示すように、CPU80は、ロボット制御処理を開始すると、ステップS1で、終了かどうかを判断する。ここでは、CPU80は、ユーザ端末16から停止コマンドを受信したかどうかを判断する。ステップS1で“YES”であれば、つまり、終了であれば、ロボット制御処理を終了する。
一方、ステップS1で“NO”であれば、つまり、終了でなければ、ステップS3で、自己位置を推定(検出)し、ステップS5で、人間の位置を検出して、ステップS7に進む。ただし、ステップS3では、自己位置データ504cが更新され、ステップS5では、人間位置データ504dが更新される。また、ステップS5では、複数の人間が検出された場合には、上記のように、選択された一人の人間の位置が検出される。これらのことは、後述するステップS19およびS21についても同じである。
なお、図示は省略するが、ユーザ端末16から何らコマンドを受信していない場合には、ロボット12は停止していても良く、また、自由に移動しても良い。
ステップS7では、行動の内容が決定されたかどうかを判断する。つまり、CPU80は、ユーザ端末16からタスクの実行を指示するコマンドを受信したかどうかを判断する。ただし、ユーザは、ユーザ端末16を用いてコマンドを入力するともに、目的地Gを指定する。
ステップS7で“NO”であれば、つまり、行動の内容が決定されていなければ、ステップS1に戻る。一方、ステップS7で“YES”であれば、つまり、行動の内容が決定されれば、ステップS9で、人間の目的地Gを推定(決定)する。ただし、複数の人間が存在する場合には、選択された一人の人間の目的地Gが推定される。
次のステップS11では、行動の内容に応じて優位性を決定する。つまり、CPU80は、実行するタスクに応じて重みαを決定する。このとき、重みαの数値データすなわち重みデータ504bがデータ記憶領域504に記憶される。続くステップS13では、後述する経路計画の作成処理(図14、図15および図16参照)を実行して、図13に示すステップS15に進む。
図13に示すように、ステップS15では、行動を開始する。ロボット12は、ロボット制御処理と並行して、ステップS7において、決定された行動すなわちユーザ端末16からのコマンドに従う行動についての処理を実行(タスクを実行)することにより、移動を含む行動を実行し、移動するときに、作成した経路計画に従って(後述する、展開済みの移動計画リストLcloseに含まれるロボット12の移動予測軌跡P.Prを参照して)移動する。
次のステップS17では、行動を完了したかどうかを判断する。つまり、CPU80は、タスクの実行を終了したかどうかを判断する。ステップS17で“YES”であれば、つまり、行動を完了すれば、図12に示したステップS1に戻る。一方、ステップS17で“NO”であれば、つまり、行動を完了していなければ、ステップS19で、自己位置を推定し、ステップS21で、人間の位置を検出し、ステップS23で、経路計画の作成処理を実行して、ステップS17に戻る。
図14、図15および図16は、図12のステップS13および図13のステップS23に示した経路計画の作成処理を示すフロー図である。図14に示すように、CPU80は、経路計画の作成処理を開始すると、ステップS51で、展開済みの移動計画リストLcloseと、展開前の移動計画リストLopenを初期化する。次のステップS53では、初期移動計画P0を作成する。
ここで、移動計画Pは、時間間隔Δtの累積値P.t、人間の移動予測軌跡P.Pp、ロボット12の移動予測軌跡P.Prおよび累積値P.tにおける利益P.Uを含む。
また、上記の初期移動計画P0は、移動計画Pの初期値である。したがって、初期移動計画P0では、累積値P.t=0であり、人間の移動予測軌跡P.Ppは人間の現在位置のみであり、ロボット12の移動予測軌跡P.Prはロボット12の現在位置のみであり、利益P.Uは、人間の現在位置とロボット12の現在位置に基づいて算出される。ただし、人間の移動予測軌跡P.Ppは、時間間隔Δt毎の人間の位置を時系列順に並べた集合(またはリスト)である。また、ロボット12の移動予測軌跡P.Prは、時間間隔Δt毎のロボット12の位置を時系列順に並べた集合(またはリスト)である。
次に、ステップS55で、初期移動計画を展開前の移動計画リストLopenの先頭に追加し、ステップS57で、展開前の移動計画リストLopenの先頭にある移動計画Pを取り出し、展開済みの移動計画リストLcloseに追加した後に、ステップS59で、取り出した移動計画Pを、展開前の移動計画リストLopenから削除する。
図15に示すように、続くステップS61では、累積値P.tが予測時間tと一致するかどうかを判断する。つまり、予測時間t分の移動経路が算出されたかどうかを判断する。上述したように、予測時間tは、実行中のタスクによって予め決定されている。
ステップS61で“YES”であれば、つまり、累積値P.tが予測時間tと一致すれば、経路計画の作成処理を終了して、図12および図13に示したロボット制御処理にリターンする。
一方、ステップS61で“NO”であれば、つまり、累積値P.tが予測時間tと一致しなければ、ステップS63で、基準位置を中心とした人間の移動候補点をすべて算出する。ただし、基準位置は、移動候補点を算出するための人間の位置であり、初回は人間の現在位置であり、2回目以降は、Δt秒毎に予測された人間の位置である。
次のステップS65では、基準位置を中心としたロボット12の移動候補点をすべて算出する。ただし、基準位置は、移動候補点を算出するためのロボット12の位置であり、初回はロボット12の現在位置であり、2回目以降は、Δt秒毎に予測されたロボット12の位置である。
続いて、ステップS67で、変数mを初期化し(m=1)、ステップS69で、変数nを初期化する(n=1)。変数mは、人間の移動候補点を個別に識別するための変数であり、変数nは、ロボット12の移動候補点を個別に識別するための変数である。
次に、ステップS71で、m番目の人間の移動候補点を読出し、ステップS73で、n番目のロボット12の移動候補点を読み出す。そして、図16に示すステップS75で、時間間隔Δt後の移動計画P(以下、「移動計画P´」という)を作成する。移動計画P´では、累積値P.t=P.t+Δtであり、人間の移動予測軌跡P.Ppには人間のm番目の移動候補点が追加され、ロボット12の移動予測軌跡P.Prにはロボット12のn番目の移動候補点が追加され、相互利益P.Uは、人間のm番目の移動候補点と、ロボット12のn番目の移動候補点に基づいて算出される。つまり、人間がm番目の移動候補点に移動した場合の利益と、ロボット12がn番目の移動候補点に移動した場合の利益の相互利益P.Uが数2に従って算出される。このとき、ステップS11で決定された重みαが用いられる。
次のステップS77では、移動計画P´が展開済みの移動計画リストLcloseに存在するかどうかを判断する。ステップS77で“YES”であれば、つまり、移動計画P´が展開済みの移動計画リストLcloseに存在すれば、ステップS85に進む。このように、重複する移動計画P´については、展開前の移動計画リストLopenに含まれない。つまり、人間の移動候補点とロボット12の移動候補点の組み合わせと同じ組み合わせについては、選択肢から除外される。このため、冗長な経路計画が作成されるのが防止される。一方、ステップS77で“NO”であれば、つまり、移動計画P´が展開済みの移動計画リストLcloseに存在しなければ、ステップS79で、移動計画P´で、人間とロボット12の衝突が発生するかどうかを判断する。
ステップS79で“YES”であれば、つまり、移動計画P´で、人間とロボット12の衝突が発生する場合には、ステップS85に進む。つまり人間とロボット12の衝突する場合の移動計画P´は、展開前の移動計画リストLopenに含まれない。一方、ステップS79で“NO”であれば、つまり、移動計画P´で、人間とロボット12の衝突が発生しない場合には、ステップS81で、移動計画P´を展開前の移動計画リストLopenに追加して、ステップS83で、展開前の移動計画リストLopenの要素を相互利益P.Uの大きい順に並べる。
続いて、ステップS85で、変数nが9であるかどかを判断する。つまり、CPU80は、累積値P.tにおいて、m番目の人間の移動候補点と、すべてのロボット12の移動候補点の組み合わせのそれぞれについての相互利益P.Uを算出したかどうかを判断する。
ステップS85で“NO”であれば、つまり、変数nが9でなければ、ステップS87で、変数nを1加算して(n=n+1)、図15に示したステップS73に戻る。一方、ステップS85で“YES”であれば、つまり、変数nが9であれば、ステップS89で、変数mが9であるかどうかを判断する。つまり、CPU80は、累積値P.tにおいて、人間の複数の移動候補点とロボット12の複数の移動候補点のすべての組み合わせのそれぞれについての相互利益P.Uを算出したかどうかを判断する。
ステップS89で“NO”であれば、つまり、変数mが9でなければ、ステップS91で、変数mを1加算して(m=m+1)、図15に示したステップS69に戻る。一方、ステップS89で“YES”であれば、つまり、変数mが9であれば、図14に示したステップS57に戻る。
この実施例によれば、ロボットが実行するタスクとは別に、人間とロボットの空間の譲り合いを考慮したロボットの経路計画を作成し、作成した経路計画に従ってロボットを移動させるので、タスクと切り離して譲り合いを実現することができる。したがって、様々な状況に応じた空間の譲り合いを考慮したタスクを作成する必要が無く、開発コストを大幅に低減することができる。
なお、この実施例では、ロボット12が経路計画を作成するようにしたが、経路計画はロボット12と通信可能に接続されたコンピュータで作成するようにしてもよい。かかる場合には、ロボット12は、人間の現在位置、ロボット12の現在位置および目的地の情報をネットワーク14上のコンピュータに送信し、コンピュータのプロセッサは、図14−図16に示したような経路計画の作成処理を実行して、経路計画を作成する。そして、コンピュータは、作成した経路計画をロボット12に送信する。このコンピュータは、一例として、ユーザ端末16である。
また、この実施例では、人間およびロボットのそれぞれについて、9つの移動候補点に移動した場合の利益を算出し、相互利益を算出するようにしたが、移動候補点の数は9に限定される必要はない。CPUまたはコンピュータの処理能力が高い場合には、移動候補点の数は10以上であってもよい。また、CPUまたはコンピュータの処理能力が低い場合には、移動候補点の数は9未満にしてもよいが、移動候補点の数を減らし過ぎるのは好ましくない。