(57)【特許請求の範囲】
【請求項１】
コミニュケーションロボットのように人と共存する環境で活動するロボットの仮想シミュレーション空間における行動を、ロボット行動決定プログラムに従ってシミュレーションする、ロボットの行動シミュレーション装置であって、
前記仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部、
前記仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部、
ロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース、
前記人エージェント位置提示部で提示される人エージェントの位置データに従って、前記仮想シミュレーション空間内において１または複数の人エージェントを生成する人エージェント生成部、
ロボット位置提示部で提示されるロボットの位置データに従った前記仮想シミュレーション空間における現在のロボットの位置、ならびに前記人エージェント位置提示部が提示する位置データに従った前記仮想シミュレーション空間における前記人エージェントの位置および前記対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの当該人エージェントの行動を決定する人エージェント行動決定部、および
前記仮想シミュレーション空間内における次のステップでの前記ロボットの行動を前記ロボット行動決定プログラムに従って決定するロボット行動シミュレーション部を備える、ロボットの行動シミュレーション装置。
【請求項２】
前記仮想シミュレーション空間に投入する人エージェントのための大人、子供、男性、女性などの人のパターンを予め登録した人パターンデータベースをさらに備え、前記人エージェント生成部は、前記人パターンデータベースから与えられた人パターンの人エージェントを生成する、請求項１記載のロボットの行動シミュレーション装置。
【請求項３】
物理的な法則に従って各エージェントの行動を実現する物理エンジン部をさらに備える、請求項１または２記載のロボットの行動シミュレーション装置。
【請求項４】
前記物理エンジン部による各エージェントの行動に従って、前記仮想シミュレーション空間内に配置されているセンサのシミュレーションを実行してセンサ値を保存するセンサ出力シミュレーション部をさらに備える、請求項３記載のロボットの行動シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はロボットの行動シミュレーション装置に関し、特にたとえば、人共存環境において活動するロボットの行動シミュレーション装置に関する。
【背景技術】
【０００２】
従来のこの種のシミュレーション装置の一例が特許文献１に開示されている。この特許文献１には、人体の位置に応じて立ち入り禁止空間を設定できるようなロボットシミュレータが開示されている。
【０００３】
さらに、非特許文献１‐３でも、この種の従来のシミュレーション装置が開示されている。これらの非特許文献１‐３のシミュレーション装置では、シミュレータ内の人をキーボードで操作して動かす。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開2009-90400号［B25J 19/06、 13/08 G05B 19/4061、 19/18］
【非特許文献１】G. Echeverria and N. Lassabe and A. Degroote and S. Lemaignan、 Modular OpenRobots Simulation Engine: MORSE、 Proceedings of the IEEE ICRA、 2011.
【非特許文献２】G. Echeverria、 et al.、 Simulating Complex Robotic Scenarios with MORSE、 SIMPAR2012、 pp. 197-208、 2012.
【非特許文献３】https://www.openrobots.org/wiki/morse/
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１および非特許文献１‐３のいずれのロボットシミュレータにおいても、人は「ヒトの形をしたモノ」として扱われているだけで、人の行動は考慮されていないので、コミュニケーションロボットのような人共存環境で活動するロボットのシミュレーション装置としては不十分であった。
【０００６】
それゆえに、この発明の主たる目的は、新規な、ロボットの行動シミュレーション装置を提供することである。
【０００７】
この発明の他の目的は、人の行動を考慮する、ロボットの行動シミュレーション装置を提供することである。
【課題を解決するための手段】
【０００８】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００９】
第１の発明は、コミニュケーションロボットのように人と共存する環境で活動するロボットの仮想シミュレーション空間における行動を、ロボット行動決定プログラムに従ってシミュレーションする、ロボットの行動シミュレーション装置であって、前記仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部、前記仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部、ロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース、前記人エージェント位置提示部で提示される人エージェントの位置データに従って、前記仮想シミュレーション空間内において１または複数の人エージェントを生成する人エージェント生成部、ロボット位置提示部で提示されるロボットの位置データに従った前記仮想シミュレーション空間における現在のロボットの位置、ならびに前記人エージェント位置提示部が提示する位置データに従った前記仮想シミュレーション空間における前記人エージェントの位置および前記対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの当該人エージェントの行動を決定する人エージェント行動決定部、および前記仮想シミュレーション空間内における次のステップでの前記ロボットの行動を前記ロボット行動決定プログラムに従って決定するロボット行動シミュレーション部を備える、ロボットの行動シミュレーション装置である。
【００１０】
第１の発明では、シミュレーション装置（１０：実施例において相当する部分を例示する参照符号。以下、同様。）は、人と共存する環境で活動するたとえばコミニュケーションロボットのようなロボットの仮想シミュレーション空間（２００）における行動を、ロボット行動決定プログラムに従ってシミュレーションする。シミュレーション装置（１０）は、仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部（２０）、仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部（２０）、およびロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース（１６）を備える。人エージェント生成部（１８、Ｓ３）を含み、この人エージェント生成部は、人エージェント位置提示部で提示される人エージェントの位置データに従って、仮想シミュレーション空間（２００）内において１または複数の人エージェントを生成する。人エージェント行動決定部（１８、Ｓ５）は、ロボット位置提示部で提示されるロボットの位置データに従った仮想シミュレーション空間における現在のロボットの位置、ならびに人エージェント位置提示部が提示する位置データに従った仮想シミュレーション空間における人エージェントの位置および対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの人エージェントの行動を決定する。ロボット行動シミュレーション部（２２、Ｓ７）は、ロボット行動決定プログラム（２４）に従って、仮想シミュレーション空間内における次のステップでのロボットの行動を決定する。そして、ロボット行動決定プログラム（２４）は、必要な場合、シミュレーション装置（１０）によるシミュレーション結果に従って手直しされる。
【００１１】
第１の発明によれば、仮想シミュレーション空間において、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、ロボットの行動決定プログラムの開発を効率的に行うことができる。
【００１２】
第２の発明は、第１の発明に従属し、仮想シミュレーション空間に投入する人エージェントのための大人、子供、男性、女性などの人のパターンを予め登録した人パターンデータベースをさらに備え、人エージェント生成部は、人パターンデータベースから与えられた人パターンの人エージェントを生成する、ロボットの行動シミュレーション装置である。
【００１３】
第２の発明では、人パターンデータベース（１４）は、人の形状、すなわち大人、子供、男性、女性などの人の形状（パターン）を予め設定している。このデータベース（１４）から与えられる人パターンに従って、人エージェントを仮想シミュレーション空間内に生成する。
【００１４】
第２の発明によれば、仮想シミュレーション空間内に多様なパターンの人エージェントを投入することができる。
【００１８】
第３の発明は、第１または第２の発明に従属し、物理的な法則に従って各エージェントの行動を実現する物理エンジン部をさらに備える、ロボットの行動シミュレーション装置である。
【００１９】
第３の発明では、物理エンジン部（２６）によって、物理的な法則、あるいは物理的な力に従って各エージェントの行動を実現する。たとえば、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりの行動を実現し、干渉が生じれば、物理学法則（力学法則）に従って各エージェントの実際の動きが処理される。
【００２０】
第３の発明によれば、矛盾しないシミュレーション結果が得られる。
第４の発明は、第３の発明に従属し、物理エンジン部による各エージェントの行動に従って、仮想シミュレーション空間に配置されているセンサのシミュレーションを実行してセンサ値を保存するセンサ出力シミュレーション部をさらに備える、ロボットの行動シミュレーション装置である。
第４の発明では、センサ出力シミュレーション部（２８）は、仮想シミュレーション空間（２００）に配置されている画像センサや距離センサのシミュレーションを実行する。
【発明の効果】
【００２１】
この発明によれば、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットの行動決定プログラムの開発を効率的に行うことができる。
【００２２】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２３】
【図１】図１はこの発明の一実施例のシミュレーション装置を示すブロック図である。
【図２】図２はこの発明が適用されるロボットの一例を示す図解図である。
【図３】図３は図２に示すロボットの電気的な構成を示すブロック図である。
【図４】図４は人エージェントのロボットに対する行動モデルの一例を示す図解図である。
【図５】図５は人エージェントのロボットに対する行動モデルの他の例を示す図解図である。
【図６】図６は図１実施例における仮想シミュレーション環境の一例を示す図解図である。
【図７】図７は人エージェントの移動の一例を示す図解図である。
【図８】図８は図１実施例のシミュレーション装置の動作を示すフロー図である。
【図９】図９は図１実施例のシミュレーション装置においてロボットの性能を計測するときの動作の一例を示すフロー図である。
【発明を実施するための形態】
【００２４】
図１を参照して、この実施例のシミュレーション装置１０は、ＡＳＩＣ（特定用途向け集積回路）またはＤＳＰ（ディジタル信号プロセサ）のようなハードウエアで構成されるが、汎用コンピュータに組み込まれるプログラムのようなソフトウエアであってもよい。図１はそのようなシミュレーション装置１０の機能ブロック図である。
【００２５】
このシミュレーション装置１０が対象としているロボットは、たとえば図２および図３に示すコミュニケーションロボットのように、人との共存環境で活動するロボット１２である。このようなロボット１２は環境の中に存在する人の行動に影響を受けるので、この実施例のシミュレーション装置１０は、ロボット１２の行動をロボットの行動決定プログラムに従ってシミュレーションする際に、人の行動をもシミュレーションすることによって、安全なロボット１２のためのロボットの行動決定プログラムの開発を支援する。
【００２６】
ここで、シミュレーション装置１０の説明に先立って、図２および図３を参照して、ロボット１２の構成について説明する。ロボット１２は台車３０を含み、台車３０の下面にはロボット１２を自律移動させる２つの車輪３２および１つの従輪３４が設けられる。２つの車輪３２は車輪モータ３６（図３参照）によってそれぞれ独立に駆動され、台車３０すなわちロボット１２を前後左右の任意方向に動かすことができる。
【００２７】
台車３０の上には、円柱形のセンサ取り付けパネル３８が設けられ、このセンサ取り付けパネル３８には、多数の距離センサ４０が取り付けられる。これらの距離センサ４０は、たとえば赤外線や超音波などを用いてロボット１２の周囲の物体（人や障害物など）との距離を測定するものである。
【００２８】
センサ取り付けパネル３８の上には、胴体４２が直立して設けられる。また、胴体４２の前方中央上部（人の胸に相当する位置）には、上述した距離センサ４０がさらに設けられ、ロボット１２の前方の主として人との距離を計測する。また、胴体４２には、その背面側上端部のほぼ中央から伸びる支柱４４が設けられ、支柱４４の上には、全方位カメラ４６が設けられる。全方位カメラ４６は、ロボット１２の周囲を撮影するものであり、後述する眼カメラ７０とは区別される。この全方位カメラ４６としては、たとえばＣＣＤやＣＭＯＳのような固体撮像素子を用いるカメラを採用することができる。
【００２９】
胴体４２の両側面上端部（人の肩に相当する位置）には、それぞれ、肩関節４８Ｒおよび肩関節４８Ｌによって、上腕５０Ｒおよび上腕５０Ｌが設けられる。図示は省略するが、肩関節４８Ｒおよび肩関節４８Ｌは、それぞれ、直交する３軸の自由度を有する。すなわち、肩関節４８Ｒは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｒの角度を制御できる。肩関節４８Ｒの或る軸（ヨー軸）は、上腕５０Ｒの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節４８Ｌは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｌの角度を制御できる。肩関節４８Ｌの或る軸（ヨー軸）は、上腕５０Ｌの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。
【００３０】
また、上腕５０Ｒおよび上腕５０Ｌのそれぞれの先端には、肘関節５２Ｒおよび肘関節５２Ｌが設けられる。図示は省略するが、肘関節５２Ｒおよび肘関節５２Ｌは、それぞれ１軸の自由度を有し、この軸（ピッチ軸）の軸回りにおいて前腕５４Ｒおよび前腕５４Ｌの角度を制御できる。
【００３１】
前腕５４Ｒおよび前腕５４Ｌのそれぞれの先端には、人の手に相当するハンド５６Ｒおよびハンド５６Ｌがそれぞれ設けられる。これらのハンド５６Ｒおよび５６Ｌは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット１２は、ハンド５６Ｒおよび５６Ｌを用いて物体を把持または挟持することができる。ただし、ハンド５６Ｒ、５６Ｌの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
【００３２】
また、図示は省略するが、台車３０の前面、肩関節４８Ｒと肩関節４８Ｌとを含む肩に相当する部位、上腕５０Ｒ、上腕５０Ｌ、前腕５４Ｒ、前腕５４Ｌ、ハンド５６Ｒおよびハンド５６Ｌには、それぞれ、接触センサ５８（図３で包括的に示す）が設けられる。台車３０の前面の接触センサ５８は、台車３０への人間１６や他の障害物の接触を検知する。したがって、ロボット１２は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪３２の駆動を停止してロボット１２の移動を急停止させることができる。また、その他の接触センサ５８は、当該各部位に触れたかどうかを検知する。
【００３３】
胴体４２の中央上部（人の首に相当する位置）には首関節６０が設けられ、さらにその上には頭部６２が設けられる。図示は省略するが、首関節６０は、３軸の自由度を有し、３軸の各軸廻りに角度制御可能である。或る軸（ヨー軸）はロボット１２の真上（鉛直上向き）に向かう軸であり、他の２軸（ピッチ軸、ロール軸）は、それぞれ、それと異なる方向で直交する軸である。
【００３４】
頭部６２には、人の口に相当する位置に、スピーカ６４が設けられる。スピーカ６４は、ロボット１２が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク６６Ｒおよびマイク６６Ｌが設けられる。以下、右のマイク６６Ｒと左のマイク６６Ｌとをまとめてマイク６６ということがある。マイク６６は、周囲の音、とりわけコミュニケーションを実行する対象である人の音声を取り込む。さらに、人の目に相当する位置には、右の眼球部６８Ｒおよび左の眼球部６８Ｌが設けられる。右の眼球部６８Ｒおよび左の眼球部６８Ｌは、それぞれ右の眼カメラ７０Ｒおよび左の眼カメラ７０Ｌを含む。以下、右の眼球部６８Ｒと左の眼球部６８Ｌとをまとめて眼球部６８ということがある。また、右の眼カメラ７０Ｒと左の眼カメラ７０Ｌとをまとめて眼カメラ７０ということがある。
【００３５】
眼カメラ７０は、ロボット１２に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット１２は、この眼カメラ７０からの映像信号によって、人の左右両目のそれぞれの視線方向（ベクトル）を検出する。その視線検出方法は具体的には、２つのカメラを用いる方法と、１つのカメラを用いる方法があるが、ここではその詳細は重要ではないので、詳しい説明は省略する。
【００３６】
また、眼カメラ７０は、上述した全方位カメラ４６と同様のカメラを用いることができる。たとえば、眼カメラ７０は、眼球部６８内に固定され、眼球部６８は、眼球支持部（図示せず）を介して頭部６２内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、２軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この２軸の一方は、頭部６２の上に向かう方向の軸（ヨー軸）であり、他方は、一方の軸に直交しかつ頭部６２の正面側（顔）が向く方向に直行する方向の軸（ピッチ軸）である。眼球支持部がこの２軸の各軸廻りに回転されることによって、眼球部６８ないし眼カメラ７０の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ６４、マイク６６および眼カメラ７０の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【００３７】
このように、この実施例のロボット１２は、車輪３２の独立２軸駆動、肩関節４８の３自由度（左右で６自由度）、肘関節５２の１自由度（左右で２自由度）、首関節６０の３自由度および眼球支持部の２自由度（左右で４自由度）の合計１７自由度を有する。
【００３８】
図３はロボット１２の電気的な構成を示すブロック図である。この図３を参照して、ロボット１２は、ＣＰＵ８０を含む。ＣＰＵ８０は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス８２を介して、メモリ８４、モータ制御ボード８６、センサ入力／出力ボード８８および音声入力／出力ボード９０に接続される。
【００３９】
メモリ８４は、図示は省略をするが、ＲＯＭ、ＨＤＤおよびＲＡＭを含む。ＲＯＭおよびＨＤＤには、ロボット１２の動作を制御するためのロボットの行動決定プログラムが予め記憶される。ただし、このシミュレーション装置１０においてシミュレーションするロボット１２には、この種のロボットの行動決定プログラムは未だインストールされていない。つまり、シミュレーション装置１０は、このようなロボット１２のための最適の行動決定プログラムを開発、設計するための支援装置である。
【００４０】
モータ制御ボード８６は、たとえばＤＳＰで構成され、各腕や首関節６０および眼球部６８などの各軸モータの駆動を制御する。すなわち、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、右眼球部６８Ｒの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「右眼球モータ９２」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、左眼球部６８Ｌの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「左眼球モータ９４」と示す）の回転角度を制御する。
【００４１】
また、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、肩関節４８Ｒの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｒの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「右腕モータ９６」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、肩関節４８Ｌの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｌの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「左腕モータ９８」と示す）の回転角度を制御する。
【００４２】
さらに、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、首関節６０の直交する３軸のそれぞれの角度を制御する３つのモータ（図３では、まとめて「頭部モータ１００」と示す）の回転角度を制御する。そして、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、車輪３２を駆動する２つのモータ（図３では、まとめて「車輪モータ３６」と示す）の回転角度を制御する。
【００４３】
モータ制御ボード８６にはさらにハンドアクチュエータ１０８が結合され、モータ制御ボード８６は、ＣＰＵ８０からの制御データを受け、ハンド５６Ｒ、５６Ｌの開閉を制御する。
【００４４】
センサ入力／出力ボード８８は、モータ制御ボード８６と同様に、ＤＳＰで構成され、各センサからの信号を取り込んでＣＰＵ８０に与える。すなわち、距離センサ４０のそれぞれからの反射時間に関するデータがこのセンサ入力／出力ボード８８を通じてＣＰＵ８０に入力される。また、全方位カメラ４６からの映像信号が、必要に応じてセンサ入力／出力ボード８８で所定の処理を施してからＣＰＵ８０に入力される。眼カメラ７０からの映像信号も、同様にして、ＣＰＵ８０に入力される。また、上述した複数の接触センサ５８（図３では、まとめて「接触センサ５８」と示す）からの信号がセンサ入力／出力ボード８８を介してＣＰＵ８０に与えられる。音声入力／出力ボード９０もまた、同様に、ＤＳＰで構成され、ＣＰＵ８０から与えられる音声合成データに従った音声または声がスピーカ６４から出力される。また、マイク６６からの音声入力が、音声入力／出力ボード９０を介してＣＰＵ８０に与えられる。
【００４５】
また、ＣＰＵ８０は、バス８２を介して通信ＬＡＮボード１０２に接続される。通信ＬＡＮボード１０２は、たとえばＤＳＰで構成され、ＣＰＵ８０から与えられた送信データを無線通信装置１０４に与え、無線通信装置１０４は送信データを、ネットワークを介してサーバ（図示せず）等に送信する。また、通信ＬＡＮボード１０２は、無線通信装置１０４を介してデータを受信し、受信したデータをＣＰＵ８０に与える。
【００４６】
図１に戻って、シミュレーション装置１０は、２つのデータベース１４および１６を含む。人パターンデータベース１６は、シミュレーション装置１０の仮想シミュレーション空間に投入する人エージェントのための、人の形状、すなわち大人、子供、男性、女性などの人の形状（パターン）を予め設定しているデータベースである。この４つの基本パターンに対してさらに、リュックサックを背負っている人の形状（パターン）や、カートを引いているときの人の形状などを追加することもできる。
【００４７】
なお、この人パターンデータベース１４では、曜日や時間ごとに異なるデータセットを保持しておき、曜日や時間を指定してシミュレーションできるようにしてもよい。そうすれば、ある時間帯にロボットを動かすとどうなるのかなど、いろいろシミュレーションすることができる。
【００４８】
対ロボット行動パターンデータベース１６は、環境において人がロボットに対して行う行動パターンを予め設定しているデータベースである。つまり、人が実空間で実際に執り得る対ロボット行動パターンを登録している。
【００４９】
たとえば、ロボットが自分の視野に入ったときに人が執る行動パターンとして、図４および図５に示す、ロボットと対話するパターンと、ロボットを観察するパターンを、一例として事前に登録している。
【００５０】
図４は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopを隔てて停止し、ロボット１２と対話する行動パターンを図解している。
【００５１】
図５は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopよりもやや大きい観察距離Ｄobserveを隔てて停止し、ロボット１２を観察する行動パターンを図解している。
【００５２】
対ロボット行動パターンデータベース１６には、このような行動パターンを含む多くの対ロボット行動パターンが、事前登録されている。シミュレーション装置１０では、人エージェントがその登録しているどれかの行動パターンに従って行動するようにシミュレーションする。
【００５３】
たとえば図４、図５のような標準的な人々の対ロボット行動パターンだけでなく、変わった行動、難しい行動をする人エージェントの対ロボット行動パターンのデータをこのデータベース１６に設定していてもよい。たとえば、ロボットの反応をためす（ぐるぐる回ってみるとか）、いじめる（しつこい行動）、ずっと話し込む、ロボットを見ると走ってくる、など、ありがちな難しい対ロボット行動パターンを設定して、適当な頻度でそのように特別な行動パターンに従ったシミュレーションをするようにしてもよい。
【００５４】
仮想シミュレーション空間内において、エージェントの行動は、他のエージェントから影響されて変化するが（たとえば、人同士がぶつからないように避ける、ロボットを見たら近づく、など）。
【００５５】
たとえば図６に示すように、２人の人ｉおよびｊは相互に影響して次のステップでの移動位置を決定する場合がある、人エージェントｉは本来はｄi,jの方向へ移動するのであるが、人エージェントｊが人エージェントｉに対して角度θi,jの方向に速度ｖi,jで移動しようとしているため、人エージェントｉは、結局ｄ’i,jの方向へ移動することになる。
【００５６】
さらに、人エージェントの対ロボット行動は、人エージェント同士のやりとりによって変化するように設定してもよい。たとえば、人エージェントがロボットと話していると他の人エージェントがロボットに近づく確率が増える、先行する人エージェントがロボットに影響されると（チラシをもらう、店に誘導される、など）、後続の人エージェントも影響される確率が増える、などのようにこのデータベース１６に設定することも可能である。
【００５７】
人シミュレーション部１８は、人パターンデータベース１４から受け取った人パターンのデータ、対ロボット行動パターンデータベース１６から受け取った行動パターンのデータおよび環境情報提示部２０から受け取った仮想シミュレーション空間の地図データ、人やロボットの位置等のデータに従って、仮想シミュレーション空間（仮想空間）での人エージェントの次のステップでの行動をシミュレーションする。
【００５８】
環境情報提示部２０は、このように、ロボットの行動をシミュレーションするべき、仮想シミュレーション空間（仮想空間）を示す地図データ、その仮想シミュレーション空間内の人エージェントやロボットの位置など、ロボットの行動をシミュレーションするのに必要なデータを提示する。
【００５９】
図７は上述のような仮想シミュレーション環境（空間）の一例を示していて、仮想空間２００は、入口２０４および出口２０６を設けた壁２０２で仕切られた閉空間を想定している。ただし、柱２０８や机２１０などは、障害物として地図データに書き込まれている。さらに、図７ではこの仮想空間を２次元で描いているが、実際には、３次元画像としてディスプレイ２９（図１）で表示される。
【００６０】
ロボット行動シミュレーション部２２は、環境情報提示部２０から受け取ったロボットの位置等のデータに基づいて、ロボットの行動決定プログラム２４に従ったロボットの次のステップでの行動をシミュレーションする。ここで、行動決定プログラム２４は、図３で示すセンサ４０、４６、５８、７０などのセンサ入力に応じて、各モータ３６、９２‐１０６ならびにアクチュエータ１０８を制御してロボットの行動を決定するプログラムである。一例として、ロボットの行動決定プログラム２４は、たとえば図７において、入口２０４からロボット１２が仮想空間２００に入り、出口２０６から出るまで、移動経路２１２に従って移動させるように設定されている。なお、図７において参照符号２１４が、シミュレーションのためにこの仮想空間２００に投入された人エージェントを示す。
【００６１】
物理エンジン２６は、物理的な力や法則などに基づいて、各エージェントがどのような移動経路をたどるかを計算する。詳しくいうと、物理エンジン２６は、各エージェント（ロボット含む）が意図した動きを、仮想シミュレーション空間２００（図７）で実施する処理を実行する。このとき、他の障害物、構造物や他のエージェントとの干渉が何もなければ、意図したとおりの動きを生成する。しかしながら、干渉がある場合、物理学法則（力学法則）に従って、各エージェントの実際の動きを処理する。
【００６２】
センサ出力シミュレーション部２８は、仮想シミュレーション空間２００内に配置されているカメラのような画像センサやレーザレンジファインダ（ＬＲＦ）のような距離センサのシミュレーションを実行する。カメラ画像の場合には、カメラ視点からの光学的な計算を行い、カメラ視点毎の画像情報を生成する。距離センサの場合には、レーザによるスキャンを模して、センサから各方位へ距離計測を行い、その結果をセンサ値として保存する。
【００６３】
シミュレーション装置１０には、ディスプレイ２９が設けられていて、このディスプレイ２９によって、たとえば図７に示すような仮想シミュレーション空間の画像が表示される。
【００６４】
図８を参照して、図１に示すシミュレーション装置１０は、まず、最初のステップＳ１において、一例として図７に示す移動経路２１２上を移動するように設定されている、ロボットの行動決定プログラム２４を読み込むとともに、環境情報提示部２０から、ロボット１２の行動をシミュレーションする図７のような仮想シミュレーション空間の地図データ、仮想シミュレーション空間に投入する人エージェントの生成に関するパラメータ（出現頻度、移動経路、グループ人数、大人子供や男女の比率、背の高さなど）および各エージェント（ロボット１２を含む）の位置データなどを読み込む。
【００６５】
次のステップＳ３では、環境情報提示部２０が提示する人エージェントの生成に関する上述のパラメータおよび人パターンデータベース１４からの人パターンのデータに従って、仮想シミュレーション空間内で、１または複数の人エージェントを生成して配置する。人パターンデータベース１４には多様な内パターンを登録していて、そこから与えられる人パターンに基づいて仮想シミュレーション空間内に人エージェントを生成するので、多様な人エージェントを生成することができる。
【００６６】
なお、このステップＳ３での人エージェントの生成に関するパラメータは、実際の観測データに基づいて設定されるようにしてもよい。
【００６７】
ステップＳ５で人シミュレーション部１６は、環境情報提示部２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、そして対ロボット行動パターンデータベース１６が示す対ロボット行動パターンに基づいて、人エージェントの次のステップでの行動を決定する。なお、ここでのロボット１２への働きかけの行動の種類や頻度は、実際の観測データに基づいて設定するようにしてもよい。対ロボット行動パターンデータベース１６に登録している行動パターンは、人が実空間で実際に執り得る対ロボット行動パターンであり、このような行動パターンに従ってシミュレーションするので、シミュレーションの結果が妥当な結果となる。
【００６８】
ステップＳ７でロボット行動シミュレーション部２２は、環境情報提示部２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、ロボットの行動決定プログラム２４に従って、次のステップでのロボット１２の行動を決定する。
【００６９】
具体的には、ステップＳ７では、ロボット１２がたとえば搬送ロボットや搭乗型ロボットのように目的地に向かうことが主目的のロボットである場合、他の人々の現在の位置や移動速度から、なるべく他人の移動に干渉しないような移動経路を計算する処理を行う。また、ロボット１２が人々にサービス提供することが目的のロボットである場合には、たとえば、ロボットに興味がありそうな人に接近するために、単純な場合では、ロボットの近傍で止まっている人を選択して、その人に向かって進む、また、人々が集まりがちな場所を選んでそのような場所でやってくる人を待ち受ける、また、混雑を起こさないように過度に人々が通る場所には近づかないようにする、といった処理を行ったりする。
【００７０】
このステップＳ７の場合、ステップＳ５での人の次のステップでの行動を決定しているので、それを考慮して、上述の処理を実行する。そのため、人と共存する実空間で活動するロボットの行動決定プログラムの当否を、仮想シミュレーション空間内で判断することができる。
【００７１】
その後ステップＳ９で、物理エンジン２６において、各エージェントの行動を実現する。詳しくいうと、ステップＳ９では、先に説明したように、各エージェント（ロボット含む）が意図した動きを仮想空間２００内で実施する処理が行われ、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりに動く。たとえば、エージェントが１歩前進しようとした場合、その意図通り、エージェントが１歩前進する。
【００７２】
ところが、干渉がある場合、物理学法則（力学法則）に従って各エージェントの実際の動きが処理される。単純な場合、たとえば壁に向かって進もうとすると、壁に衝突し、それ以上前進できないし、一定の反発係数に従って反力を受ける。エージェント同士の衝突の場合、前進する動きと、反力による移動が重なり合って、たとえば、単純な例を考えると、前進中にたとえば側方から衝突すると、斜め前方へと実際には動くことになる。
【００７３】
次のステップＳ１１で、センサシミュレーション部２４は、上述したように、環境情報やセンサの出力情報などを更新する。
【００７４】
そして、ステップＳ１３でシミュレーションを終了するかどうか判断し、シミュレーションを続行するなら再び先のステップＳ３に戻り、たとえば行動決定プログラムが終了するなどした場合“ＹＥＳ”が判断され、シミュレーションを終了する。
【００７５】
この実施例においては、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションしているので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットの行動決定プログラム２４の開発を効率的に行うことができる。
【００７６】
なお、上述のステップＳ５における人エージェントのロボットへの働きかけ行動は、ロボットの見かけや振る舞いに依存する。その依存関係を、あらかじめデータベースとして持っていてもよい（例：色が白いと、人が２倍の頻度で近づいてくる、など）。また、このパラメータをエディットして、もしロボットが人を２倍呼び寄せるようになったら（つまり、そのようにデザインを変えることができたら）何が起きるのか（売り上げ増えるか、混みすぎるか、安全か、など）、シミュレーションできてもよい。 
【００７７】
さらに、上述の実施例ではロボット１２は１台だけが仮想シミュレーション空間内を移動するものとしたが、ロボットは複数台が同時に動いてもよい。この場合各ロボットはそれぞれ異なる行動決定プログラム２４に従って行動する。 
【００７８】
上述の実施例では、各人エージェントはステップＳ３およびＳ５で人シミュレーション部１８が自動的に次のステップでの位置を決定したが、多数の人エージェントがシミュレーションされる場合、その中の１人（または複数人）は、シミュレーション装置１０を操作する者が操作して動かしてもよい。また、実際の環境で人が動いた結果として起きるセンサデータを（合成して）入力するようにしてもよい。たとえば、自分が動いた結果を仮想シミュレーションにデバッグすることができる。
【００７９】
なお、上述のシミュレーション装置１０におけるセンサ出力シミュレーション部２８でシミュレーションしたセンサデータの一部、たとえば、ユーザの発話する音声などは、実際に計測したセンサデータを再生して再現してもよい。
【００８０】
この実施例のシミュレーション装置１０では、仮想シミュレーション空間内の人エージェントについては、予め人の形状（パターン）モデルを登録した人パターンデータベース１４を設け、そこから、大人子供、男女、などの属性が合うデータを仮想シミュレーション空間内に投入したが、このデータを、たとえば、リュックを持っている人が多い、冬服夏服、などのように、実際に計測した人のデータに置き換えるような仕組みを設けてもよい。
【００８１】
シミュレーション装置１０の出力として、様々なパターン認識に役立つデータ（センサデータとラベル付きのデータ）を出力するようにしてもよい。たとえば、ロボットの距離画像センサの視野内に人がいるかどうか、大量のデータを出力すると、ディープラーニング（Deep learning）等の手法により、人を検出する認識プログラムを実現可能である。
【００８２】
なお、上述の実施例ではロボットの行動決定プログラム２４は、仮想シミュレーション空間内におけるロボット１２の一連の行動をすべてプログラムしているものとして説明したが、一連の行動の一部のみをシミュレーションする場合にも、このシミュレーション装置１０は使える。つまり、ロボットの行動決定プログラム２４は、ロボットの少なくとも１つの行動を決定するプログラムであればよく、このシミュレーション装置１０はそのようなプログラムの良否を判断する指標を与えてくれる。
【００８３】
実施例のシミュレーション装置１０は、ロボット１２の性能を計測するために利用することもできる。図９には一例として、ロボット１２が仮想シミュレーション空間２００のＡ地点（たとえば、入口２０２）からＢ地点（たとえば、出口２０４）（いずれも図７参照）まで移動する際の移動効率（平均速度）を計測する（１０００回シミュレーションして平均を求める場合、Ｎ＝１０００）場合のシミュレーション装置１０の動作を示している。
【００８４】
図９の最初のステップＳ２１では、シミュレーション回数をカウントする変数ｎおよび合計速度を示すｖ_ｓｕｍを初期化する（n=0、v_sum=0）。ただし、シミュレーション回数は別途設けたカウンタ（図示せず）でカウントされ、合計速度ｖ_ｓｕｍは、別途設けたバッファ（図示せず）で累積される。
【００８５】
そして、次のステップＳ２３で、シミュレーション回数ｎが規定回数Ｎに達したかどうか判断する（ｎ＞Ｎ？）。
【００８６】
ステップＳ２３で“ＮＯ”ならステップＳ２５に進み、シミュレーション装置１０に初期値を設定する。現在時刻をt0と設定し、ロボット１２の位置をＡ地点（入口２０２）に設定する。そして、シミュレーション回数をインクリメントする（ｎ＝ｎ＋１）。
【００８７】
ステップＳ２７で、ロボット１２がＢ地点（出口２０４）に到達するまで、シミュレーションを実行する。
【００８８】
ステップＳ２９では、シミュレーション装置１０内でのシミュレーション終了時刻t1から、この回のシミュレーションにおけるロボット１２の移動速度v=AB/(t1-t0)を計算する。ただし、ABは地点Ａから地点Ｂまでの距離である。
【００８９】
ステップＳ３１では、バッファに合計速度ｖ_ｓｕｍを更新する（v_sum+v）。
【００９０】
そして、ステップＳ２３において、シミュレーション回数ｎが規定回数Ｎに達したと判断したら、次のステップＳ３３において、平均速度ｖ_ａｖｇを計算する（v_avg=v_sum/N）。このようにしてシミュレーションしたロボット１２の地点Ａから地点Ｂまでの移動効率（平均移動速度）は、人共存環境におけるロボット１２の安全な運用のための指標となり得る。
【００９１】
実施例のシミュレーション装置１０を用いれば、上述の平均移動速度の他に、安全に関する指標として、ロボットが人に接触してしまった回数、ロボットから一定距離以内（たとえば５０ｃｍ）に人が近づいてしまった回数、性能に関する指標として、ロボットに話しかけた人の人数や、ロボットの宣伝を聞いて来店した人の人数なども利用できる。
【００９２】
なお、このシミュレーション装置１０が行動をシミュレーションできるロボットは実施例で説明した図３および図４に示すロボット１２に限定されるものではない。他の形式、構造のコミュニケーションロボットにもこのシミュレーション装置は適用可能である。
【符号の説明】
【００９３】
１０  …シミュレーション装置
１２  …（コミュニケーション）ロボット
１４  …人パターンデータベース
１６  …対ロボット行動パターンデータベース
１８  …人シミュレーション部
２０  …ロボットの行動シミュレーション部
２２  …環境情報提示部
２４  …ロボットの行動決定プログラム
２６  …物理エンジン
２８  …センサ出力シミュレーション部
【図１】
0006793905.tif 000002
【図２】
0006793905.tif 000003
【図３】
0006793905.tif 000004
【図４】
0006793905.tif 000005
【図５】
0006793905.tif 000006
【図６】
0006793905.tif 000007
【図７】
0006793905.tif 000008
【図８】
0006793905.tif 000009
【図９】
0006793905.tif 000010