図1を参照して、この実施例の案内ロボットシステム100は、案内ロボット(以下、単に「ロボット」という。)10を含み、このロボットは、音声および身体動作を用いて人間とコミュニケーションを実行する機能を備える相互作用指向の人間型ロボットである。ただし、このロボットは、発話可能で、移動可能であれば、車輪移動ロボットや2足歩行ロボットなど任意のロボットが利用可能である。
ロボット10は、地下街、イベント会場、遊園地および美術館などの不特定多数の人間が存在する図2に示すような移動空間200に配置され、人間(被案内者)Hを先導して目的地まで案内する案内サービスを提供する。ロボット10が提供する案内サービス、つまりロボット10に与えられる案内タスクには、展示案内サービス、誘導案内サービス等が含まれる。
ここで、展示案内サービスとは、たとえば、配置された環境内を巡回して人間を展示物(或いは商品)まで案内し、展示物に応じた説明を行うような案内サービスをいう。また、誘導案内サービスとは、たとえば、環境内の或る場所で催し物が始まるときに、その場所まで人間を誘導するような案内サービスをいう。ただし、ロボット10が提供するこれらの案内サービスはあくまで一例であり、人間を先導して目的地まで案内する案内サービスであれば、その具体的態様は限定されない。
なお、図2に示す移動空間200は、一例として、商業施設を示し、太線で示す通路を挟んでその両側に、飲食店舗、物販店舗などが配置されるとともに、通路の一部に広場やオープン店舗が設定される。ただし、この発明の案内ロボット10が適用可能な移動空間は図2の移動空間200に限定されるものではない。このような移動空間200には、ロボット10の位置を検出したり人Hの位置や属性を特定したりするために、天井などの比較的高所には複数の距離画像センサ12(図3)が設けられている。
図3を参照して、案内ロボットシステム100の遠隔操作用のコンピュータ14は、後に説明するが、一定時間(たとえば、1秒)毎に複数の距離画像センサ12によって、任意に移動する人の位置を検出すると共に、その人の向いている方向などを検出する。そのために、コンピュータ14は、距離画像センサ12からのセンサ出力を受ける。
コンピュータ14にはメモリ16、通信LANボード18が接続されると共に、発話コンテンツデータベース(DB)20および地図データベース(DB)21が接続される。
発話コンテンツデータベース20には、ロボット10が人に対して広告、宣伝などのサービスを提供する際に必要な発話文を予め登録しておき、必要なとき、コンピュータ14がこの発話コンテンツデータベース20から必要な発話文を読み出してロボット10に与える。
ただし、発話コンテンツデータベース20は、ロボット10に設けられていてもよい。その場合には、コンピュータ14は、ロボット10に対して、発話すべき発話文を指定する命令だけをロボット10に送ればよい。
地図データベース21には、図2に示すような移動空間200の地図データ、たとえば広場、壁、店舗、ロボット10が移動可能な通路などの位置を示すデータを予め登録しておき、必要なとき、コンピュータ14がこの地図データベース21から必要な地図データを読み出してロボット10に与える。
ただし、地図データベース21は、ロボット10に設けられていてもよい。その場合には、コンピュータ14は、ロボット10に対して、参照すべき地図データを指定する命令だけをロボット10に送ればよい。
距離画像センサ12は、赤外光またはレーザなどの光を照射し、対象物から反射した光(反射光)をCCDセンサなどの光学センサによって捉える。距離画像センサ12は、光が戻るまでの時間を画素ごとに計測することで、対象物までの実際の距離を測距する。実施例の距離画像センサ12には、ASUS(登録商標)社製のXtionと呼ばれる製品が採用されている。この種のセンサは、3次元距離計測センサ、3Dスキャナなどと呼ばれる場合もある。
距離画像センサ12はそのレーザ走査面(スキャン面)の傾斜角を変化させながら計測することができ、そのため、1回の計測によって(最小傾斜角から最大傾斜角まで変化する期間に)、対象の3次元形状を計算することができる。また、対象が停止していても、その3次元形状を計算することができる(ただし、対象が動いていれば、多様な位置関係で計測が行えるので、3次元形状の計算精度が高まる点で好ましい)。
また、スキャン面の傾斜角がこのように変化することで、計測領域が拡がると共に、複数の対象が密集している状態でも、対象群を直上ないしその近傍から計測した計測データに基づいて1つ1つの対象に容易に分離することができる。そして、様々な傾斜角で計測した計測データに基づいて、分離した1つ1つの対象の3次元形状を精度よく計算することができる。
たとえば本件出願人の出願に係る、特開2012‐215555号において詳細に説明しているように、コンピュータ14によって、距離画像センサ12を利用して移動空間200内の対象すなわち人Hの状態(たとえば位置,移動方向,3次元形状および姿勢など)をパーティクルフィルタでリアルタイムに推定することができる。そして、コンピュータ14はそのような状態推定処理の結果データ、たとえば人Hの位置,移動方向,3次元形状および姿勢などを示すデータをロボット10のCPU80(図5)へ送信する。
図3に示すメモリ16はROM、HDDおよびRAMなどを含む。ROMおよびHDDには、コンピュータ14の動作を制御するための制御プログラムが予め記憶される。また、RAMは、コンピュータ14のワークメモリやバッファメモリとして用いられる。
通信LANボード18は、たとえばDSPで構成され、コンピュータ14から与えられた送信データを無線通信モジュール22に与え、無線通信モジュール22は送信データを、ネットワーク24を介してロボット10に送信する。たとえば、送信データは、上述の結果データを含めてロボット10の自律移動に必要なデータや、案内タスクの遂行のために必要なデータおよびロボット10に指示する行動命令の信号(コマンド)などである。また、通信LANボード18は、無線通信モジュール22を介してデータを受信し、受信したデータをコンピュータ14に与える。
なお、コンピュータ14は、オペレータ(図示せず)のための、ディスプレイなどの出力装置と、マウスおよびキーボードなどの入力装置とを備えていてもよい。
ここで、図4および図5を参照して、この発明の理解に必要な範囲でロボット10の構成について説明する。ロボット10は台車30を含み、台車30の下面にはロボット10を自律移動させる2つの車輪32および1つの従輪34が設けられる。移動手段を構成するこの2つの車輪32は、同じく移動手段を構成する車輪モータ36(図5参照)によってそれぞれ独立に駆動され、台車30すなわちロボット10を前後左右の任意方向に動かすことができる。
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の距離センサ40が取り付けられる。これらの距離センサ40は、たとえば赤外線や超音波などを用いてロボット10の周囲の物体(人や障害物など)との距離を測定するものである。
センサ取り付けパネル38の上には、胴体42が直立して設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した距離センサ40がさらに設けられ、ロボット10の前方の主として人との距離を計測する。また、胴体42には、その側面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット10の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。
胴体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がそれぞれ設けられる。これらのハンド56Rおよび56Lは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット10は、ハンド56Rおよび56Lを用いて物体を把持または挟持することができる。ただし、ハンド56R、56Lの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
また、図示は省略するが、台車30の前面、肩関節48Rと肩関節48Lとを含む肩に相当する部位、上腕50R、上腕50L、前腕54R、前腕54L、ハンド56Rおよびハンド56Lには、それぞれ、接触センサ58(図3で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人Hや他の障害物の接触を検知する。したがって、ロボット10は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット10の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部62が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット10の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部62には、人の口に相当する位置に、発話手段を構成するスピーカ64が設けられる。スピーカ64は、ロボット10が、案内タスクを実行するための発話を出力するために用いられる。また、人の耳に相当する位置には、マイク66Rおよびマイク66Lが設けられる。以下、右のマイク66Rと左のマイク66Lとをまとめてマイク66ということがある。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人Hの音声を取り込む。さらに、人の目に相当する位置には、視覚手段を構成する右の眼球部68Rおよび左の眼球部68Lが設けられる。右の眼球部68Rおよび左の眼球部68Lは、それぞれ右の眼カメラ70Rおよび左の眼カメラ70Lを含む。以下、右の眼球部68Rと左の眼球部68Lとをまとめて眼球部68ということがある。また、右の眼カメラ70Rと左の眼カメラ70Lとをまとめて眼カメラ70ということがある。
眼カメラ70は、ロボット10に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット10は、この眼カメラ70からの映像信号によって、ターゲット(案内対象)が見えるかどうか、つまり後述する視覚モデル10A(図10)の中にターゲット(案内対象)が存在しているかどうかを検出(判断)することができる。
また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。たとえば、眼カメラ70は、眼球部68内に固定され、眼球部68は、眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部62の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部62の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部68ないし眼カメラ70の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ64、マイク66および眼カメラ70の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット10は、車輪32の独立2軸駆動、肩関節48の3自由度(左右で6自由度)、肘関節52の1自由度(左右で2自由度)、首関節60の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
図5はロボット10の電気的な構成を示すブロック図である。この図5を参照して、ロボット10は、CPU80を含む。CPU80は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス82を介して、メモリ84、モータ制御ボード86、センサ入力/出力ボード88および音声入力/出力ボード90に接続される。
メモリ84は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、後述の各種プログラムが予め記憶される。
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節60および眼球部68などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、CPU80からの制御データを受け、右眼球部68Rの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「右眼球モータ92」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、左眼球部68Lの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「左眼球モータ94」と示す)の回転角度を制御する。
また、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「右腕モータ96」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「左腕モータ98」と示す)の回転角度を制御する。
さらに、モータ制御ボード86は、CPU80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(図5では、まとめて「頭部モータ100」と示す)の回転角度を制御する。そして、モータ制御ボード86は、CPU80からの制御データを受け、車輪32を駆動する2つのモータ(図5では、まとめて「車輪モータ36」と示す)の回転角度を制御する。
モータ制御ボード86にはさらにハンドアクチュエータ108が結合され、モータ制御ボード86は、CPU80からの制御データを受け、ハンド56R、56Lの開閉を制御する。
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでCPU80に与える。すなわち、距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてCPU80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからCPU80に入力される。眼カメラ70からの映像信号も、同様にして、CPU80に入力される。また、上述した複数の接触センサ58(図5では、まとめて「接触センサ58」と示す)からの信号がセンサ入力/出力ボード88を介してCPU80に与えられる。発話手段を構成する音声入力/出力ボード90もまた、同様に、DSPで構成され、CPU80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してCPU80に与えられる。
また、CPU80は、バス82を介して通信LANボード102に接続される。通信LANボード102は、たとえばDSPで構成され、CPU80から与えられた送信データを無線通信モジュール104に与え、無線通信モジュール104は送信データを、ネットワーク24(図3)および通信LANボード18、無線通信モジュール22(図3)を介して遠隔操作用コンピュータ14(図3)に送信する。また、通信LANボード102は、無線通信モジュール104を介して遠隔操作用コンピュータ14からデータを受信し、受信したデータをCPU80に与える。
このような構成のロボット10は、上述したように、イベント会場などの移動空間200に配置され、人間を先導して目的地まで案内する案内サービスを提供する。
図6に示すように、メモリ84には、プログラム記憶領域110およびデータ記憶領域112が形成される。プログラム記憶領域110には、CPU80のOSなどの基本プログラムの他、案内プログラム110aが設定されている。
データ記憶領域112には、遠隔操作コンピュータ14(図3)から送られてくるデータに従って、図2のような移動空間200の地図や発話データなどを含む案内コンテンツ112a、経路候補データ112b、位置データ112cなどが記憶される。このデータ記憶領域112は、CPU80のためのワーキング領域として利用され、さらには、図示しないが、CPU80による案内プログラム92aの実行に必要なフラグやタイマ(カウンタ)などが形成される。
なお、以下には、ロボット10のCPU80が案内プログラム110aや案内コンテンツリスト112a、経路候補データ112bなどに従って自律的に案内タスクを実行する実施例について説明する。
ロボット10が案内サービスを開始する際には、先ず、コンピュータ14(図1)によって、案内サービスの内容を規定する案内タスクが指定される。この場合、ロボット10のCPU80は、先に説明したように、コンピュータ14から、その実行処理に必要なデータ、たとえばロボット12の現在位置や、人H(図1)の位置や属性を示すデータ、案内コンテンツリストのデータを受け取り、それらをデータ記憶領域112に記憶する。ロボット10のCPU80はデータ記憶領域112に記憶したデータに基づいて図7および図8に示す動作を実行する。
上述の案内タスクが設定されると、図7のステップS1において、ロボット10のCPU80は、図6のデータ記憶領域112から案内コンテンツリストList_contを取得する。この案内コンテンツList_contには、目標地点を示した地図データなどが含まれており、移動経路設定手段を構成するステップS3で、プロセサ62は、コンピュータ14から取得するロボット10の現在地点から、その地図データが示す目標地点までの経路P_giuideを計算する。このステップS3のサブルーチンが図8に示される。
なお、図7および図8のフロー図に示すルーチンは、所定時間たとえば100msecごとに実行される、ということを予め指摘しておく。
図8のステップS31では、CPU80は、案内コンテンツリストList_contから、案内タスクを実行するに必要な発話時間T_utterを計算する。ただし、このときの案内タスクのための発話コンテンツは、図3の発話コンテンツデータベース20から読み出して遠隔操作用コンピュータ14から送信され、データ記憶領域112に案内コンテンツリストList_contとして記憶されている。
発話時間T_utterは、案内コンテンツリストList_contに含まれる各発話コンテンツを発話するに必要な時間に発話コンテンツの数を掛けることによって計算できる。この発話時間T_utterは、ロボット10のツアーガイド時に必要な発話時間である。
ステップS31では、出力すべき移動経路P_guideをクリアしておく。
そして、ステップS33で、CPU80は、ロボット10の現在位置から目標地点204(図9)までの全移動経路を計算し、距離の短い順に、経路候補P_candidateとして、データ記憶領域112に記憶する。
案内コンテンツリストList_contに含まれる地図データには、図9に示すように、ロボット10が移動(通過)可能な多数のノード202が予め設定される。他方、ロボット10には、たとえば眼カメラ70によって形成される、たとえば図10に示すような扇形の視覚モデル10Aが固有に設定されていて、この視覚モデル10Aによって、ターゲット(目標地点)204(図9)がロボット10の視覚に入るかどうか判断することで、移動経路Pを計算することができる。
たとえば図11に示す最短距離の移動経路を移動する場合には、ロボット10が移動中にターゲット(案内先)204を見ることができる時間t_visibleは比較的短い。ロボット10が直線的に移動するので、視覚モデル10A内にターゲット204を捉える時間が短いからである。これに対して、図12に示す例では、ターゲット204に直進するのではなく、ターゲット204の前方のノード202を、一旦別のサブゴール206として設定し、そのサブコール206を経由してターゲット204に向かうような経路を設定する。この場合、ターゲット可視時間t_visibleが図11の場合に比べてかなり長くなる。つまり、図12のように、ロボット10の視覚モデル10Aの範囲内にできるだけ長くターゲットを補足できるように、遠回りまたは迂回経路を設定する(detour planning)ことによって、ターゲット204を見ながら案内発話を完了できる移動経路を選択する。
なお、可視時間t_visibleは、ロボット10の現在位置と、それぞれ地図データから既知であるターゲット204の位置および障害物の位置の位置、そして視覚モデル10Aから計算することができる。視覚モデル10Aは、図10の例では扇形の中心角は一例として60°に設定されているが、このような視覚モデル10Aの形状やサイズはロボット10に固有に変更可能である。
上述のように、図12の例では、たとえばロボット10がターゲット204の前方にサブゴール206を設定することによって迂回経路を計算した。
このようにして、全移動経路計算手段を構成するステップS33で、図9に示す経路P1、P2、P3が計算される。この経路P1、P2、P3を、距離の短い順、図9の例ではたとえばP2、P1、P3の順で、経路候補Candidate_pathとして、データ記憶領域112に記憶する。
そして、ステップS35で、CPU80は、経路候補Candidate_pathに含まれるすべての経路P_iについて、ロボット10が移動しながら連続で案内できる時間T_guide,iを計算する。
時間T_guide,iは、そのターゲット(目標地点)までの発話可能時間を意味し、ステップS37では、時間T_guide,iがステップS31の発話時間T_utter以上の長さの全ての移動経路について、順番iの最も小さい移動経路をP_guideに設定する。つまり、必要な発話時間T_utterより長い連続発話可能時間T_guideを持ちかつ移動距離が最も短い経路をP_guideとして設定する。図9の例でいえば、経路候補P2およびP3の連続発話可能時間T_guideが必要発話時間T_utterより長いと仮定する。一方で、経路候補P2およびP3の移動距離を比べると、候補P2のほうが短い。したがって、図9の例においては、最適経路設定手段を構成するステップS37で、経路候補P2を経路P_guideとして設定する。
ついで、ステップS39で、CPU80は、経路P_guideとして既に移動経路が設定されているかどうか判断する。“YES”なら、その設定されている経路P_guideを出力して、図7のステップS5にリターンする。
ステップS39で“NO”と判断したとき、つまり、経路P_guideにまだ移動経路が設定されていないときは、必要発話時間T_utter以上の発話時間を持つ移動経路が存在しないことを意味する。その場合には、ステップS43で、CPU80は、発話必要時間T_utterと発話可能時間T_guide,iの差(T_utter−T_guide,i)が最も小さくなる移動経路候補Piのうち、移動距離が最も短い経路、つまり、番号が一番小さい移動経路を経路P_guideとして設定し、ステップS45で当該経路P_guideを出力して、図7のステップS5にリターンする。
このようにして、図8の処理によれば、案内(ツアーガイド)のために必要な発話時間T_utterが確保できてしかも移動距離が最短の移動経路つまり移動時間が最も短い移動経路P_guideが設定できる。
ステップS3でこのような経路P_guideを設定した後、ステップS5で、ロボット10のCPU80は、案内コンテンツリストList_content内に設定されている発話コンテンツがすべて発話されたかどうか判断する。たとえば発話コンテンツに番号を付しておき、発話の都度カウンタ(図示せず)をインクリメントし、ステップS5でその最後の発話コンテンツ番号とカウンタのカウント値とを比較することによって、全ての発話コンテンツを発話したかどうか判断することができる。
“YES”ならそのまま終了するが、“NO”なら、次のステップS7に進み、CPU80は、ターゲット204に到着するまでに案内コンテンツリストList_content内に設定されている発話コンテンツがすべて発話可能かどうか判断する。このステップS7では、残りの発話コンテンツの個数と各発話時間によって「残発話時間」を計算し、それが経路の残り移動時間(ただし、第1速度、たとえば最高速度たとえばVmax=1.1m/sで移動したときの残移動時間)より短いかどうか判断すればよい。
“YES”なら、次のステップS9以降で、ロボット10の移動速度として第1速度、たとえば人の早歩きと同程度の移動速度たとえばV=1.1m/sを設定する。つまり、判断手段として機能するステップS7によってすべての発話コンテンツを発話できると判断したときの案内ロボットの移動速度を、人の早歩きと同程度、たとえば1.1m/s程度に設定するので、たとえ、案内ロボットの最高速度が人の歩行速度よりずっと早い場合でも、安全である。
ステップS7で“NO”と判断したとき、つまり、残移動時間内にすべての発話ができないときには、ステップS11において、エラー処理として、ロボット10の移動速度として第2速度を設定する。この第2速度は、第1速度より減速した移動速度である。ただし、どの程度減速した第2速度に設定すべきかは、残発話時間(すべての案内発話を完了できる時間)に基づいて計算すればよい。つまり、第2速度は、目標地点に到着するまでに全ての発話コンテンツを出力できる最高速度ということができる。
ステップS9またはステップS11の後、ステップS13では、CPU80は、設定した移動経路P_guideを通りかつ人H(図1)を回避する、移動速度Vと回頭速度Wを設定する。ただし、人Hの刻々の位置は、図1の遠隔操作用コンピュータ14からの受信データから取得できる。そして、移動速度Vはできるだけ最高速度に近づけるよう計算する。
ステップS13では、DWA(Dynamic Window Approach)を適用する。このDWA法は、現在の位置情報と速度情報、地図に示した障害物の位置情報、およびゴール(目標地点)の位置情報から、ロボットの運動モデルに則した制御入力(次の時刻に入力すべき制御入力)を計算する。つまり、DWA法は、現在のロボットの速度とロボットの運動モデルから次の時刻までにロボットの制御入力の範囲(Dynamic Window)を計算し、その範囲内の制御入力をサンプリングして、事前に決めた評価関数が最大になる制御入力を計算するアルゴリズムである。
次のステップS15で、CPU80は、ロボット10の現在位置からターゲットが見えるかどうか判断する。つまり、図10に示す視覚モデル10Aの範囲内にターゲットが見えるかどうか判断する。これは、地図データに登録されたターゲットの位置および形状データ、ロボット10の現在位置およびロボット10の視覚モデル10Aの範囲データから簡単に判断することができる。
このステップS15で“YES”と判断したときは、ステップS17で、案内コンテンツリストList_contentから適宜の発話コンテンツを選択する。しかしながら、“NO”の場合には、その発話コンテンツは発話できないので、ステップS19で、発話Utterをクリアする。
そして、ステップS21で、CPU80は、ステップS13で計算した速度V、回頭速度Wおよび発話Utterを、出力する。つまり、図2のモータ制御ボード86を通して移動手段を構成する車輪モータ36を制御するとともに、発話コンテンツを音声入/出力ボード90を通して発話手段を構成するスピーカ64から出力させる。
このように、この実施例では、ステップS3すなわち図8において、発話可能時間が長くかつ移動距離の短い移動経路P(図9)を経路P_guideを選択し、ステップS7で、ターゲットに到着するまでに発話が完了するかを判断し、完了すると判断したときにはロボット10の最大速度で移動させ、完了しないと判断したときでも、ロボット10を停止させることなく、減速して移動させるようにした。したがって、今までの案内ロボットではロボットが停止したときの子供達の割り込みによる破綻が生じたが、この実施例によればそのような破綻を回避できる。
発明者等の実験では、実施例のように、多少遠回りしても、周囲の人を避けて移動速度の低下を防ぎ、移動しながら案内発話を実行するようにした場合、ツアーガイドの成功率は、従来方法の場合には20回中2回であったものが、19回中10回と0.5以上となった。逆に、ツアーガイドの中断率は、従来方法の場合には20回中18回であったが、19回中9回となった。
なお、上述の実施例では、ロボット10のCPU80が遠隔操作用コンピュータ14から、その実行処理に必要なデータを取得し、ロボット10のCPU80が案内プログラム110aや案内コンテンツ112a、経路候補データ112bなどに従って自律的に案内タスクを実行したが、遠隔操作用コンピュータ14がロボット10の移動速度や移動経路を含めた指令データをロボット10に出力し、ロボット10のCPU80はその指令データに従ってモータ36、92‐102およびアクチュエータ108(図5)を制御することも可能である。この場合には、図6に示した案内プログラム110aはコンピュータ14のメモリ16に予め設定されることになる。