<第1実施例>
図1を参照して、この実施例のロボット制御システム100は、展示物Eが置かれた展示会場などの空間(環境)で利用される。展示会場の中では、人(ユーザまたは来場者)およびロボット10が任意に移動することができ、天井には複数の距離画像センサ12(12a,12b,…)が設けられている。
ロボット10は、相互作用指向のロボット(コミュニケーションロボット)でもあり、ユーザのようなコミュニケーションの対象との間で、音声を含むコミュニケーション行動を実行する機能を備えている。また、ロボット10はコミュニケーションの一環として、展示物Eについての説明(発話コンテンツ)をユーザに対して出力したり、展示会場を案内したりするサービスを行う。ロボット10は、サービスを行う上で必要であれば、展示会場内を自律的に移動したり、中央制御装置14が付与する行動命令に基づいて動作したりする。
また、実施例の空間は展示物Eが置かれた展示会場であるが、これに限らずショッピングモール、会社のフロア、博物館またはアトラクション会場などでも、ロボット制御システム100は利用可能である。
なお、図1では簡単のため、ユーザは1人しか示していないが、展示会場にはさらに多くのユーザがいてもよい。同様にロボット10も1台しか示していないが、ロボット制御システム100は2台より多くのロボット10を同時に制御することができる。
また、ロボット10は、音声に加えて、身振り手振りのような身体動作を含むコミュニケーション行動を行うこともある。
図2を参照して、ロボット制御システム100の中央制御装置14は、一定時間(たとえば、1秒)毎に距離画像センサ12a,12bによって、任意に移動するユーザの位置を検出すると共に、ユーザの向きを検出する。また、中央制御装置14は、ネットワーク1000を介してロボット10と無線通信を行い、必要であればロボット10の行動を制御する。空間の中で位置が検出されたユーザには、ユーザIDが付与される。
図3は中央制御装置14の電気的な構成を示すブロック図である。図3を参照して、中央制御装置14は、距離画像センサ12a,12bおよびプロセッサ16などを含む。プロセッサ16は、マイクロコンピュータ或いはCPUと呼ばれることもある。プロセッサ16には、先述した距離画像センサ12aおよび距離画像センサ12bに加えて、他の距離画像センサ12が接続される。なお、距離画像センサ12a,12bを区別する必要がない場合、単に「距離画像センサ12」と言う。
プロセッサ16にはメモリ18、通信LANボード20が接続されると共に、発話コンテンツデータベース(DB:Database)24も接続される。
距離画像センサ12は、赤外光またはレーザーなどの光を照射し、対象物から反射した光(反射光)をCCDセンサなどの光学センサによって捉える。距離画像センサ12は、光が戻るまでの時間を画素ごとに計測することで、対象物までの実際の距離を測距する。実施例の距離画像センサ12には、ASUS(登録商標)社製のXtionと呼ばれる製品が採用されている。なお、他の実施例では、距離画像センサ12は、Microsoft(登録商標)社製のKinect(登録商標)センサ、パナソニック(登録商標)社製の3次元距離画像センサD−IMager(登録商標)などを使用することも可能である。この種のセンサは、3次元距離計測センサ、3Dスキャナなどと呼ばれる場合もある。
プロセッサ16は、このような距離画像センサ12を通じて対象の3次元情報を取得する。距離画像センサ12からの3次元情報には、対象物の形状および対象物までの距離が含まれている。たとえば、ユーザが天井に設けられた距離画像センサ12によってセンシングされると、人を上から見た状態の頭部および両肩の形状と、頭部および両肩までの距離が3次元情報として得られる。
たとえば、空間には35個の距離画像センサ12が所定の位置(既知)に設置されており、プロセッサ16は、各々から3次元情報を取得して、3次元空間(ワールド座標系)における位置(たとえば、重心など特徴点の位置座標(x,y,z))およびユーザの向き(たとえば、頭部および両肩など特徴部位の向き)を計算することが出来る。
なお、他の実施例では、距離画像センサ12にではなく、2次元または3次元のLRFを利用して、ユーザの位置および向きが検出されてもよい。
メモリ18はROM,HDDおよびRAMを含む。ROMおよびHDDには、中央制御装置14の動作を制御するための制御プログラムが予め記憶される。また、RAMは、プロセッサ16のワークメモリやバッファメモリとして用いられる。
通信LANボード20は、たとえばDSPで構成され、プロセッサ16から与えられた送信データを無線通信装置22に与え、無線通信装置22は送信データを、ネットワーク1000を介してロボット10に送信する。たとえば、送信データは、ロボット10の自立移動に必要なデータや、サービスを行うために必要なデータおよびロボット10に指示する行動命令の信号(コマンド)などである。また、通信LANボード20は、無線通信装置22を介してデータを受信し、受信したデータをプロセッサ16に与える。
発話コンテンツDB24は、ロボット10がユーザに対して出力する発話コンテンツが記憶されている。
なお、他の実施例では、中央制御装置14は、ディスプレイなどの出力装置と、マウスおよびキーボードなどの入力装置とを備えていてもよい。
図4はこの実施例のロボット10の外観を示す正面図である。図4を参照して、ロボット10は台車40を含み、台車40の下面にはロボット10を自律移動させる2つの車輪42および1つの従輪44が設けられる。2つの車輪42は車輪モータ46(図5参照)によってそれぞれ独立に駆動され、台車40すなわちロボット10を前後左右の任意方向に動かすことができる。また、従輪44は車輪42を補助する補助輪である。したがって、ロボット10は、配置された空間内を自律制御によって移動可能である。
台車40の上には、円柱形のセンサ取り付けパネル48が設けられ、このセンサ取り付けパネル48には、多数の赤外線距離センサ50が取り付けられる。これらの赤外線距離センサ50は、センサ取り付けパネル48すなわちロボット10の周囲の物体(ユーザや障害物など)との距離を測定するものである。
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、LRFや、超音波距離センサおよびミリ波レーダなどを用いることもできる。
センサ取り付けパネル48の上には、胴体52が直立するように設けられる。また、胴体52の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ50がさらに設けられ、ロボット10の前方の主としてユーザとの距離を計測する。また、胴体52には、その側面側上端部のほぼ中央から伸びる支柱54が設けられ、支柱54の上には、全方位カメラ56が設けられる。全方位カメラ56は、ロボット10の周囲を撮影するものであり、後述する眼カメラ80とは区別される。この全方位カメラ56としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ50および全方位カメラ56の設置位置は、当該部位に限定されず適宜変更され得る。
胴体52の両側上端部(人の肩に相当する位置)には、それぞれ、肩関節58Rおよび肩関節58Lによって、上腕60Rおよび上腕60Lが設けられる。図示は省略するが、肩関節58Rおよび肩関節58Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節58Rは、直交する3軸のそれぞれの軸廻りにおいて上腕60Rの角度を制御できる。肩関節58Rの或る軸(ヨー軸)は、上腕60Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節58Lは、直交する3軸のそれぞれの軸廻りにおいて上腕60Lの角度を制御できる。肩関節58Lの或る軸(ヨー軸)は、上腕60Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
また、上腕60Rおよび上腕60Lのそれぞれの先端には、肘関節62Rおよび肘関節62Lが設けられる。図示は省略するが、肘関節62Rおよび肘関節62Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕64Rおよび前腕64Lの角度を制御できる。
前腕64Rおよび前腕64Lのそれぞれの先端には、手66Rおよび手66Lがそれぞれ設けられる。各手66には、人と同じように親指、人差し指、中指、薬指および小指が設けられている。手66の親指および人差し指の根本には指関節(図示せず)が設けられており、それぞれを独立して動かすことができる。また、中指、薬指および小指は一体成型され、親指および人差し指と同様、根元に指関節が設けられている。そして、中指、薬指および小指はまとめて動かすことが出来る。
また、手66Rおよび手66Lのそれぞれ根元には、手首が設けられる。図示は省略するが、左右の手首は、それぞれ1軸の自由度を有し、この軸(ヨー軸)の軸回りにおいて手66Rおよび手66Lの角度を制御できる。また、図示は省略するが手66Rおよび手66Lの親指、人差し指および残りの3本の指(中指、薬指および小指)の指関節は、それぞれ1自由度を有し、この軸の軸回りにおいて指の角度を制御できる。
従って、ロボット10は、親指、中指、薬指および小指が折り曲げられた指さしの状態の手66で任意の対象を指したり、手66を開いた状態で上腕60、前腕64および手66の全体を使って任意の対象を指したりすることが可能となる。ここで、実施例では、ロボット10の手66の指を使った指し方を、指さし、第1ポインティングまたはフィンガーポインティングと呼ぶことがある。また、ロボット10の手66を開いた状態で上腕60、前腕64および手66の全体を使った指し方を、第2ポインティングまたはパームポインティングと呼ぶことがある。
なお、他の実施例では、人と同じようにそれぞれの指が独立し、かつ人の指と同じ数の指関節を持つ手66が採用されてもよい。この場合、ロボット10は、指さしだけでなく、物を指で掴んだり、手話によるコミュニケーションを行ったりすることが可能となる。
また、図示は省略するが、台車40の前面、肩関節58Rと肩関節58Lとを含む肩に相当する部位、上腕60R、上腕60L、前腕64R、前腕64L、手66Rおよび手66Lには、それぞれ、接触センサ68(図5で包括的に示す)が設けられる。台車40の前面の接触センサ68は、台車40へのユーザや他の障害物の接触を検知する。したがって、ロボット10は、自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪42の駆動を停止してロボット10の移動を急停止させることができる。また、その他の接触センサ68は、当該各部位に触れたかどうかを検知する。なお、接触センサ68の設置位置は、当該部位に限定されず、適宜な位置(人の胸、腹、脇、背中および腰に相当する位置)に設けられてもよい。
胴体52の中央上部(人の首に相当する位置)には首関節70が設けられ、さらにその上には頭部72が設けられる。図示は省略するが、首関節70は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット10の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
頭部72には、人の口に相当する位置に、スピーカ74が設けられる。スピーカ74は、ロボット10が、それの周辺のユーザに対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク76Rおよびマイク76Lが設けられる。以下、右のマイク76Rと左のマイク76Lとをまとめてマイク76と言うことがある。マイク76は、周囲の音、とりわけコミュニケーションを実行する対象であるユーザの音声を取り込む。さらに、人の目に相当する位置には、眼球部78Rおよび眼球部78Lが設けられる。眼球部78Rおよび眼球部78Lは、それぞれ眼カメラ80Rおよび眼カメラ80Lを含む。以下、右の眼球部78Rと左の眼球部78Lとをまとめて眼球部78と言うことがある。また、右の眼カメラ80Rと左の眼カメラ80Lとをまとめて眼カメラ80と言うことがある。
眼カメラ80は、ロボット10に接近したユーザの顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ80は、上述した全方位カメラ56と同様のカメラを用いることができる。たとえば、眼カメラ80は、眼球部78内に固定され、眼球部78は、眼球支持部(図示せず)を介して頭部72内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部72の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部72の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部78ないし眼カメラ80の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ74、マイク76および眼カメラ80の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
このように、この実施例のロボット10は、車輪42の独立2軸駆動、肩関節58の3自由度(左右で6自由度)、肘関節62の1自由度(左右で2自由度)、手首の1自由度(左右で2自由度)、指関節の1自由度(左右の各指で6自由度)、首関節70の3自由度および眼球支持部の2自由度(左右で4自由度)の合計25自由度を有する。
図5はロボット10の電気的な構成を示すブロック図である。この図5を参照して、ロボット10は、プロセッサ90を含む。プロセッサ90は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス92を介して、メモリ94、モータ制御ボード96、センサ入力/出力ボード98、音声入力/出力ボード110および通信LANボード130に接続される。
メモリ94はROMおよびRAMを含む。ROMには、ロボット10の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサの出力(センサ情報)を検知するための検知プログラムや、外部コンピュータ(中央制御装置14)との間で必要なデータやコマンドを送受信するための通信プログラムなどが記憶される。また、RAMは、プロセッサ90のワークメモリやバッファメモリとして用いられる。
モータ制御ボード96は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード96は、プロセッサ90からの制御データを受け、右眼球部78Rの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「右眼球モータ112」と示す)の回転角度を制御する。同様に、モータ制御ボード96は、プロセッサ90からの制御データを受け、左眼球部78Lの2軸のそれぞれの角度を制御する2つのモータ(図5では、まとめて「左眼球モータ114」と示す)の回転角度を制御する。
また、モータ制御ボード96は、プロセッサ90からの制御データを受け、肩関節58Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節62Rの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「右腕モータ116」と示す)の回転角度を制御する。同様に、モータ制御ボード96は、プロセッサ90からの制御データを受け、肩関節58Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節62Lの角度を制御する1つのモータとの計4つのモータ(図5では、まとめて「左腕モータ118」と示す)の回転角度を制御する。
また、モータ制御ボード96は、プロセッサ90からの制御データを受け、右の手首の1軸の角度を制御する1つのモータと右手66Rの3つの指関節のそれぞれの角度を制御する3つのモータとの4つのモータ(図5では、まとめて「右手モータ120」と示す)の回転角度を制御する。同様に、モータ制御ボード96は、プロセッサ90からの制御データを受け、左手の手首の1軸の角度を制御する1つのモータと左手66Lの3つの指関節のそれぞれの角度を制御する3つのモータとの4つのモータ(図5では、まとめて「左手モータ122」と示す)の回転角度を制御する。
ここで、指関節の角度は、モータの回転がそのまま反映されるわけではなく、モータの回転によって動作する流体圧シリンダによって制御される。具体的には、流体圧シリンダには、動作流体を移動させるピストンが移動自在に収容されており、このピストンの位置がモータの回転によって変化する。そして、流体圧シリンダの動きに応じて指関節の角度が変化する。なお、流体圧シリンダを用いたロボットの手については、たとえば特開2013−96514号公報に詳しく説明されているので、ここでは、その公開公報を参照することによって、詳細な説明を省略する。
さらに、モータ制御ボード96は、プロセッサ90からの制御データを受け、首関節70の直交する3軸のそれぞれの角度を制御する3つのモータ(図5では、まとめて「頭部モータ124」と示す)の回転角度を制御する。
そして、モータ制御ボード96は、プロセッサ90からの制御データを受け、車輪42を駆動する2つのモータ(図5では、まとめて「車輪モータ46」と示す)の回転角度を制御する。なお、この実施例では、車輪モータ46を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ46と同様に直流モータを用いるようにしてもよい。また、ロボット10の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更されてもよい。たとえば、他の実施例では、エアアクチュエータなどが適用されてもよい。
センサ入力/出力ボード98は、モータ制御ボード96と同様に、DSPで構成され、各センサからの信号を取り込んでプロセッサ90に与える。すなわち、赤外線距離センサ50のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード98を通じてプロセッサ90に入力される。また、全方位カメラ56からの映像信号が、必要に応じてセンサ入力/出力ボード98で所定の処理を施してからプロセッサ90に入力される。眼カメラ80からの映像信号も、同様に、プロセッサ90に入力される。また、上述した複数の接触センサ68(図5では、まとめて「接触センサ68」と示す)からの信号がセンサ入力/出力ボード98を介してプロセッサ90に与えられる。
音声入力/出力ボード110もまた、同様に、DSPで構成され、プロセッサ90から与えられる音声合成データに従った音声または声がスピーカ74から出力される。また、マイク76からの音声入力が、音声入力/出力ボード110を介してプロセッサ90に与えられる。
通信LANボード130は、たとえばDSPで構成され、プロセッサ90から与えられた送信データを無線通信装置132に与え、無線通信装置132は送信データを、ネットワーク1000を介して外部コンピュータ(中央制御装置14)に送信する。また、通信LANボード130は、無線通信装置132を介してデータを受信し、受信したデータをプロセッサ90に与える。たとえば、送信データとしては、全方位カメラ56および目カメラ80によって撮影された周囲の映像データなどである。
図6は展示会場(空間)の地図である。図6を参照して、展示会場には、入り口および3つの展示物E(E1,E2,E3)が含まれる。入口にはIRIDタグのリーダが設置されている。たとえば、ユーザは自身が持つRFIDタグをリーダに読み取らせることによって、展示会場に入場可能になる。RFIDタグにはユーザIDが記憶されており、リーダはRFIDタグからユーザIDを読み取る。中央制御装置14には、リーダによって読み取られたユーザIDが送信される。そのため、中央制御装置14は、入り口で検出されたユーザの位置と受信したユーザIDとを対応付けることで、展示会場内にいる複数のユーザをそれぞれ識別することが出来る。
ここで、2つの対象点Cを含む展示物E1には、2つの説明範囲Aが対応付けられる。説明範囲A1は展示物Eの対象点C1に対応付けられており、説明範囲A2は展示物E1の対象点C2に対応付けられている。そして、各説明範囲Aは、ユーザに対して出力する発話コンテンツ(説明する内容)が対応している。なお、説明範囲Aは所定範囲と呼ばれることもある。
図7を参照して、発話コンテンツDB24は、たとえばテーブルで構成されており、そのテーブルは番号、対象点、説明範囲、内容(ポインティングあり)および内容(ポインティングなし)の列を含む。そして、1つの発話コンテンツが1つの行で示される。たとえば、番号の欄に「1」が記憶されている発話コンテンツでは、対象点の欄には「C1」が記憶され、説明範囲の欄には「A1」が記憶される。そして、内容(ポインティングあり)の欄には「これは充電用のプラグです」が記憶され、内容(ポインティングなし)の欄には「このバイクの後ろ側の荷台の上の所に伸びている黒いコードは充電用のコンセントです」が記憶される。また、番号の欄に「2」が記憶されている発話コンテンツでは、対象点の欄には「C1」が記憶され、説明範囲の欄には「A2」が記憶される。そして、内容(ポインティングあり)の欄には「これはモータです」が記憶され、内容(ポインティングなし)の欄には「足元にある銀色のものはモータです」が記憶される。ここで、実施例では、内容(ポインティングあり)の欄に記憶されている情報は第1発話コンテンツと言い、内容(ポインティングなし)の欄に記憶されている情報は第2発話コンテンツと言う。
たとえば、ユーザの位置と向きが検出されたときに、ユーザの位置が説明範囲A1に含まれており、かつユーザの向きが対象点C1の方に向くと、展示物E(対象点C1)と対応する発話コンテンツが発話コンテンツDB24から読み出される。また、略同時に、ロボット10をユーザの近傍に移動させるための動作命令が、ロボット10に与えられる。次に、ユーザと展示物(対象点C)との間を遮る人などの障害物が無いか、つまりロボット10の手66のよる指さしによって展示物Eを指すことが出来るかが判定される。そして、展示物Eを指さしによって指すことが出来れば、「1」番の発話コンテンツのうち、指さしを伴う第1発話コンテンツが選択され、ロボット10に送信される。その結果、ロボット10は受信した第1発話コンテンツに従って、展示物Eの説明を行う。具体的には、ロボット10は、ユーザに近づいてから、ユーザに対して挨拶をした後に、手66で対象点Cの方を指しながら、「これは充電用のプラグです」と展示物Eについて説明(発話)する。なお、発話コンテンツなどに基づく音声は、ロボット10のスピーカ74から出力される。
一方、展示物Eを指さしによって指すことが出来なければ、「1」番の発話コンテンツのうち、指さしを伴わない第2発話コンテンツが選択されロボット10に送信される。その結果、ロボット10は受信した第2発話コンテンツに従って、展示物Eの説明を行う。具体的には、ロボット10は、ユーザに近づき挨拶をしてから、指さしを行わずに、「このバイクの後ろ側の荷台の上の所に伸びている黒いコードは充電用のコンセントです」と展示物Eについて説明(発話)する。そして、発話コンテンツの出力が終了すると、ロボット10は別れの挨拶をユーザに行った後、別の場所または別のユーザの所へ移動する。
このように、第1実施例では、ロボット10の体を効率的に利用して、ポインティングを交えた発話コンテンツの提供が出来る。特に、ポインティングによって指すことが出来ない場合と出来る場合とに応じて、発話コンテンツを変化させることが出来るため、ユーザはロボット10の説明を理解しやすくなる。
なお、ユーザが説明範囲Aの外に出た場合は、発話コンテンツの出力中であっても、出力を停止する。つまり、ユーザが展示物Eに興味を持っていないと考えられるため、発話コンテンツの提供を停止することが出来る。また、図示は省略しているが、展示物E2および展示物E3に対しても、対象点C、説明範囲Aおよび発話コンテンツが対応付けられる。
上述では第1実施例の特徴を概説した。以下では、図8に示すメモリマップ、図9に示すフロー図を用いて、第1実施例について詳細に説明する。
図8は図2に示す中央制御装置14におけるメモリ18のメモリマップの一例を示す図解図である。図8で示すように、メモリ18はプログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、中央制御装置14を動作させるためのプログラムとして、発話コンテンツの出力を制御する出力制御プログラム310などが記憶される。なお、図示は省略するが、中央制御装置14を動作させるためのプログラムには、距離画像センサ12からユーザの位置および向きを検出するためのプログラムなども含まれる。
データ記憶領域304には、ユーザ情報バッファ330が設けられると共に、地図データ332が記憶される。たとえば、ユーザ情報バッファ330には、3次元情報に基づいて計算された、ユーザの位置およびユーザの向きがユーザ情報として一時的に記憶される。
地図データ332には、空間に置かれている展示物Eおよびその展示物Eと対応する所定範囲の情報(座標)が含まれる。なお、図示は省略するが、データ記憶領域304には、様々な計算の結果を一時的に格納するバッファや、中央制御装置14の動作に必要な他のカウンタやフラグなども設けられる。
中央制御装置14のプロセッサ16は、Linux(登録商標)ベースのOSや、その他のOSの制御下で、図9に示す出力制御処理などを含む、複数のタスクを処理する。
図9は出力制御処理のフロー図である。中央制御装置14の電源がオンにされると、中央制御装置14のプロセッサ16は、ステップS1で終了命令か否かを判断する。たとえば、中央制御装置14を終了させる操作が管理人によって行われたかが判断される。ステップS1で“NO”であれば、つまり終了命令を受け付けていなければ、ステップS3でプロセッサ16は、ユーザ情報を取得する。つまり、ユーザ情報バッファ330から、ユーザの位置および向きが読み出される。
続いて、ステップS5でプロセッサ16は、ユーザが説明範囲Aに入っているか否かを判断する。たとえば、プロセッサ16は、地図データ332を読み出して、ユーザの位置が展示物E1の説明範囲A1に含まれているかを判断する。ステップS5で“NO”であれば、たとえばユーザの位置が入口の周囲であれば、プロセッサ16はステップS1の処理に戻る。また、ステップS5で“YES”であれば、たとえばユーザの位置が説明範囲A1に含まれていれば、ステップS7でプロセッサ16は、ユーザが対象点Cの方を向いているか否かを判断する。たとえば、ユーザが説明範囲A1にいる場合は、ユーザの向きが展示物E1の対象点C1の方に向いているかが判断される。なお、ユーザの向きが対象点Cを向いているかを判断する場合、±5度は許容範囲とされる。つまり、ステップS7では、ユーザの向きに対して±5度の許容範囲に対象点Cが含まれているかが判断される。ステップS7で“NO”であれば、つまりユーザが対象点Cの方を向いていなければ、プロセッサ16はステップS1の処理に戻る。
また、ステップS7で“YES”であれば、つまりユーザが対象点Cの方を向いていれば、ステップS9でプロセッサ16は、ロボット10をユーザの近傍へ移動させる。つまり、プロセッサ16は、ユーザの位置を示す座標と、その座標への移動命令をロボット10に対して出す。その結果、ロボット10はユーザに近づくことになる。
続いて、ステップS11でプロセッサ16は、ポインティング可能か否かを判定する。つまり、プロセッサ16は、展示物E(対象点C)とユーザのとの間に障害物が存在しないかを判定する。なお、ステップS11の処理を実行するプロセッサ16は判定手段として機能する。ステップS11で“NO”であれば、つまり指さしによって展示物Eを指すことが不可能であれば、プロセッサ16はステップS15の処理に進む。一方、ステップS11で“YES”であれば、つまり指さしによって展示物を指すことが可能であれば、ステップS13でプロセッサ16は、展示物Eをポインティングする。つまり、中央制御装置14は、対象点Cを指す指さしの動作命令をロボット10に対して送信する。そして、ロボット10は指さしの動作命令を受けて、対象点Cを指す指さしを行う。なお、ステップS13の処理を実行するプロセッサ16はポインティング手段として機能する。
続いて、ステップS15でプロセッサ16は、発話コンテンツを選択する。たとえば、ユーザが説明範囲A1にいる場合、説明範囲A1と対応する「1」番の発話コンテンツが読み出される。そして、指さしによって展示物Eを指すことが出来るか否かの判定結果に基づいて、第1発話コンテンツまたは第2発話コンテンツが選択される。なお、ステップS15の処理を実行するプロセッサ16は選択手段として機能する。続いて、ステップS17でプロセッサ16は、発話コンテンツを出力する。つまり、ステップS15の処理で選択された発話コンテンツをロボット10に送信する。たとえば、説明範囲A1と対応する「1」番の発話コンテンツにおける第1発話コンテンツがロボット10に送信された場合、ロボット10は展示物Eの対象点C1を指さしで指した状態で、「これはモータです」と発話する。なお、ステップS17の処理を実行するプロセッサ16は出力手段として機能する。
続いて、ステップS19でプロセッサ16は、出力終了か否かを判断する。つまり、プロセッサ16は、発話コンテンツの出力が終了したことがロボット10から通知されたかを判断する。ステップS19で“NO”であれば、つまり発話コンテンツの出力が続いていれば、プロセッサ16はステップS19の処理を繰り返して実行する。一方、ステップS19で“YES”であれば、つまり発話コンテンツの出力が終了すると、プロセッサ16はステップS1の処理に戻る。
そして、ステップS1で“YES”であれば、たとえばユーザが中央制御装置14を終了させる操作を行うと、プロセッサ16は出力制御処理を終了する。
<第2実施例>
第2実施例では、展示物Eの一部を指すフィンガーポインティング(指さし)に加えて、展示物Eの全体を指すパームポインティングを、ロボット10が行う。また、発話コンテンツのそれぞれの優先度を算出し、優先度が高い発話コンテンツが出力される。なお、第2実施例のロボット制御システム100は、第1実施例と略同じであるため、システムの構成、ロボット10の外観および電気的な構成、中央制御装置14の電気的な構成などの説明は省略する。
図10を参照して、第2実施例では、説明範囲A1,A2に加えて、対象点C1を中心とする楕円形の説明範囲A3が設けられる。また、説明範囲A3の中には、展示物E、説明範囲A1および説明範囲A2が含まれ、説明範囲A3は2つの説明範囲Aよりも広い。そして、説明範囲A3には、展示物Eの全体を指すパームポインティングが発話コンテンツに対応付けられている。
図11を参照して、第2実施例の発話コンテンツDB24では、ポインティング種類および優先度の列がさらに加えられる。たとえば、フィンガーポインティングと対応する「1」および「2」番の発話コンテンツにおいて、ポインティング種類の欄には「フィンガーポインティング」が記憶される。また、「1」番の発話コンテンツの優先度の欄には「60」が記憶され、「2」番の発話コンテンツの優先度の欄には「50」が記憶される。そして、パームポインティングと対応する「3」番の発話コンテンツにおいて、ポインティング種類の欄には「パームポインティング」が記憶され、「優先度」の欄には「30」が記憶される。また、「3」番の発話コンテンツの内容(ポインティングあり)の欄には「これは電動バイクです」が記憶され、内容(ポインティングなし)の欄には「今ご覧いただいているのは電動バイクです」が記憶される。実施例の優先度とは、複数の発話コンテンツのうち、現在のユーザの状況に適切な発話コンテンツを選択するための値である。たとえば、2つの説明範囲Aが重なっている場合、優先度を計算することで、ユーザの状況に適切な発話コンテンツを選択することが出来る。そして、この優先度は、ポインティングの可能/不可能の判定結果に基づいて算出される。
ここで、フィンガーポインティングの可能/不可能の判定結果は、上述したように、説明範囲Aに入っているかの範囲判定と、ユーザと対象点Cとの間に障害物が存在するかの障害物判定とによって得られる。また、パームポインティングの可能/不可能の判定結果は、説明範囲Aに入っているかの範囲判定によって得られる。ただし、パームポインティングは、展示物Eの全体を指すため、障害物が存在するかの判定は行わない。
図12を参照して、ポインティングの可能/不可能の判定結果が記憶される判定テーブルには、発話コンテンツの番号、判定結果および判定結果に基づく優先度が記憶される列が設けられる。たとえば、説明範囲A1にユーザが入った状態で、ユーザと対象点C1との間に障害物がある場合、「1」番の発話コンテンツの判定結果は「ポインティング不可能」となる。また、この状態のユーザは説明範囲A2に入っていないため「2」番の発話コンテンツの判定結果も「ポインティング不可能」となる。ただし、説明範囲A3は説明範囲A1を包含しているため、「3」番の発話コンテンツの判定結果は「ポインティング可能」となる。
次に、フィンガーポインティングの判定結果が「ポインティング不可能」である場合、発話コンテンツの優先度から第1所定値(たとえば、「40」)が減算される。また、パームポインティングの判定結果が「ポインティング不可能」である場合は、優先度から第2所定値(たとえば、「5」)が減算される。ただし、「ポインティング可能」である場合は、優先度はそのままの値となる。したがって、図12に示す判定テーブルでは、「1」および「2」番の発話コンテンツでは、元の優先度から第1所定値が減算され、計算後の優先度は「20」および「10」が記憶される。また、「3」番の発話コンテンツでは「ポインティング可能」と判定されているため、優先度は減算されずに「30」が記憶される。
判定テーブルに優先度が記憶されると、優先度が最も高い発話コンテンツが選択される。そして、発話コンテンツが選択されると、ポインティングの判定結果に基づいて発話コンテンツが出力される。また、判定テーブルにおいて、ポインティング可能と記憶されているかが判断され、ポインティング可能と記憶されていれば、ロボット10は展示物Eをポインティングする。
たとえば、図12に示すように優先度が記憶されている場合は、「3」番の発話コンテンツが選択され、ロボット10は、パームポインティングによって展示物Eの全体を指すと共に、「これは電動バイクです」という説明を行う。ただし、「3」番の発話コンテンツにおいてポインティング不可能と判定されていた場合、ロボット10は、パームポインティングを行わずに、「今ご覧い頂いているのは電動バイクです」と説明する。
また、判定テーブルにおいて「1」番の発話コンテンツの優先度が最も高く、かつポインティング可能と判定されている場合は、「1」番の発話コンテンツが選択され、ロボット10はフィンガーポインティングによって展示物Eの一部を指すと共に、「これは充電用のプラグです」と言う説明を行う。なお、「1」番の発話コンテンツにおいてポインティング不可能と判定されていた場合については、第1実施例で詳細に説明したため、ここでの説明は省略する。
このように、ポインティングが可能を判定する範囲を説明範囲Aとしたため、ユーザは説明範囲A内では、ポインティングを交えた説明を受けることが出来る。また、優先度に基づいて発話コンテンツを出力するようにしたため、発話コンテンツを選択する処理を単純にすることが出来る。また、ロボット制御システムの管理者は、発話コンテンツの優先度を、フィンガーポインティングが優先して行われるように設定することが可能である。たとえばこのように設定した場合、通常はフィンガーポインティングによって展示物Eの一部が指された状態で説明が行われ、フィンガーポインティングによって展示物Eの一部を指すことが出来ない場合は、パームポインティングによって展示物Eの全体が指された状態で説明が行われる。つまり、ロボット10は、展示物Eの周囲の状況に合わせて、適切な説明を行うことが出来る。
上述では第2実施例の特徴を概説した。以下では、図13に示すメモリマップおよび図14−図16に示すフロー図を用いて、第2実施例について詳細に説明する。
図13は、第2実施例の中央制御装置14におけるメモリ18のメモリマップの一例を示す図解図である。第2実施例のプログラム記憶領域302には、第1実施例のプログラムに加えて、フィンガーポインティングが可能か不可能かを判定するための第1ポインティング判定プログラム312およびパームポインティングが可能か不可能かを判定するための第2ポインティングプログラム314が記憶される。
第2実施例のデータ記憶領域304には、第1実施例のバッファやデータに加えて、判定バッファ334が設定される。判定バッファ334には、図12に示すような判定テーブルが一時的に記憶される。
第2実施例の中央制御装置14のプロセッサ16は、Linux(登録商標)ベースのOSや、その他のOSの制御下で、図14に示す出力制御処理、図15に示す第1ポインティング判定処理および図16に示す第2ポインティング判定処理などを含む、複数のタスクを処理する。
図14は、第2実施例の出力制御処理のフロー図である。なお、第2実施例の出力制御処理では、ステップS1,S3,S11,S15,S19は第1実施例と略同じであるため、詳細な説明は省略する。
中央制御装置14の電源がオンにされると、プロセッサ16は、ステップS1で終了命令か否かを判断する。ステップS1で“NO”であれば、つまり終了命令でなければ、ステップS3でプロセッサ16は、ユーザ情報を取得する。
続いて、プロセッサ16は、ステップS31で第1ポインティング判定処理を実行し、ステップS33で第2ポインティング判定処理を実行する。つまり、各発話コンテンツについて、展示物Eをポインティングによって指すことが可能か不可能かを判定する。また、第1ポインティング判定処理および第2ポインティング判定処理については、図15および図16を用いて詳細に説明するため、ここでの説明は省略する。なお、ステップS31,S33の処理を実行するプロセッサ16は判定処理として機能する。
続いて、ステップS35でプロセッサ16は、発話コンテンツの優先度を計算する。つまり、2つのポインティング判定処理が実行されると、判定結果が判定テーブルに記憶された状態となるため、その判定結果に基づいて、各発話コンテンツの優先度が計算される。続いて、ステップS37でプロセッサ16は、優先度が最も高い発話コンテンツを選択する。つまり、ユーザおよび展示物Eの現在の周囲の状況において、出力するのに適切な発話コンテンツが選択される。続いて、ステップS9でプロセッサ16は、ロボット10をユーザの近傍に移動させる。なお、ステップS35の処理を実行するプロセッサ16は計算手段として機能する。また、ステップS37の処理を実行するプロセッサ16は選択手段として機能する。
続いて、ステップS39でプロセッサ16は、ポインティングが可能か否かを判断する。つまり、選択された発話コンテンツにおいて、判定テーブルの判定結果として「ポインティング可能」が記憶されているかが判断される。ステップS39で“NO”であれば、つまり選択された発話コンテンツの判定結果が「ポインティング不可能」であれば、プロセッサ16はステップS41の処理に進む。また、ステップS39で“YES”であれば、つまり選択された発話コンテンツの判定結果が「ポインティング可能」であれば、プロセッサ16はステップS13で展示物Eをポインティングする。
続いて、ステップS41でプロセッサ16は、ポインティングの判定結果に基づいて発話コンテンツを出力する。たとえば、選択された発話コンテンツでポインティング可能と判定されていれば、選択された発話コンテンツにおいて第1発話コンテンツ(たとえば、「これはモータです」)がロボット10に送信される。一方、ポインティング不可能と判定されていれば、第2発話コンテンツ(たとえば、「足元にある銀色の者はモータです」)がロボット10に送信される。そして、ロボット10は、受信した発話コンテンツを出力する。なお、ステップS41の処理を実行するプロセッサ16は出力部として機能する。
続いて、ステップS19でプロセッサ16は、終了か否かを判断する。プロセッサ16は、ステップS19で“NO”であればステップS19の処理を繰り返して実行し、“YES”であればステップS1の処理に戻る。そして、ステップS1で“YES”であれば、つまり終了命令が出されると、プロセッサ16は出力制御処理を終了する。
図15は第1ポインティング判定処理のフロー図である。図14の出力制御処理でステップS31の処理が実行されると、プロセッサ16はステップS51で変数iを初期化する。変数iは複数の発話コンテンツの内の1つを指定するための変数である。また、初期化された変数iの値は「1」となる。
続いて、ステップS53でプロセッサ16は、i番目の発話コンテンツのポインティング種類は第1ポインティングか否かを判断する。たとえば、iが「1」であれば、プロセッサ16は、「1」番目の発話コンテンツのポインティング種類がフィンガーポインティングかを判断する。ステップS53で“NO”であれば、つまり「i」番目の発話コンテンツのポインティング種類がパームポインティングであれば、プロセッサ16はステップS63の処理に進む。つまり、選択されている発話コンテンツについては、フィンガーポインティングが可能か不可能かを判断する必要が無いため、プロセッサ16はステップS63の処理に進む。
一方、ステップS53で“YES”であれば、つまり「i」番目の発話コンテンツのポインティング種類がフィンガーポインティングであれば、ステップS55でプロセッサ16は、ユーザが説明範囲Aに入っているか否かを判定する。つまり、プロセッサ16は、「i」番目の発話コンテンツの説明範囲Aの中に、ユーザの位置が含まれているかを判定する。
また、ステップS55で“YES”であれば、つまりユーザが説明範囲Aに入っていれば、ステップS57でプロセッサ16は、ユーザと対象点Cとの間を遮る障害物がないか否かを判定する。つまり、空間内の障害物(人および他のロボットなど)の位置が、ユーザと対象点Cとの間に存在しているかが判定される。なお、ステップS57の処理を実行するプロセッサ16は障害物判定手段として機能する。
また、ステップS57の処理で“YES”であれば、つまりユーザと対象点との間に障害物がなければ、ステップS59でプロセッサ16は、i番目の発話コンテンツの判定結果としてポインティング可能を設定する。たとえば、iが「1」であり、ユーザが説明範囲A1にいて、かつユーザと対象点C1との間に障害物がなければ、判定テーブルにおいて、「1」番目の発話コンテンツに対応する判定結果の欄に「ポインティング可能」と記憶される。なお、ステップS59の処理を実行するプロセッサ16は第1設定手段として機能する。
また、ステップS55で“NO”またはステップS57で“NO”であれば、たとえばユーザが説明範囲Aの中に入っていないか、ユーザと対象点Cとの間に障害物があれば、ステップS61でプロセッサ16は、i番目の発話コンテンツの判定結果としてポインティング不可能を設定する。たとえば、iが「1」であり、ユーザが説明範囲A1いなければ、判定テーブルにおいて、「1」番目の発話コンテンツに対応する判定結果の欄に「ポインティング不可能」と記憶される。
続いて、ステップS63でプロセッサ16は、変数iをインクリメントする。つまり、次の発話コンテンツを指定するために、変数iの値が1つ大きくなる。続いて、ステップS65でプロセッサ16は、変数iは最大値より大きいか否かを判断する。つまり、全ての発話コンテンツについて、フィンガーポインティングが可能か不可能かの判定が終わったかが判断される。ステップS65で“NO”であれば、全ての発話コンテンツに対して判定が終わっていなければ、プロセッサ16はステップS53の処理に戻る。一方、ステップS65で“YES”であれば、つまり全ての発話コンテンツに対して判定が終わっていれば、プロセッサ16は第1ポインティング判定処理を終了して、出力制御処理に戻る。
図16は第2ポインティング判定処理のフロー図である。なお、ステップS81,S85,S91,S93の処理は、第1ポインティング判定処理のステップS51,S55,S63,S65の処理と略同じであるため詳細な説明は省略する。
図14の出力制御処理でステップS33の処理が実行されると、プロセッサ16はステップS81で変数iを初期化する。
続いて、ステップS83でプロセッサ16はi番目の発話コンテンツのポインティング種類は第2ポインティングか否かを判断する。つまり、選択されている発話コンテンツがと対応するポインティングがパームポインティングであるかが判断される。ステップS83で“NO”であれば、つまり選択された発話コンテンツのポインティング種類がフィンガーポインティングであれば、プロセッサ16はステップS91の処理に進む。つまり、選択されている発話コンテンツについては、パームポインティングが可能か不可能かを判定する必要が無いため、プロセッサ16はステップS91の処理に進む。
続いて、ステップS83で“YES”であれば、つまり選択されている発話コンテンツのポインティング種類がパームポインティングであれば、ステップS85でプロセッサ16は、ユーザが発明範囲Aに入っているか否かを判定する。ステップS85で“YES”であれば、つまりユーザが説明範囲Aに入っていれば、ステップS87でプロセッサ16は、i番目の発話コンテンツの判定結果としてポインティング可能が設定される。たとえば、iが「3」であり、ユーザが説明範囲A3に入っていれば、「3」番目の発話コンテンツと対応する判定テーブルの判定結果の欄には「ポインティング可能」が記憶される。なお、ステップS87の処理を実行するプロセッサ16は第2設定手段として機能する。
一方、ステップS85で“NO”であれば、つまりユーザが説明範囲Aに入っていなければ、ステップS89でプロセッサ16は、i番目の発話コンテンツの判定結果としてポインティング不可能を設定する。たとえば、iが「3」であれば、ユーザが説明範囲A3に入っていなければ、「3」番目の発話コンテンツと対応する判定テーブルの判定結果の欄には「ポインティング不可能」が記憶される。
続いて、プロセッサ16は、ステップS91で変数iをインクリメントして、ステップS93で変数iが最大値よりも大きいかを判断する。ステップS93で“NO”であれば、プロセッサ16はステップS83の処理に戻る。一方、ステップS93で“YES”であれば、プロセッサ16は第2ポインティング判定処理を終了して、出力制御処理に戻る。
なお、ステップS55,S85の処理を実行するプロセッサ16は範囲判定手段として機能する。また、ステップS59,S87の処理を実行するプロセッサ16は設定手段として機能する。
また、展示物Eに対するポインティングは、ロボット10の顔の動きや、視線などによって行われてもよい。また、ロボット10は、レーザポインタや指し棒などのポインティング手段を備えていてもよい。また、他の実施例では、第1ポインティングおよび第2ポインティングに加えて、指示する範囲を指などで指定する第3ポインティングをロボット10が行うようにしてもよい。
また、その他の実施例では、ロボット10が中央制御装置14を有し、ロボット10が距離画像センサ12から無線接続または有線接続によって3次元情報を直接取得できてもよい。この場合、ロボット10単独で、ユーザに出力する発話コンテンツを決めて、出力することが出来る。たとえば、第1実施例の出力制御処理を実行するロボット10のプロセッ90は、ステップS9の処理ではユーザ情報に基づいてユーザの近傍に移動し、ステップS13の処理では展示物Eを指さしによって指し、ステップS17の処理では自身で選択した発話コンテンツを出力する。また、第2実施例の出力制御処理を実行するロボット10のプロセッサ90は、ステップS9およびステップS13の処理は第1実施例と同様に実行し、ステップS41の処理では優先度が最も高い発話コンテンツから、判定テーブルに基づいて、第1発話コンテンツまたは第2発話コンテンツを選んだうえで、選んだ発話コンテンツを出力する。
また、さらにその他の実施例では、ロボット10がユーザまたはユーザの入場を検出したときに、ロボット10が発話コンテンツを出力するために、中央制御装置14に対して出力制御処理の実行命令を出してもよい。このように、ロボット10の自律行動をサポートするために、中央制御装置14がロボット10によって利用されてもよい。
また、他の実施例では、ロボット10がディスプレイを有している場合は、発話コンテンツは音声だけでなく、映像を利用して出力されてもよい。たとえば、発話コンテンツを出力するロボット10は、自身のディスプレイに映像を表示しながら、展示物Eの説明を行う。
また、ロボット10は、実施例のような車輪移動型のロボットだけでなく、2足歩行型のロボットであってもよい。
また、空間に入ったユーザは、RFIDタグではなく、顔認識によって識別されてもよい。
また、本実施例で説明した複数のプログラムは、データ配信用のサーバのHDDに記憶され、ネットワークを介して本実施例と同等の構成のシステムに配信されてもよい。また、CD, DVD, BD (Blu-ray(登録商標) Disc)などの光学ディスク、USBメモリおよびメモリカードなどの記憶媒体にこれらのプログラムを記憶させた状態で、その記憶媒体が販売または配布されてもよい。そして、上記したサーバや記憶媒体などを通じてダウンロードされた、上記複数のプログラムが、本実施例と同等の構成のシステムに適用された場合、本実施例と同等の効果が得られる。
そして、本明細書中で挙げた、具体的な数値は、いずれも単なる一例であり、製品の仕様変更などに応じて適宜変更可能である。また、本明細書中で挙げた、具体的な発話コンテンツは、展示会場や展示物の種類に応じて適宜変更可能である。