(57)【要約】      （修正有）【課題】実世界に配置したセンサシステムで利用可能なシミュレーションシステムを提供すること。【解決手段】ロボットシステムのシミュレーション装置は、人生成モジュール（１１０）によって、３Ｄモデルデータベース（１１１）から３次元形状の歩行者を生成して仮想シミュレーション空間に投入する。オブジェクティブモデル（１１６）から実行するオブジェクティブを選択するとともに、シミュレーションパラメータを決定し、オブジェクティブ毎にジェスチャをジェスチャデータベース（１１３）から選択して、オブジェクティブに設定する。移動モジュール（１１４）は、歩行者を更新する。ソーシャルフォースモデル（１１８）に従って、歩行者の位置を更新するとともに、設定されたジェスチャに従って歩行者のジェスチャを再生する。歩行者の更新に応じて、真値ラベルとノイズモデルを適用したセンサデータとを結合したデータセットを出力する。【選択図】図５
2020163509.tif 000002
【特許請求の範囲】
【請求項１】
複数の３次元距離画像センサを配置した実世界を模した仮想シミュレーション空間に人エージェントを投入する人エージェント生成手段、
前記仮想シミュレーション空間内で前記人エージェントを更新する更新手段、
人エージェントの３次元形状を指示する複数の３Ｄモデルを有する３Ｄモデルデータベース、および
前記人エージェントのオブジェクティブを有するオブジェクティブモデルデータベースを備え、
前記人エージェント生成手段は前記３Ｄモデルデータベースから選択された３Ｄモデルに従った形状の人エージェントを生成し、前記更新手段は前記オブジェクティブに従って前記人エージェントを移動させ、さらに
前記人エージェントの真値ラベルを作成する真値ラベル作成手段、
前記更新手段によって前記人エージェントが移動されるとき前記複数の３次元距離画像センサをシミュレーションしたセンタデータを取得するセンサデータ取得手段、および
前記真値ラベルと前記センサデータを結合したデータセットを出力する出力手段を備える、シミュレーションシステム。
【請求項２】
前記人エージェント生成手段は、それぞれが３Ｄモデルに従った形状を有する、異なるタイプの人エージェントを生成する、請求項1記載のシミュレーションシステム。
【請求項３】
前記人エージェントについての異なるジェスチャを設定しているジェスチャデータベースをさらに備え、
前記更新手段は、前記ジェスチャデータベースから選択したジェスチャを前記人エージェントにさせる、請求項１または２記載のシミュレーションシステム。
【請求項４】
ソーシャルフォースモデルを設定しているソーシャルフォースモデルデータベースをさらに備え、
前記更新手段は、前記ソーシャルフォースモデルに従って前記人エージェントの位置を更新する、請求項１ないし３のいずれかに記載のシミュレーションシステム。
【請求項５】
複数の３次元距離画像センサを配置した実世界を模した仮想シミュレーション空間においてシミュレーションを実行するシミュレーションシステムであって、
前記シミュレーションシステムは、人エージェントの３次元形状を指示する複数の３Ｄモデルを有する３Ｄモデルデータベース、および前記人エージェントのオブジェクティブを有するオブジェクティブモデルデータベースを備え、前記シミュレーションシステムのコンピュータを、
前記仮想シミュレーション空間に前記３Ｄモデルデータベースから選択された３Ｄモデルに従った形状の人エージェントを投入する人エージェント生成手段、
前記仮想シミュレーション空間内で前記オブジェクティブに従って前記人エージェントを移動させて前記人エージェントを更新する更新手段、
前記人エージェントの真値ラベルを作成する真値ラベル作成手段、
前記更新手段によって前記人エージェントが移動されるとき前記複数の３次元距離画像センサをシミュレーションしたセンタデータを取得するセンサデータ取得手段、および
前記真値ラベルと前記センサデータを結合したデータセットを出力する出力手段
として機能させる、シミュレーションプログラム。
【請求項６】
請求項１ないし５のいずれかの前記出力手段が出力するデータセットを学習する学習器を備える、センサキャリブレーションもしくは認識モデルの学習装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はシミュレーションシステムに関し、特にたとえば、コミュニケーションロボットのようなロボットと人との共存環境におけるロボットや人エージェントをシミュレーションする、シミュレーションシステム、シミュレーションプログラムおよび学習装置に関する。
【背景技術】
【０００２】
従来のこの種のシミュレーション装置が非特許文献１、２で開示されている。これらの非特許文献１、２のシミュレーション装置では、センサやアクチュエータをシミュレーションして可視化することによって、人との共存環境におけるロボットの適応をより簡単にシミュレーションすることができる。
【０００３】
環境に設置したセンサネットワークのキャリブレーション技術としては、環境内を人や物を動かして同時に記録することで、センサ間の位置関係を特定する、特許文献１および特許文献２などが知れられている。
【０００４】
センサネットワークにおける人の向きやジェスチャ（動作）の認識精度を向上させる1つの方法は、性別、身長、体つきなどの異なる多くの人の多くの行動データを大量に収集し、認識アルゴリズムのパラメータ調整を実施することである。しかしながら、センサネットワーク内のセンサ配置は、実際の現場環境で固定されており、導入状況におうじても多岐に渡るため、これらの行動データを集めるために、現場での大量のデータ収集が必要となり、多大なコストがかかってしまう。
【０００５】
一方大量のデータをシミュレーションによって生成し、学習に利用するアプローチが、非特許文献３および非特許文献４などで知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７‐９６８１３（G01S 7/497 G01S 17/42）
【特許文献２】特許第６４４７７０６号（G01B 11/00 G06T 7/70 G06T 7/80）
【非特許文献】
【０００７】
【非特許文献１】https://www.openrobots.org/morse/doc/stable/morse.html
【非特許文献２】http://gazebosim.org/
【非特許文献３】David Silver et al., Mastering the game of Go with deep neural networks and tree branch, Nature, Vol.529, 484-503, 2016
【非特許文献４】Mnih V et al., Human-level control through deep reinforcement learning, Nature, Vol.518, No.7540, 529-533, 2015
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献３および非特許文献４などのアプローチは、囲碁（非特許文献３）やコンピュータゲーム（非特許文献４）のような仮想世界で容易に再現できる対象に向けられており、人行動を認識するという実世界のセンシングシステムへの適用は困難である。
【０００９】
それゆえに、この発明の主たる目的は、新規な、シミュレーションシステムを提供することである。
【００１０】
この発明の他の目的は、実世界のセンシングシステムで利用可能な人データを生成可能な、シミュレーションシステムを提供することである。
【課題を解決するための手段】
【００１１】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【００１２】
第１の発明は、複数の３次元距離画像センサを配置した実世界を模した仮想シミュレーション空間に人エージェントを投入する人エージェント生成手段、仮想シミュレーション空間内で人エージェントを更新する更新手段、人エージェントの３次元形状を指示する複数の３Ｄモデルを有する３Ｄモデルデータベース、および人エージェントのオブジェクティブを有するオブジェクティブモデルデータベースを備え、人エージェント生成手段は３Ｄモデルデータベースから選択された３Ｄモデルに従った形状の人エージェントを生成し、更新手段はオブジェクティブに従って人エージェントを移動させ、さらに人エージェントの真値ラベルを作成する真値ラベル作成手段、更新手段によって人エージェントが移動されるとき複数の３次元距離画像センサをシミュレーションしたセンタデータを取得するセンサデータ取得手段、および真値ラベルとセンサデータを結合したデータセットを出力する出力手段を備える、シミュレーションシステムである。
【００１３】
第１の発明では、シミュレーションシステム（１０：実施例において対応する部分を例示する参照符号。以下同じ。）は、人エージェント生成手段（２６、１１０）を含み、この人エージェント生成手段は、３Ｄモデルデータベース（１１１）に設定されている複数の３Ｄモデルから選択した３Ｄモデルに従って、人エージェントを生成し、過疎エージェントシミュレーション空間（２２）に投入する。更新手段（２６、１１４）は、ブジェクティブモデルデータベース（１１６）から選択したオブジェクティブに従って人エージェントの位置を更新する。センサデータ取得手段（Ｓ３３）は、更新手段によって人エージェントが移動されるとき複数の３次元距離画像センサをシミュレーションしたセンタデータを取得する。真値ラベル作成手段（Ｓ３１）は、エージェントの真値ラベル（人エージェントの位置、向きなど）を作成し、出力手段（Ｓ３５）は、真値ラベルとセンサデータを結合したデータセットを出力する。このデータセットを学習器に投入すれば、３次元距離画像センサのキャリブレーションが可能になる。
【００１４】
第１の発明によれば、シミュレーションシステムが大量のデータセットを効率よく出力することができる。
【００１５】
第２の発明は、第１の発明に従属し、人エージェント生成手段は、それぞれが３Ｄモデルに従った形状を有する、異なるタイプの人エージェントを生成する、シミュレーションシステムである。
【００１６】
第２の発明では、人エージェント生成手段（１１０）は、たとえば大人、子ども、女性、男性のような異なるタイプの人エージェントを、それぞれ３Ｄモデルに従って、生成する。
【００１７】
第２の発明によれば、仮想シミュレーション空間に多様なタイプの人エージェントを投入することができるので、多様なデータセットを出力することができる。
【００１８】
第３の発明は、第１または第２の発明に従属し、人エージェントについての異なるジェスチャを設定しているジェスチャデータベースをさらに備え、更新手段は、ジェスチャデータベースから選択したジェスチャを人エージェントにさせる、シミュレーションシステムである。
【００１９】
第３の発明では、ジェスチャデータベース（１１３）が複数のジェスチャを有し、更新手段は、ジェスチャデータベースから選択したジェスチャを人エージェントにさせる。
【００２０】
第３の発明によれば、人エージェントにジェスチャをさせるので、実世界に近い多様なデータセットを出力することができる。
【００２１】
第４の発明は、第１ないし第３のいずれかの発明に従属し、ソーシャルフォースモデルを設定しているソーシャルフォースモデルデータベース（１１８）をさらに備え、更新手段は、ソーシャルフォースモデルに従って人エージェントの位置を更新する、シミュレーションシステムである。
【００２２】
第４の発明によれば、人エージェントをソーシャルフォースモデルに従って移動させるので、より実世界に近い多様なデータセットを出力することができる。
【００２３】
第５の発明は、複数の３次元距離画像センサを配置した実世界を模した仮想シミュレーション空間においてシミュレーションを実行するシミュレーションシステムであって、シミュレーションシステムは、人エージェントの３次元形状を指示する複数の３Ｄモデルを有する３Ｄモデルデータベース、および人エージェントのオブジェクティブを有するオブジェクティブモデルデータベースを備え、シミュレーションシステムのコンピュータを、仮想シミュレーション空間に３Ｄモデルデータベースから選択された３Ｄモデルに従った形状の人エージェントを投入する人エージェント生成手段、仮想シミュレーション空間内でオブジェクティブに従って人エージェントを移動させて人エージェントを更新する更新手段、人エージェントの真値ラベルを作成する真値ラベル作成手段、更新手段によって人エージェントが移動されるとき複数の３次元距離画像センサをシミュレーションしたセンタデータを取得するセンサデータ取得手段、および真値ラベルとセンサデータを結合したデータセットを出力する出力手段として機能させる、シミュレーションプログラムである。
【００２４】
第５の発明によっても、第１の発明と同様の効果が期待できる。
【００２５】
第６の発明は、第１ないし第５のいずれかの発明の出力手段が出力するデータセットを学習する学習器を備える、センサキャリブレーションもしくは認識モデルの学習装置である。
【００２６】
第６の発明によれば、出力手段から大量のデータセットを効率よく得られるので、センサキャリブレーションや認識モデルの学習を効率的に実行することができる。
【発明の効果】
【００２７】
この発明によれば、仮想シミュレーション空間において多様な人（歩行者）を再現することによって、多様なセンサデータを大量に取得することができる。したがって、その大量のセンサデータを学習器に投入すれば、効率よくセンサキャリブレーションや認識モデルの学習を実行することができる。
【００２８】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２９】
【図１】図１はこの発明の一実施例のシミュレーションシステムを示す機能ブロック図である。
【図２】図２はこの発明が適用されるロボットの一例を示す図解図である。
【図３】図３は図２に示すロボットの電気的な構成を示すブロック図である。
【図４】図４は図１の仮想シミュレーション空間の一例を示す図解図である。
【図５】図５は図４の人シミュレータの詳細を示す機能ブロック図である。
【図６】図６は人エージェントの基本オブジェクティブモデルの一例を示す図解図である。
【図７】図７は人エージェントの基本オブジェクティブモデルの他の例を示す図解図である。
【図８】図８は人エージェントのオブジェクティブモデルのその他の例を示す図解図である。
【図９】図９は図４の仮想シミュレーション空間の一部における人エージェントの移動の一例を示す図解図である。
【図１０】図１０は図１実施例における基本的なシミュレーション動作の一例を示すフロー図である。
【図１１】図１１は図１実施例における歩行者（人）のシミュレーション動作の一例を詳細に示すフロー図である。
【図１２】図１２は図１１実施例において歩行者を生成する動作の一例を示すフロー図である。
【図１３】図１３は図１１実施例において歩行者を更新する動作の一例を示すフロー図である。
【図１４】図１４は図１１実施例におけるセンシングデータの一例を示し、図１４（Ａ）は各センサＡ‐Ｊのセンシングデータ（距離画像）を示し、図１４（Ｂ）はそれらを統合したセンシングデータを示す。
【図１５】図１５は実施例の仮想シミュレーション空間に相当する実世界の環境における３次元距離画像センサの配置例を示す図解図である。
【発明を実施するための形態】
【００３０】
図１を参照して、この実施例のシミュレーションシステム１０は、ロボット１２、ロボット１２を遠隔操作する操作装置１４およびロボット１２をシミュレートしたロボットエージェントや人（歩行者）をシミュレートした人エージェントをシミュレーションするシミュレーション装置１６含む。シミュレーションシステム１０において、ロボット１２を除いて、１台または２台以上のコンピュータ（プロセサ）によって実現される。
【００３１】
この実施例のロボット１２は、たとえば図２に示すコミュニケーションロボットのように、図１５に示すような、人と共存する環境２００で活動するロボットである。このようなロボット１２は環境の中に存在する人の行動に影響を受けるので、この実施例のシミュレーション装置１６では、ロボット１２の行動をロボットアプリケーションプログラム（ロボット行動決定プログラム）に従ってシミュレーションする際に、人の行動もシミュレーションすることによって、ロボット１２のための安全なロボットアプリケーションプログラムの開発を支援する。
【００３２】
なお、ロボット１２が活動する、たとえばショッピングモールなどのように多様な人々が往来する環境（実世界）２００には、図１５に示すように、天井などの比較的高所には複数のセンサ２０２が配置されている。この実施例では、各センサ２０２は、３次元距離画像センサを想定している。
【００３３】
ここで、図２および図３を参照して、この発明の理解に必要な範囲でロボット１２の構成について説明する。ロボット１２は台車３０を含み、台車３０の下面にはロボット１２を移動させる２つの車輪３２および１つの従輪３４が設けられる。２つの車輪３２は車輪モータ３６（図３参照）によってそれぞれ独立に駆動され、台車３０すなわちロボット１２を前後左右の任意方向に動かすことができる。
【００３４】
台車３０の上には、円柱形のセンサ取り付けパネル３８が設けられ、このセンサ取り付けパネル３８には、多数の距離センサ４０が取り付けられる。これらの距離センサ４０は、たとえば赤外線や超音波などを用いてロボット１２の周囲の物体（人や障害物など）との距離を測定するものである。
【００３５】
センサ取り付けパネル３８の上には、胴体４２が直立して設けられる。また、胴体４２の前方中央上部（人の胸に相当する位置）には、上述した距離センサ４０がさらに設けられ、ロボット１２の前方の、主として人との距離を計測する。また、胴体４２には、その側面側上端部のほぼ中央から伸びる支柱４４が設けられ、支柱４４の上には、全方位カメラ４６が設けられる。全方位カメラ４６は、ロボット１２の周囲を撮影するものであり、後述する眼カメラ７０とは区別される。この全方位カメラ４６としては、たとえばＣＣＤやＣＭＯＳのような固体撮像素子を用いるカメラを採用することができる。
【００３６】
胴体４２の両側面上端部（人の肩に相当する位置）には、それぞれ、肩関節４８Ｒおよび肩関節４８Ｌによって、上腕５０Ｒおよび上腕５０Ｌが設けられる。図示は省略するが、肩関節４８Ｒおよび肩関節４８Ｌは、それぞれ、直交する３軸の自由度を有する。すなわち、肩関節４８Ｒは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｒの角度を制御できる。肩関節４８Ｒの或る軸（ヨー軸）は、上腕５０Ｒの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節４８Ｌは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｌの角度を制御できる。肩関節４８Ｌの或る軸（ヨー軸）は、上腕５０Ｌの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。
【００３７】
また、上腕５０Ｒおよび上腕５０Ｌのそれぞれの先端には、肘関節５２Ｒおよび肘関節５２Ｌが設けられる。図示は省略するが、肘関節５２Ｒおよび肘関節５２Ｌは、それぞれ１軸の自由度を有し、この軸（ピッチ軸）の軸回りにおいて前腕５４Ｒおよび前腕５４Ｌの角度を制御できる。
【００３８】
前腕５４Ｒおよび前腕５４Ｌのそれぞれの先端には、人の手に相当するハンド５６Ｒおよびハンド５６Ｌがそれぞれ設けられる。これらのハンド５６Ｒおよび５６Ｌは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット１２は、ハンド５６Ｒおよび５６Ｌを用いて物体を把持または挟持することができる。ただし、ハンド５６Ｒ、５６Ｌの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
【００３９】
また、図示は省略するが、台車３０の前面、肩関節４８Ｒと肩関節４８Ｌとを含む肩に相当する部位、上腕５０Ｒ、上腕５０Ｌ、前腕５４Ｒ、前腕５４Ｌ、ハンド５６Ｒおよびハンド５６Ｌには、それぞれ、接触センサ５８（図３で包括的に示す）が設けられる。台車３０の前面の接触センサ５８は、台車３０への人間や他の障害物の接触を検知する。したがって、ロボット１２は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪３２の駆動を停止してロボット１２の移動を急停止させることができる。また、その他の接触センサ５８は、当該各部位に触れたかどうかを検知する。
【００４０】
胴体４２の中央上部（人の首に相当する位置）には首関節６０が設けられ、さらにその上には頭部６２が設けられる。図示は省略するが、首関節６０は、３軸の自由度を有し、３軸の各軸廻りに角度制御可能である。或る軸（ヨー軸）はロボット１２の真上（鉛直上向き）に向かう軸であり、他の２軸（ピッチ軸、ロール軸）は、それぞれ、それと異なる方向で直交する軸である。
【００４１】
頭部６２には、人の口に相当する位置に、スピーカ６４が設けられる。スピーカ６４は、ロボット１２が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク６６Ｒおよびマイク６６Ｌが設けられる。以下、右のマイク６６Ｒと左のマイク６６Ｌとをまとめてマイク６６ということがある。マイク６６は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。
【００４２】
さらに、人の目に相当する位置には、右の眼球部６８Ｒおよび左の眼球部６８Ｌが設けられる。右の眼球部６８Ｒおよび左の眼球部６８Ｌは、それぞれ右の眼カメラ７０Ｒおよび左の眼カメラ７０Ｌを含む。以下、右の眼球部６８Ｒと左の眼球部６８Ｌとをまとめて眼球部６８ということがある。また、右の眼カメラ７０Ｒと左の眼カメラ７０Ｌとをまとめて眼カメラ７０ということがある。
【００４３】
眼カメラ７０は、ロボット１２に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット１２は、この眼カメラ７０からの映像信号によって、人の左右両目のそれぞれの視線方向（ベクトル）を検出する。
【００４４】
また、眼カメラ７０は、上述した全方位カメラ４６と同様のカメラを用いることができる。たとえば、眼カメラ７０は、眼球部６８内に固定され、眼球部６８は、眼球支持部（図示せず）を介して頭部６２内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、２軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この２軸の一方は、頭部６２の上に向かう方向の軸（ヨー軸）であり、他方は、一方の軸に直交しかつ頭部６２の正面側（顔）が向く方向に直行する方向の軸（ピッチ軸）である。眼球支持部がこの２軸の各軸廻りに回転されることによって、眼球部６８ないし眼カメラ７０の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ６４、マイク６６および眼カメラ７０の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【００４５】
このように、この実施例のロボット１２は、車輪３２の独立２軸駆動、肩関節４８の３自由度（左右で６自由度）、肘関節５２の１自由度（左右で２自由度）、首関節６０の３自由度および眼球支持部の２自由度（左右で４自由度）の合計１７自由度を有する。
【００４６】
図３はロボット１２の電気的な構成を示すブロック図である。この図３を参照して、ロボット１２は、１つまたは２以上のプロセサ８０を含む。プロセサ８０は、バス８２を介して、メモリ８４、モータ制御ボード８６、センサ入力／出力ボード８８および音声入力／出力ボード９０に接続される。
【００４７】
メモリ８４は、図示は省略をするが、ＲＯＭ、ＨＤＤおよびＲＡＭを含む。ＲＯＭおよびＨＤＤには、各種プログラムが予め記憶される。
【００４８】
モータ制御ボード８６は、たとえばＤＳＰで構成され、各腕や首関節６０および眼球部６８などの各軸モータの駆動を制御する。すなわち、モータ制御ボード８６は、プロセサ８０からの制御データを受け、右眼球部６８Ｒの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「右眼球モータ９２」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、左眼球部６８Ｌの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「左眼球モータ９４」と示す）の回転角度を制御する。
【００４９】
また、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｒの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｒの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「右腕モータ９６」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｌの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｌの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「左腕モータ９８」と示す）の回転角度を制御する。
【００５０】
さらに、モータ制御ボード８６は、プロセサ８０からの制御データを受け、首関節６０の直交する３軸のそれぞれの角度を制御する３つのモータ（図３では、まとめて「頭部モータ１００」と示す）の回転角度を制御する。そして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、車輪３２を駆動する２つのモータ（図３では、まとめて「車輪モータ３６」と示す）の回転角度を制御する。
【００５１】
モータ制御ボード８６にはさらにハンドアクチュエータ１０１が結合され、モータ制御ボード８６は、プロセサ８０からの制御データを受け、ハンド５６Ｒ、５６Ｌの開閉を制御する。
【００５２】
センサ入力／出力ボード８８は、モータ制御ボード８６と同様に、ＤＳＰで構成され、各センサからの信号を取り込んでプロセサ８０に与える。すなわち、距離センサ４０のそれぞれからの反射時間に関するデータがこのセンサ入力／出力ボード８８を通じてプロセサ８０に入力される。また、全方位カメラ４６からの映像信号が、必要に応じてセンサ入力／出力ボード８８で所定の処理を施してからプロセサ８０に入力される。眼カメラ７０からの映像信号も、同様にして、プロセサ８０に入力される。また、上述した複数の接触センサ５８（図３では、まとめて「接触センサ５８」と示す）からの信号がセンサ入力／出力ボード８８を介してプロセサ８０に与えられる。音声入力／出力ボード９０もまた、同様に、ＤＳＰで構成され、プロセサ８０から与えられる音声合成データに従った音声または声がスピーカ６４から出力される。また、マイク６６からの音声入力が、音声入力／出力ボード９０を介してプロセサ８０に与えられる。
【００５３】
また、プロセサ８０は、バス８２を介して通信ＬＡＮボード１０２に接続される。通信ＬＡＮボード１０２は、たとえばＤＳＰで構成され、プロセサ８０から与えられた送信データを無線通信モジュール１０４に与え、無線通信モジュール１０４は送信データを、ネットワークを介してサーバ（図示せず）等に送信する。また、通信ＬＡＮボード１０２は、無線通信モジュール１０４を介してデータを受信し、受信したデータをプロセサ８０に与える。
【００５４】
なお、実施例のシミュレーションシステム１０が適用可能なロボットは、図２および図３に示すロボット１２に限定されるものではなく、他の形式、構造のコミュニケーションロボットにもこのシミュレーション装置は適用可能である。
【００５５】
図１に戻って、操作装置１４は、基本的には１または２以上のコンピュータまたはプロセサによって構成され、そのプロセサのメモリ（図示せず）にロボットアプリケーションプログラム１８が設定されていて、そのロボットアプリケーションプログラムがコンピュータからたとえば無線でロボット１２またはシミュレーション装置１６に与えられる。ロボットアプリケーションプログラム１８は、ロボット１２に対すアプリケーションプログラムであり、たとえばロボット１２を案内ロボットとしとて動作させるときには、そのための動作をロボット１２が実行するようなプログラムである。
【００５６】
操作装置１４のメモリにはさらに、環境データ２０を予め記憶している。環境データ２０は主として図４に示す仮想シミュレーション空間２２の地図データおよびその仮想シミュレーション空間２２内での人エージェントの出現率データを含む。環境および環境内のオブジェクトは３次元モデルデータとして表され、３次元仮想空間として視覚化される。この３次元仮想シミュレーション空間２２は先に説明した実世界２００を再現したものである。
【００５７】
環境データ２０にはさらに、実世界２００（図１５）に設定された、たとえば３次元距離画像センサのような各センサ２０２の位置、向き、スキャン範囲（センシング範囲）なども含まれる。
【００５８】
図４に示す仮想シミュレーション空間２２は、図中点線矩形で示す出入口２２ａを有する３次元閉空間を想定している。この仮想シミュレーション空間２２においては黒色太線で示す通路２２ｂが設定されていて、ロボット１２や人エージェントはその通路５０や広場などを通行し、またはそこに存在する。これらの通路２２ｂや広場は建物や壁などオブジェクトによって区画され、図中丸印で示す場所で分岐または合流する。
【００５９】
シミュレーション装置１６は、基本的には1または２以上のプロセサで構成され、ロボット１２をシミュレートするロボットシミュレータ２４および歩行者のような人エージェントをシミュレートする人シミュレータ２６を含み、それぞれのシミュレーション結果が物理エンジン２８に入力される。
【００６０】
ロボットシミュレータ２４は、たとえば先の非特許文献１として例示したＭＯＲＳＥシミュレータであり、このＭＯＲＳＥシミュレータは、ロボット１２と同様の、多くのセンサ、アクチュエータおよびロボットのモデルを提供し、そのようなモデル用のＡＰＩ（Application Programming Interface）も利用できる。
【００６１】
たとえば図１１のステップＳ３３において実行されるようなセンサシミュレーションにおいては、たとえば、距離画像センサの場合には、カメラ視点からの光学的な計算を行い、カメラ視点毎の画像情報を生成する。レーザ距離計の場合には、レーザによるスキャンを模して、センサから各方位へ距離計測を行い、その結果をセンサ値として保存する。
【００６２】
開発者がロボットのためのロボットアプリケーションプログラムを準備するとき、それらのプログラムはこれらのＡＰＩにアクセスしてセンサデータ（たとえば、レーザ距離計からの距離の読み取り）およびアクチュエータへのコマンドの送信（たとえば、移動速度）を行う。
【００６３】
人シミュレータ２６は、定期的に新しい歩行者を生成し、それらの位置を更新し、それらがシミュレートされた環境（仮想シミュレーション空間２２）を離れるときにそれらを除去する。歩行者すなわち人は、３次元オブジェクトとして表現され、仮想シミュレータ空間２２内に配置され、アニメーションエンジンを使用して、その歩行動作がアニメーション化される。
【００６４】
ただし、人シミュレータ２６には図１に示すように環境データ２０が与えられるので、人シミュレータ２６は、その環境データに含まれる出現率と呼ばれる予め定義された確率で新しい歩行者を周期的に生成する。そして、その歩行者は図４に示す出入口２２ａの１つに割り当てられ、他の１つに行くように設定される。
【００６５】
なお、歩行者はしばしばグループとして（家族やカップルのように）生成され、それらがグループで表示される場合、サイズはグループメンバの分布によって定義し、すべてのメンバが同じ目的を共有すると仮定する。
【００６６】
物理エンジン２８は、物理的な力や法則などに基づいて、ロボットや人エージェントがどのような移動経路をたどるかを計算する。詳しくいうと、物理エンジン２８は、ロボットシミュレータ２４および人シミュレータ２６からの各エージェント（ロボット含む）が意図した動きを、仮想シミュレーション空間２２（図４）で実行する処理を実行する。このとき、他の障害物、構造物や他のエージェントとの干渉が何もなければ、意図したとおりの動きを生成する。しかしながら、干渉がある場合、物理学法則（力学法則）に従って、各エージェントの実際の動きを処理する。そして、物理エンジン２８からは統合したシミュレーションデータが出力される。
【００６７】
シミュレーション装置１６には、ディスプレイ１０５設けられていて、このディスプレイ１０５によって、たとえば図４に示すような仮想シミュレーション空間の画像が、その中に存在するシミュレートされたロボットや人エージェントとともに、表示される。たとえば、人エージェントは、３次元オブジェクトとして表現され、仮想シミュレーション空間２２内に配置され、アニメーションエンジンを使用して、その歩行動作がアニメーション化される。ロボットアプリケーションプログラム１８の開発者は、そのディスプレイ１０５に表示された画像で確認しながら、ロボット１２の行動決定プログラム（アプリケーションプログラム）を作製し、修正する。
【００６８】
さらに、シミュレーション装置１６には入力装置１０７が付設されている。この入力装置１０７は、たとえば、キーボードあるいはタッチパネルであってよく、タッチパネルの場合にはディスプレイ１０５に組み込み、ディスプレイ１０５をタッチディスプレイとして構成することもできる。
【００６９】
図５を参照して、人シミュレータ２６を詳細に説明する。人シミュレータ２６は、ロボットシミュレータ２４と同様に、シミュレーション装置１６のコンピュータないしプロセサによって実現される機能であり、人生成モジュール１１０を含む。この人生成モジュール１１０は、上述のように、環境データ２０に含まれる出現率データ１０８に従って新しい歩行者（人エージェント）を、地図データ１０６が表す、図４に一例を示す仮想シミュレーション空間２２内に、周期的に生成する。
【００７０】
出現率データ１０８は、シミュレーション装置１６の仮想シミュレーション空間２２に投入する人エージェントのための、大人、子供、などの人のタイプ（パターン）やそれぞれの人の出現率が予め設定されているデータベースであり、設定された確率で設定された形状の人エージェントが生成される。
【００７１】
人生成モジュール１１０には３次元（３Ｄ）モデルデータベース１１１が付属される。３Ｄモデルデータベース１１１は、上述の人の各タイプのそれぞれについて複数の異なる形状、たとえば性別、身長、体つきなどの３Ｄモデルを保持している。したがって、人生成モジュール１１０は、出現率データ１０８の指示に従ったタイプでかつ３Ｄモデルデータベース１１１からランダムに選択した当該タイプの３Ｄモデルに従った人エージェントを仮想シミュレーション空間２２内に生成する。
【００７２】
なお、この出現率データ１０８では、曜日や時間ごとに異なるデータセットを保持しておき、曜日や時間を指定してシミュレーションできるようにしてもよい。そうすれば、ある時間帯にロボットを動かすとどうなるのかなど、いろいろシミュレーションすることができる。
【００７３】
ただし、生成される人エージェントがグループを形成することを出現率データ１０８が示していれば、人生成モジュール１１０は、シミュレーションパラメータとして設定されているグループメンバデータ１１２に従ったメンバ構成のグループで複数の人エージェントを生成する。この場合も、それらの人の体型は３Ｄモデルデータベース１１１から選択した３Ｄモデルに従う。
【００７４】
移動モジュール１１４は、人生成モジュール１１０が生成した人エージェントを、オブジェクティブモデル（Objective Model）データベース１１６に予め設定されているオブジェクティブに基づいて、仮想シミュレーション空間２２（図４）内を移動させる。ここで、オブジェクティブ（Objective）とは、仮想シミュレーション空間２２において、人エージェント（図示せず）の視界にロボットエージェント（図示せず）が入ったときに、人エージェントが示す反応の仕方、つまり人が実空間で実際に取り得る対ロボット行動パターンや、環境内で（ロボットがいない場合にも）行いうる行動パターン（たとえば、コンビニなどの商品棚の前で立ち止まるなど）を規定する命令セットである。命令セットは、たとえば、人が歩く場合、移動目標や移動速度をパラメータとして含む。
【００７５】
この実施例では後述の４つの典型的な反応の態様（オブジェクティブ)をモデルとして設定しておき、移動モジュール１１４は人エージェントを移動させるとき、そのモデルが示すオブジェクティブに従って移動させる。つまり、オブジェクティブ１１６は、仮想シミュレーション空間においてロボットの存在に対する反応行動を人エージェントに行わせる、第１命令セットとして機能する。これらのオブジェクティブはシミュレーションシステム１０の第１メモリ（図示せず）に記憶されている。
【００７６】
なお、このオブジェクティブモデル１１６に予め設定されている利用可能なオブジェクティブは、たとえば上記第１メモリから読み出してそれらの一覧をたとえばディスプレイ１０５などに表示するなどして、デバッグしようとする開発者が知ることができる。開発者は、その中の任意のオブジェクティブを選択して、後述のようにスクリプト(１２２)でそのオブジェクティブを変更（更新）することが可能である。このとき、開発者はシミュレーションシステム１０に設けられているキーボードなどの入力装置（図示せず）を用いて、要変更箇所を変更することができる。そして、その変更（更新）されたオブジェクティブもまた第１メモリに記憶される。つまり、オブジェクティブモデル１１６は，拡張性を有するように設計しているので、別の誰かが更新したオブジェクティブを一覧情報として知るこことができる点は、有効である。
【００７７】
たとえば、ロボットが自分の視野に入ったときに人が取る行動パターン（オブジェクティブ）として、図６および図７に示す、ロボットと対話するパターンと、ロボットを観察するパターンがある。
【００７８】
図６は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopを隔てて停止し、ロボット１２と対話するオブジェクティブを図解している。
【００７９】
図７は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopよりもやや大きい観察距離Ｄobserveを隔てて停止し、ロボット１２を観察するオブジェクティブを図解している。
【００８０】
オブジェクティブとしては、その他、ロボットの傍を通りすぎるオブジェクティブ、およびロボットの傍を減速し、見ながら通りすぎるオブジェクティブがあり、移動モジュール１１４では、人エージェントがその登録しているどれかのオブジェクティブに従って移動するようにシミュレーションする。
【００８１】
ただし、移動モジュール１１４は、シミュレーションパラメータに含まれるソーシャルフォースモデル（Social Force Model）データベース１１８およびインタラクションモデル（Interaction with robot model）データベース１２０からのそれぞれのモデルデータを考慮して、人エージェントの移動をシミュレートする。ソーシャルフォースモデルとは、後述の図８に示すように歩行者どうしがいかに影響して挙動が変わるかということを表すモデルである。たとえば、斥力または反力などとして知られている。
【００８２】
仮想シミュレーション空間２２内において、人エージェントの行動は、他のエージェントから影響されて変化するが（たとえば、人同士がぶつからないように避ける、ロボットを見たら近づく、など）。
【００８３】
たとえば図８に示すように、２人の人ｉおよびｊは相互に影響して次のステップでの移動位置を決定する場合がある、人エージェントｉは本来はｄi,jの方向へ移動するのであるが、人エージェントｊが人エージェントｉに対して角度θi,jの方向に速度ｖi,jで移動しようとしているため、人エージェントｉは、結局ｄ’i,jの方向へ移動することになる。
【００８４】
なお、インタラクションモデル１２０とは、人のロボットとの相互作用のパターンを予め設定しているモデルである。
【００８５】
図９は図４に示す仮想シミュレーション環境（空間）の一部を模式的に示していて、仮想シミュレーション空間２２は、出入口２２ａを設けた壁などのオブジェクト１２４で仕切られた閉空間を想定している。ただし、オブジェクト１２４はすべて、障害物として地図データ１０６に書き込まれている。
【００８６】
ロボットシミュレータ２４は、環境データ２０に含まれるロボット（ロボットエージェント）の位置等のデータに基づいて、ロボットアプリケーションプログラム１８に従ったロボットの次のステップでの行動をシミュレーションする。ここで、ロボットアプリケーションプログラム１８は、図３のセンサ入力／出力ボード８８に入力されるセンサ出力に応じて、各モータすなわちアクチュエータを制御してロボットの行動を決定するプログラムである。
【００８７】
図９の例でいえば、ロボットアプリケーションプログラム１８は、たとえば図９において、一方の出入口２２ａからロボット１２が仮想シミュレーション空間２２に入り、他方の出入口２２ａから出るまで、通路２２ｂに従って移動させるように設定されている。なお、図９において参照符号１２６が、シミュレーションのためにこの仮想シミュレーション空間２２に投入された人エージェントを示す。
【００８８】
人シミュレータ２６はさらに、必要な場合、オブジェクティブ１１６ではなく、スクリプト１２２に従ってシミュレーションを実行する。オブジェクティブ１１６は上述のように、予め設定した、定型の対ロボット反応パターンであるが、スクリプト１２２は、シミュレーション装置１６すなわち人シミュレータ２６に非定型の動作を行わせる命令である。ここで、スクリプトとは、コンピュータが理解できる言語への変換作業を省略して、簡単に解釈実行できるようにした簡易プログラム（命令セット）のことである。ソフトウェアの設計などにおいて、コンピュータに命令を与える際には、通常、人間が普通に読み書きできる言語から、コンピュータが理解できる言語、いわゆる機械語への変換が必要であるが、スクリプトは、そのような変換作業を省略して簡単に解釈実行できるようにした簡易プログラムである。これらのスクリプトは、第２命令セットに該当するが、それらはシミュレーションシステム１０の第２メモリ（図示せず）に記憶されている。ただし、第１メモリおよび第２メモリは同じメモリの異なる記憶場所であってよい。
【００８９】
人シミュレータ２６にはさらに、ジェスチャモデルデータベース１１３が付属される。このジェスチャモデルデータベース１１３には人（歩行者）が取り得る複数種類のジェスチャ（動作）を登録しておく。そのジェスチャには、たとえば、物を見る、物を見ながら歩く、物を取る（右手および／または左手）、歩く（普通にまたはゆっくり、速く）、立ち止まる、しゃがむ等のジェスチャが含まれる。実世界で生じる人間のジェスチャと類似したデータを生成させるため、ジェスチャのデータには、モーションキャプチャシステムを用いて生成したデータが含まれることがある。
【００９０】
したがって、人シミュレータ２６の移動モジュール１１４は、ジェスチャモデルデータベース１１３からランダムに選択したジェスチャを行う人エージェントを、オブジェクティブモデル１１６またはスクリプト１２２に従った移動パターンまたは移動経路で移動させる。
【００９１】
ここで、図１１に示すこの発明の実施例の理解を容易にする目的で、まず、図１０を参照して、オブジェクティブモデル１１６に従った図１に示すシミュレーション装置１６における動作の一例を説明する。ただし、この図１０に示すシミュレーションは、複数のステップ（Ｓ３‐Ｓ１７）を１ステップとして実行する。実際的な運用において、シミュレーションの１ステップは最速０.１ミリ秒単位で実行可能であるが、ここでは１０ミリ秒単位に設定し、ロボットシミュレーションプログラム１８の実行は１００ミリ秒単位とすることが可能である。この例の場合、ロボットアプリケーションプログラム１８は、シミュレーション装置１６による１０ステップの実行毎に１度、実行される。つまり、この実施例では、このようにロボットアプリケーションプログラムの周期がシミュレーションの１ステップの実行周期より長い場合を想定している。
【００９２】
最初のステップＳ１において、一例として図４（および図９）に示す通路２２ｂ上を移動するように設定されている、ロボットアプリケーションプログラム１８を読み込むとともに、環境データ２０を読み込む。すなわち、ロボット１２の行動をシミュレーションする図４（および図９）のような仮想シミュレーション空間２２の地図データ１０６および出現率データ１０８が示す仮想シミュレーション空間２２に投入する人エージェントの生成に関するパラメータ（出現頻度、移動経路、グループ人数、大人子供や男女の比率、背の高さなど）および各エージェント（ロボット１２を含む）の位置データなどを読み込む。なお、この仮想シミュレーション空間２２が、ロボット１２および人エージェントとともに、ディスプレイ１０５に表示される。
【００９３】
さらに、このステップＳ１では、シミュレーションの初期化を行う。つまり、実行速度をｓ＝１．０、基本実行ステップ数ｆｐｓをｆｐｓ＝３０．０としてそれぞれ設定する。ただし、ｆｐｓは、１秒間に何ステップのシミュレーションを実行するかを示す数値で、この実施例の初期設定では、１秒間に３０ステップのシミュレーションを実行するように、設定される。
【００９４】
次のステップＳ３では、人シミュレータ２６の人生成モジュール１１０によって、環境データ２０が提示する人エージェントの生成に関する上述のパラメータおよびグループからの人パターンのデータに従って、仮想シミュレーション空間２２内で、１または２以上の人エージェントを生成して配置する。
【００９５】
ステップＳ５で人シミュレータ２６は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、そしてオブジェクティブモデル１１６が示す対ロボット行動パターンに基づいて、人エージェントの次のステップでの行動を決定する。なお、基本的な前述した４つのオブジェクティブの一覧は開発者（操作装置１４のオペレータ）が自由にアクセスできる形で提供される。さらに、他のオブジェクティブモデルを採用することもできる。
【００９６】
ステップＳ７でロボットシミュレータ２４は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、ロボットアプリケーションプログラム１８に従って、次のステップでのロボット１２の行動を決定する。
【００９７】
具体的には、ステップＳ７では、ロボット１２がたとえば搬送ロボットや搭乗型ロボットのように目的地に向かうことが主目的のロボットである場合、他の人々の現在の位置や移動速度から、なるべく他人の移動に干渉しないような移動経路を計算する処理を行う。また、ロボット１２が人々にサービス提供することが目的のロボットである場合には、たとえば、ロボットに興味がありそうな人に接近するために、単純な場合では、ロボットの近傍で止まっている人を選択して、その人に向かって進む、また、人々が集まりがちな場所を選んでそのような場所でやってくる人を待ち受ける、また、混雑を起こさないように過度に人々が通る場所には近づかないようにする、といった処理を行ったりする。
【００９８】
このステップＳ７の場合、ステップＳ５での人エージェントの次のステップでの行動を決定しているので、それを考慮して、上述の処理を実行する。そのため、人と共存する実空間で活動するロボットアプリケーションプログラムの当否を、仮想シミュレーション空間内で判断することができる。
【００９９】
その後ステップＳ９で、物理エンジン２８において、各エージェントの行動を実現する。詳しくいうと、ステップＳ９では、先に説明したように、各エージェント（ロボット含む）が意図した動きを仮想シミュレーション空間２２内で実施する処理が行われ、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりに動く。たとえば、エージェントが１歩前進しようとした場合、その意図通り、エージェントが１歩前進する。
【０１００】
ところが、干渉がある場合、物理学法則（力学法則）に従って各エージェントの実際の動きが処理される。単純な場合、たとえば壁に向かって進もうとすると、壁に衝突し、それ以上前進できないし、一定の反発係数に従って反力を受ける。エージェント同士の衝突の場合、前進する動きと、反力による移動が重なり合って、たとえば、単純な例を考えると、前進中にたとえば側方から衝突すると、斜め前方へと実際には動くことになる。
【０１０１】
次のステップＳ１１で、環境データやセンサデータなどを更新する。
【０１０２】
そして、ステップＳ１３でシミュレーションを終了するかどうか判断し、シミュレーションを続行するなら再び先のステップＳ３に戻り、たとえば行動決定プログラムが終了するなどした場合“ＹＥＳ”が判断され、シミュレーションを終了する。
【０１０３】
このように、シミュレーション装置１６においてオブジェクティブ１１６に従ってロボットの周囲の人の行動を再現するようにシミュレーションを行い、その状態をディスプレイ１０５（図１）で確認することにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットアプリケーションプログラム１８の開発を効率的に行うことができる。
【０１０４】
図１１はこの実施例における主として人シミュレータ２６の動作を示すフロー図であり、この図１１の最初のステップＳ２１では、コンピュータは、シミュレーションが実行されているかどうか判断する。“ＮＯ”ならそのまま終了する。
【０１０５】
この実施例の特徴は、図１０のステップＳ３における人シミュレータ２６による人エージェントの生成、仮想シミュレーション空間２２への投入、およびステップＳ５におけるその仮想シミュレーション空間２２内での人エージェントの移動、ジェスチャ等の行動の際の、３次元距離画像センサ２０２（図１５）に対応するシミュレーションデータを取得することである。以下、説明する。
【０１０６】
ステップＳ２１で“ＹＥＳ”が判断されたときは、次のステップＳ２３で、コンピュータは歩行者（人）生成条件が成立したかどうか判断する。この歩行者は、仮想シミュレーション空間２２に存在する歩行者数が所定の最大数未満の場合、出現率データ１０８（図５）に従って、一定確率で生成される。したがって、歩行者生成条件とは、出現率に達したという条件である。
【０１０７】
このステップＳ２３で“ＹＥＳ”が判断されると、ステップＳ２５で、人生成モジュール１１０によって、歩行者を生成する。具体的には、図１２に示すフロー図に従って歩行者を生成する。
【０１０８】
図１２のステップＳ４１では、コンピュータすなわち人生成モジュール１１０は、歩行者モデルを３Ｄモデルデータベース１１１からランダムにまたは所定の法則に従って選択する。
【０１０９】
そして、ステップＳ４３で、オブジェクティブ（行動タイプ）をオブジェクティブモデル１１６からランダムにまたは所定の法則に従って選択するとともに、グループメンバデータ１１２、ソーシャルフォースモデル１１８およびインタラクションモデル１２０に従って、シミュレーションパラメータを確定的にまたは所定の法則に従って決定する。このステップＳ４３ではオブジェクティブを複数個選択することができ、その場合、選択された順にオブジェクティブが実行される。
【０１１０】
ステップＳ４５で、オブジェクティブ毎に、実行するジェスチャをジェスチャデータベース１１３からランダムにまたは所定の法則に従って選択して、オブジェクティブに設定する。ジェスチャとしては、先に説明したように、「物を取る」などである。ジェスチャは、オブジェクティブ毎に複数選択されてもよい。その後、リターンする。
【０１１１】
このようにして、図１１のステップＳ２５で、仮想シミュレーション空間２２（図４）内に人エージェント（歩行者）を生成することができる。したがって、このステップＳ２５およびそれを実行するコンピュータは、人エージェント生成手段ということができる。
【０１１２】
図１１のステップＳ２７で、歩行者Ｐｉ毎のループを実行し、ステップＳ２９で、コンピュータすなわち移動モジュール１１４は、歩行者Ｐｉを更新する。具体的には、図１３に示すフロー図に従う。
【０１１３】
図１３のステップＳ５１で、コンピュータは、オブジェクティブが終了したかどうか判断する。“ＹＥＳ”なら、歩行者Ｐｉを環境すなわち仮想シミュレーション空間２２から削除（消去）して、リターンする。つまり、各歩行者に対して移動シーケンスを設定しているので、それが終わったら環境から消えるようにしている。
【０１１４】
一方、ステップＳ５１で“ＮＯ”と判断されたとき、ステップＳ５５において、先にステップＳ４３で設定されたソーシャルフォースモデルに従って、歩行者の位置を更新する。そして、ステップＳ５７で、ステップＳ４５で設定されたジェスチャに従って、歩行者Ｐｉのジェスチャを再生し、その後リターンする。
【０１１５】
ステップＳ２７の更新処理は複数のオブジェクティブが存在する場合、順次次のオブジェクティブの更新処理を実行する。このステップＳ２７すなわちステップＳ２９での更新は、仮想シミュレーション空間内で人エージェントを移動シーケンスを適用して人エージェントの位置を更新するので、このステップＳ２７、Ｓ２９およびそれらを実行するコンピュータは、更新手段ということができる。
【０１１６】
各歩行者Ｐｉの更新処理が終了したら、図１１のステップＳ３１において、各歩行者の真値ラベルを作成する。真値ラベルとは、各センサからの各歩行者（人）の見え方であり、たとえば、歩行者の位置、歩行者の向き、ジェスチャなどを含む。人シミュレータ２６によって歩行者の移動シーケンスをシミュレーションしているので、コンピュータは、それぞれのモデルやパラメータからこのような真値ラベルを容易に取得できる。
【０１１７】
次いで、ステップＳ３３で、コンピュータは、センサデータを作成する。センサデータは、上述のようにして歩行者Ｐｉがシミュレートされるときの、各センサからの歩行者Ｐｉの見え方をシミュレーションしたデータ、たとえば距離画像である。センサ２０２（図１５）として３次元距離画像センサを用いた場合、図１４（Ａ）に示すように、センサＡ‐Ｊのそれぞれの距離画像が作成される。図１４（Ａ）のセンサＡ‐Ｊ毎の距離画像を統合すると図１４（Ｂ）のような距離画像が得られる。実世界のセンシングでは、センサノイズが存在するため、これらのセンサノイズを再現するためのセンサノイズモデルを距離画像データの作成時に適用する。つまり、シミュレーション内で計測した距離に、確率的なセンサノイズ（ガウシアン分布など）を加算（もしくは減算）した結果を、距離画像として生成する。このようなセンサのノイズモデルは、たとえば環境データ２０（図１）に、実世界に配置された３次元距離画像センサのデータとともに、予め設定される。
【０１１８】
次のステップＳ３５で、コンピュータは、ステップＳ３１で取得した真値ラベルのデータと、ステップＳ３３で作成した図１４に示すような距離画像とを組み合わせたデータセットを出力する。
【０１１９】
このデータセットは、学習器（図示せず）へ投入することによって、センサのキャリブレーションや認識モデルの学習を行うことができる。ただし、センサキャリブレーションとは、各センサ２０２についてどのような計算をすれば、センシングの精度が向上するかを示すセンサデータの計算方法を決定することを意味し、学習器による学習のためには多数の、たとえば１００万以上のデータセットが必要となる。
【０１２０】
極めて多数のデータセットを実世界で取得しようとすると、様々な場所（環境）、様々なパターンで行動するデータと、そのラベルセットを大量に収集することになり、多大なコストを要する。
【０１２１】
これに対して、この実施例のように真値ラベルとセンサデータのペアをシミュレーションによって生成するようにすれば、シミュレーションでは人（歩行者）の行動モデルによって多様な人行動を生成し、それらの行動に人の３次元モデルと人のモーション（ジェスチャ）データ、センサノイズモデルを組み合わせることで、実世界のセンサシステムで利用可能な精度向上データを低コストでかつ短時間で獲得することができる。
【０１２２】
このような認識モデルのパラメータを学習する学習器とは別に、この実施例の大量のデータセットをシミュレーションによって作成するアプローチは，深層学習(いわゆるディープラーニング)にも適用できる。深層学習は、いわば認識モデル自体を学習する学習器である。したがって、実施例によって得られるデータセットはセンサキャリブレーションや，認識モデルの獲得を目指した学習装置（ディープラーニング）に利用することができる。
【０１２３】
なお、上述の実施例では、仮想シミュレーション空間に投入する人エージェントを３Ｄモデルに従った形状にし、それをオブジェクティブに従って移動させ、さらにジェスチャモデルに従った動作（motion）をさせるので、人エージェントが実世界の人（歩行者）と酷似したシミュレーションを実行できるので、そのような人エージェントをセンシングする３次元距離画像センサのセンシング精度も実世界のそれと同じような精度で再現することができる。したがって、ステップＳ３５で出力されるデータセットで学習する学習器（図示せず）の精度もよくなる。
【０１２４】
しかしながら、仮想シミュレーション空間に投入する人エージェントを３Ｄモデルに従った形状にし、それをオブジェクティブに従って移動させるだけでも、十分な精度を実現できれば、仮想シミュレーション空間で人エージェントにジェスチャを行わせない方法も可能である。
【０１２５】
同様に、人エージェントにシミュレーションパラメータを付与させず、学習する方法も可能である。
【符号の説明】
【０１２６】
１０  …シミュレーションシステム
１２  …ロボット
１４  …操作装置
１６  …シミュレーション装置
１８  …ロボットアプリケーションプログラム
２２  …仮想シミュレーション空間
２４  …ロボットシミュレータ
２６  …人シミュレータ
２８  …物理エンジン
１０５…ディスプレイ
２０２…距離画像センサ
【図１】
2020163509.tif 000003
【図２】
2020163509.tif 000004
【図３】
2020163509.tif 000005
【図４】
2020163509.tif 000006
【図５】
2020163509.tif 000007
【図６】
2020163509.tif 000008
【図７】
2020163509.tif 000009
【図８】
2020163509.tif 000010
【図９】
2020163509.tif 000011
【図１０】
2020163509.tif 000012
【図１１】
2020163509.tif 000013
【図１２】
2020163509.tif 000014
【図１３】
2020163509.tif 000015
【図１４】
2020163509.tif 000016
【図１５】
2020163509.tif 000017