(57)【要約】    【課題】  シミュレーション装置において人エージェントの移動を制御するオブジェクティブを追加、共有できるようにする。    【解決手段】  ロボットシステム（１０）のシミュレーション装置（１６）は、人シミュレータ２６を含む。人シミュレータ２６の移動モジュール１１４は、オブジェクティブモデル１１６に予め設定している４種類のオブジェクティブおよび拡張オブジェクティブモデル１３０に追加登録された拡張オブジェクティブに従って人エージェントの移動を制御する。【選択図】  図５
2018120404.tif 000002
【特許請求の範囲】
【請求項１】
仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、
複数の基本オブジェクティブを発生尤度とともに記憶する第１記憶手段、
前記第１記憶手段に記憶されている基本オブジェクティブを候補リストに追加する第１追加手段、
拡張オブジェクティブ毎に拡張オブジェクティブとしての条件が成立するかどうか判断する判断手段、
条件を充足すると判断されたオブジェクトを候補リストに追加する第２追加手段、
前記候補リスト内のオブジェクティブ毎に発生確率を計算する計算手段、
前記計算した発生確率に基づく発生尤度とともに拡張オブジェクティブを記憶する第２記憶手段、および
前記基本オブジェクティブおよび前記拡張オブジェクティブに従って前記人エージェントの移動を制御する移動制御手段を備える、シミュレーションシステム。
【請求項２】
前記計算手段は、前記候補リストの各オブジェクティブの発生尤度を正規化することによって発生確率を計算する、請求項１記載のシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はシミュレーションシステムに関し、特にたとえば、コミュニケーションロボットのようなロボットと人との共存環境におけるロボットや人エージェントをシミュレーションする、シミュレーションシステムに関する。
【背景技術】
【０００２】
従来のこの種のシミュレーション装置が非特許文献１、２で開示されている。これらの非特許文献１、２のシミュレーション装置では、センサやアクチュエータをシミュレーションして可視化することによって、人との共存環境におけるロボットの適応をより簡単にシミュレーションすることができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】https://www.openrobots.org/morse/doc/stable/morse.html
【非特許文献２】http://gazebosim.org/
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このようなシミュレータを導入することで、ロボットの効率的な開発が期待できるが、人々のロボットに対する反応ないし振る舞い（オブジェクティブ：objective）を事前にすべて定義することは困難である。
【０００５】
それゆえに、この発明の主たる目的は、新規な、シミュレーションシステムを提供することである。
【０００６】
この発明の他の目的は、新しいオブジェクティブを追加、共有できる、シミュレーションシステムを提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、複数の基本オブジェクティブを発生尤度とともに記憶する第１記憶手段、第１記憶手段に記憶されている基本オブジェクティブを候補リストに追加する第１追加手段、拡張オブジェクティブ毎に条件が成立するかどうか判断する判断手段、条件を充足すると判断されたオブジェクトを候補リストに追加する第２追加手段、候補リスト内のオブジェクティブ毎に発生確率を計算する計算手段、計算した発生確率に基づく発生尤度とともに拡張オブジェクティブを記憶する第２記憶手段、および基本オブジェクティブおよび拡張オブジェクティブに従って人エージェントの移動を制御する移動制御手段を備える、シミュレーションシステムである。
【０００９】
第１の発明では、シミュレーションシステム（１０：実施例において相当する部分を例示する参照符号。以下同様）は、仮想シミュレーション空間（２２）に投入した人エージェントの行動をシミュレーションする。第１記憶手段（１１６）は、複数の基本オブジェクティブを発生尤度とともに記憶する。基本オブジェクティブとしては、一例として、Uninterested（興味を持たず、そのまま通り過ぎる）、Slow（速度を落とし、ロボットを見ながら通り過ぎる）、Interest（ロボットに近づき、対話を行う）、およびObserve（やや遠目に立ち止まり、ロボットを見る）が設定されている。第１追加手段（S33）は、その第１記憶手段に記憶されている基本オブジェクティブを候補リスト（List_cand）に追加する。判断手段（S35）は、拡張オブジェクティブ毎に、条件が成立するかどうかを判断する。判断手段によって、条件が充足するという判断を行われたオブジェクティブが第２追加手段（S37）によって候補リストに追加される。計算手段（S39）は、候補リスト内のオブジェクティブ毎に発生確率を計算し、第２記憶手段(130)は、計算した発生確率に基づく発生尤度とともに拡張オブジェクティブを記憶する。人シミュレータ（26）の移動制御手段（114）は、基本オブジェクティブおよび拡張オブジェクティブに従って人エージェントの移動を制御する。つまり、拡張オブジェクティブは、人シミュレータで使えるので、人シミュレータを使うユーザによって共有される。
【００１０】
第１の発明によれば、オブジェクティブを追加し、共有することができる。
【００１１】
第２の発明は、第１の発明に従属し、計算手段は、候補リスト内のオブジェクティブの発生尤度を正規化することによって発生確率を計算する、シミュレーションシステムである。
【発明の効果】
【００１２】
この発明によれば、実世界での人々の反応ないし振る舞いをシミュレータに追加、共有することができるので、ロボットの開発を一層効率化することができる。
【００１３】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００１４】
【図１】図１はこの発明の一実施例のシミュレーションシステムを示すブロック図である。
【図２】図２はこの発明が適用されるロボットの一例を示す図解図である。
【図３】図３は図２に示すロボットの電気的な構成を示すブロック図である。
【図４】図４は図１の仮想シミュレーション空間の一例を示す図解図である。
【図５】図５は図４の人シミュレータの詳細を示す機能ブロック図である。
【図６】図６は基本オブジェクティブを示す表である。
【図７】図７は人エージェントの基本オブジェクティブモデルの一例を示す図解図である。
【図８】図８は人エージェントの基本オブジェクティブモデルの他の例を示す図解図である。
【図９】図9は人エージェントのオブジェクティブモデルのその他の例を示す図解図である。
【図１０】図１０は図４の仮想シミュレーション空間の一部における人エージェントの移動の一例を示す図解図である。
【図１１】図１１は図１実施例のシミュレーションシステムのオブジェクティブに従った動作の一例を示すフロー図である。
【図１２】図１２は図５実施例の人シミュレータにおけるオブジェクティブを変更する動作の一例を示すフロー図である。
【図１３】図１３は図１２実施例においてオブジェクティブを変更する動作を詳細に示すフロー図である。
【図１４】図１４は累積分布の一例を示す図解図である。
【図１５】図１５は拡張オブジェクティブの一例を示す表である。
【発明を実施するための形態】
【００１５】
図１を参照して、この実施例のシミュレーションシステム１０は、ロボット１２、ロボット１２を遠隔操作する操作装置１４およびロボット１２をシミュレートしたロボットエージェントや人（歩行者）エージェントをシミュレーションするシミュレーション装置１６含む。シミュレーションシステム１０において、ロボット１２を除いて、１台または２台以上のコンピュータ（プロセサ）によって実現される。
【００１６】
この実施例のロボット１２は、たとえば図２に示すコミュニケーションロボットのように、人との共存環境で活動するロボットである。このようなロボット１２は環境の中に存在する人の行動に影響を受けるので、この実施例のシミュレーション装置１６では、ロボット１２の行動をロボットアプリケーションプログラム（ロボット行動決定プログラム）に従ってシミュレーションする際に、人の行動もシミュレーションすることによって、ロボット１２のための安全なロボットアプリケーションプログラムの開発を支援する。
【００１７】
ここで、図２および図３を参照して、この発明の理解に必要な範囲でロボット１２の構成について説明する。ロボット１２は台車３０を含み、台車３０の下面にはロボット１２を移動させる２つの車輪３２および１つの従輪３４が設けられる。２つの車輪３２は車輪モータ３６（図３参照）によってそれぞれ独立に駆動され、台車３０すなわちロボット１２を前後左右の任意方向に動かすことができる。
【００１８】
台車３０の上には、円柱形のセンサ取り付けパネル３８が設けられ、このセンサ取り付けパネル３８には、多数の距離センサ４０が取り付けられる。これらの距離センサ４０は、たとえば赤外線や超音波などを用いてロボット１２の周囲の物体（人や障害物など）との距離を測定するものである。
【００１９】
センサ取り付けパネル３８の上には、胴体４２が直立して設けられる。また、胴体４２の前方中央上部（人の胸に相当する位置）には、上述した距離センサ４０がさらに設けられ、ロボット１２の前方の、主として人との距離を計測する。また、胴体４２には、その側面側上端部のほぼ中央から伸びる支柱４４が設けられ、支柱４４の上には、全方位カメラ４６が設けられる。全方位カメラ４６は、ロボット１２の周囲を撮影するものであり、後述する眼カメラ７０とは区別される。この全方位カメラ４６としては、たとえばＣＣＤやＣＭＯＳのような固体撮像素子を用いるカメラを採用することができる。
【００２０】
胴体４２の両側面上端部（人の肩に相当する位置）には、それぞれ、肩関節４８Ｒおよび肩関節４８Ｌによって、上腕５０Ｒおよび上腕５０Ｌが設けられる。図示は省略するが、肩関節４８Ｒおよび肩関節４８Ｌは、それぞれ、直交する３軸の自由度を有する。すなわち、肩関節４８Ｒは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｒの角度を制御できる。肩関節４８Ｒの或る軸（ヨー軸）は、上腕５０Ｒの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節４８Ｌは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｌの角度を制御できる。肩関節４８Ｌの或る軸（ヨー軸）は、上腕５０Ｌの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。
【００２１】
また、上腕５０Ｒおよび上腕５０Ｌのそれぞれの先端には、肘関節５２Ｒおよび肘関節５２Ｌが設けられる。図示は省略するが、肘関節５２Ｒおよび肘関節５２Ｌは、それぞれ１軸の自由度を有し、この軸（ピッチ軸）の軸回りにおいて前腕５４Ｒおよび前腕５４Ｌの角度を制御できる。
【００２２】
前腕５４Ｒおよび前腕５４Ｌのそれぞれの先端には、人の手に相当するハンド５６Ｒおよびハンド５６Ｌがそれぞれ設けられる。これらのハンド５６Ｒおよび５６Ｌは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット１２は、ハンド５６Ｒおよび５６Ｌを用いて物体を把持または挟持することができる。ただし、ハンド５６Ｒ、５６Ｌの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
【００２３】
また、図示は省略するが、台車３０の前面、肩関節４８Ｒと肩関節４８Ｌとを含む肩に相当する部位、上腕５０Ｒ、上腕５０Ｌ、前腕５４Ｒ、前腕５４Ｌ、ハンド５６Ｒおよびハンド５６Ｌには、それぞれ、接触センサ５８（図３で包括的に示す）が設けられる。台車３０の前面の接触センサ５８は、台車３０への人間や他の障害物の接触を検知する。したがって、ロボット１２は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪３２の駆動を停止してロボット１２の移動を急停止させることができる。また、その他の接触センサ５８は、当該各部位に触れたかどうかを検知する。
【００２４】
胴体４２の中央上部（人の首に相当する位置）には首関節６０が設けられ、さらにその上には頭部６２が設けられる。図示は省略するが、首関節６０は、３軸の自由度を有し、３軸の各軸廻りに角度制御可能である。或る軸（ヨー軸）はロボット１２の真上（鉛直上向き）に向かう軸であり、他の２軸（ピッチ軸、ロール軸）は、それぞれ、それと異なる方向で直交する軸である。
【００２５】
頭部６２には、人の口に相当する位置に、スピーカ６４が設けられる。スピーカ６４は、ロボット１２が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク６６Ｒおよびマイク６６Ｌが設けられる。以下、右のマイク６６Ｒと左のマイク６６Ｌとをまとめてマイク６６ということがある。マイク６６は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。
【００２６】
さらに、人の目に相当する位置には、右の眼球部６８Ｒおよび左の眼球部６８Ｌが設けられる。右の眼球部６８Ｒおよび左の眼球部６８Ｌは、それぞれ右の眼カメラ７０Ｒおよび左の眼カメラ７０Ｌを含む。以下、右の眼球部６８Ｒと左の眼球部６８Ｌとをまとめて眼球部６８ということがある。また、右の眼カメラ７０Ｒと左の眼カメラ７０Ｌとをまとめて眼カメラ７０ということがある。
【００２７】
眼カメラ７０は、ロボット１２に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット１２は、この眼カメラ７０からの映像信号によって、人の左右両目のそれぞれの視線方向（ベクトル）を検出する。
【００２８】
また、眼カメラ７０は、上述した全方位カメラ４６と同様のカメラを用いることができる。たとえば、眼カメラ７０は、眼球部６８内に固定され、眼球部６８は、眼球支持部（図示せず）を介して頭部６２内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、２軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この２軸の一方は、頭部６２の上に向かう方向の軸（ヨー軸）であり、他方は、一方の軸に直交しかつ頭部６２の正面側（顔）が向く方向に直行する方向の軸（ピッチ軸）である。眼球支持部がこの２軸の各軸廻りに回転されることによって、眼球部６８ないし眼カメラ７０の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ６４、マイク６６および眼カメラ７０の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【００２９】
このように、この実施例のロボット１２は、車輪３２の独立２軸駆動、肩関節４８の３自由度（左右で６自由度）、肘関節５２の１自由度（左右で２自由度）、首関節６０の３自由度および眼球支持部の２自由度（左右で４自由度）の合計１７自由度を有する。
【００３０】
図３はロボット１２の電気的な構成を示すブロック図である。この図３を参照して、ロボット１２は、１つまたは２以上のプロセサ８０を含む。プロセサ８０は、バス８２を介して、メモリ８４、モータ制御ボード８６、センサ入力／出力ボード８８および音声入力／出力ボード９０に接続される。
【００３１】
メモリ８４は、図示は省略をするが、ＲＯＭ、ＨＤＤおよびＲＡＭを含む。ＲＯＭおよびＨＤＤには、各種プログラムが予め記憶される。
【００３２】
モータ制御ボード８６は、たとえばＤＳＰで構成され、各腕や首関節６０および眼球部６８などの各軸モータの駆動を制御する。すなわち、モータ制御ボード８６は、プロセサ８０からの制御データを受け、右眼球部６８Ｒの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「右眼球モータ９２」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、左眼球部６８Ｌの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「左眼球モータ９４」と示す）の回転角度を制御する。
【００３３】
また、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｒの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｒの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「右腕モータ９６」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｌの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｌの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「左腕モータ９８」と示す）の回転角度を制御する。
【００３４】
さらに、モータ制御ボード８６は、プロセサ８０からの制御データを受け、首関節６０の直交する３軸のそれぞれの角度を制御する３つのモータ（図３では、まとめて「頭部モータ１００」と示す）の回転角度を制御する。そして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、車輪３２を駆動する２つのモータ（図３では、まとめて「車輪モータ３６」と示す）の回転角度を制御する。
【００３５】
モータ制御ボード８６にはさらにハンドアクチュエータ１０１が結合され、モータ制御ボード８６は、プロセサ８０からの制御データを受け、ハンド５６Ｒ、５６Ｌの開閉を制御する。
【００３６】
センサ入力／出力ボード８８は、モータ制御ボード８６と同様に、ＤＳＰで構成され、各センサからの信号を取り込んでプロセサ８０に与える。すなわち、距離センサ４０のそれぞれからの反射時間に関するデータがこのセンサ入力／出力ボード８８を通じてプロセサ８０に入力される。また、全方位カメラ４６からの映像信号が、必要に応じてセンサ入力／出力ボード８８で所定の処理を施してからプロセサ８０に入力される。眼カメラ７０からの映像信号も、同様にして、プロセサ８０に入力される。また、上述した複数の接触センサ５８（図３では、まとめて「接触センサ５８」と示す）からの信号がセンサ入力／出力ボード８８を介してプロセサ８０に与えられる。音声入力／出力ボード９０もまた、同様に、ＤＳＰで構成され、プロセサ８０から与えられる音声合成データに従った音声または声がスピーカ６４から出力される。また、マイク６６からの音声入力が、音声入力／出力ボード９０を介してプロセサ８０に与えられる。
【００３７】
また、プロセサ８０は、バス８２を介して通信ＬＡＮボード１０２に接続される。通信ＬＡＮボード１０２は、たとえばＤＳＰで構成され、プロセサ８０から与えられた送信データを無線通信モジュール１０４に与え、無線通信モジュール１０４は送信データを、ネットワークを介してサーバ（図示せず）等に送信する。また、通信ＬＡＮボード１０２は、無線通信モジュール１０４を介してデータを受信し、受信したデータをプロセサ８０に与える。
【００３８】
図１に戻って、操作装置１４は、基本的には１または２以上のコンピュータまたはプロセサによって構成され、そのプロセサのメモリ（図示せず）にロボットアプリケーションプログラム１８が設定されていて、そのロボットアプリケーションプログラムがコンピュータからたとえば無線でロボット１２またはシミュレーション装置１６に与えられる。ロボットアプリケーションプログラム１８は、ロボット１２に対すアプリケーションプログラムであり、たとえばロボット１２を案内ロボットとしとて動作させるときには、そのための動作をロボット１２が実行するようなプログラムである。
【００３９】
操作装置１４のメモリにはさらに、環境データ２０を予め記憶している。環境データ２０は主として図４に示す仮想シミュレーション空間２２の地図データおよびその仮想シミュレーション空間２２内での人エージェントの出現率データを含む。環境および環境内のオブジェクトは３次元モデルデータとして表され、３次元仮想空間として視覚化される。
【００４０】
図４に示す仮想シミュレーション空間２２は、図中点線矩形で示す出入口２２ａを有する３次元閉空間を想定している。この仮想シミュレーション空間２２においては黒色太線で示す通路２２ｂが設定されていて、ロボット１２や人エージェントはその通路５０や広場などを通行し、またはそこに存在する。これらの通路２２ｂや広場は建物や壁などオブジェクトによって区画され、図中丸印で示す場所で分岐または合流する。
【００４１】
シミュレーション装置１６は、基本的には1または２以上のプロセサで構成され、ロボット１２をシミュレートするロボットシミュレータ２４および歩行者のような人エージェントをシミュレートする人シミュレータ２６を含み、それぞれのシミュレーション結果が物理エンジン２８に入力される。
【００４２】
ロボットシミュレータ２４は、たとえば先の非特許文献１として例示したＭＯＲＳＥシミュレータであり、このＭＯＲＳＥシミュレータは、ロボット１２と同様の、多くのセンサ、アクチュエータおよびロボットのモデルを提供し、そのようなモデル用のＡＰＩ（Application Programming Interface）も利用できる。
【００４３】
センサシミュレーションにおいては、たとえば、カメラ画像の場合には、カメラ視点からの光学的な計算を行い、カメラ視点毎の画像情報を生成する。レーザ距離計の場合には、レーザによるスキャンを模して、センサから各方位へ距離計測を行い、その結果をセンサ値として保存する。
【００４４】
開発者がロボットのためのロボットアプリケーションプログラムを準備するとき、それらのプログラムはこれらのＡＰＩにアクセスしてセンサデータ（たとえば、レーザ距離計からの距離の読み取り）およびアクチュエータへのコマンドの送信（たとえば、移動速度）を行う。
【００４５】
人シミュレータ２６は、定期的に新しい歩行者を生成し、それらの位置を更新し、それらがシミュレートされた環境（仮想シミュレーション空間２２）を離れるときにそれらを除去する。歩行者すなわち人は、３次元オブジェクトとして表現され、仮想シミュレータ空間２２内に配置され、アニメーションエンジンを使用して、その歩行動作がアニメーション化される。
【００４６】
ただし、人シミュレータ２６には図１に示すように環境データ２０が与えられるので、人シミュレータ２６は、その環境データに含まれる出現率と呼ばれる予め定義された確率で新しい歩行者を周期的に生成する。そして、その歩行者は図４に示す出入口２２ａの１つに割り当てられ、他の１つに行くように設定される。
【００４７】
ただし、歩行者はしばしばグループとして（家族やカップルのように）生成され、 それらがグループで表示される場合、サイズはグループメンバの分布によって定義し、すべてのメンバが同じ目的を共有すると仮定する。
【００４８】
物理エンジン２８は、物理的な力や法則などに基づいて、ロボットや人エージェントがどのような移動経路をたどるかを計算する。詳しくいうと、物理エンジン２８は、ロボットシミュレータ２４および人シミュレータ２６からの各エージェント（ロボット含む）が意図した動きを、仮想シミュレーション空間２２（図４）で実行する処理を実行する。このとき、他の障害物、構造物や他のエージェントとの干渉が何もなければ、意図したとおりの動きを生成する。しかしながら、干渉がある場合、物理学法則（力学法則）に従って、各エージェントの実際の動きを処理する。そして、物理エンジン２８からは統合したシミュレーションデータが出力される。
【００４９】
シミュレーション装置１６には、ディスプレイ１０５設けられていて、このディスプレイ１０５によって、たとえば図４に示すような仮想シミュレーション空間の画像が、その中に存在するシミュレートされたロボットや人エージェントとともに、表示される。たとえば、人エージェントは、３次元オブジェクトとして表現され、仮想シミュレーション空間２２内に配置され、アニメーションエンジンを使用して、その歩行動作がアニメーション化される。ロボットアプリケーションプログラム１８の開発者は、そのディスプレイ１０５に表示された画像で確認しながら、ロボット１２の行動決定プログラム（アプリケーションプログラム）を作製し、修正する。
【００５０】
図５を参照して、人シミュレータ２６を詳細に説明する。人シミュレータ２６は、ロボットシミュレータ２４と同様に、シミュレーション装置１６のコンピュータないしプロセサによって実現される機能であり、人生成モジュール１１０を含む。この人生成モジュール１１０は、上述のように、環境データ２０に含まれる出現率データ１０８に従って新しい歩行者（人エージェント）を、地図データ１０６が表す、図４に一例を示す仮想シミュレーション空間２２内に、周期的に生成する。
【００５１】
出現率データ１０８は、シミュレーション装置１６の仮想シミュレーション空間２２に投入する人エージェントのための、人の形状、すなわち大人、子供、男性、女性などの人の形状（パターン）やそれぞれの人の出現率が予め設定されているデータベースであり、設定された確率で設定された形状の人エージェントが生成される。
【００５２】
なお、この出現率データ１０８では、曜日や時間ごとに異なるデータセットを保持しておき、曜日や時間を指定してシミュレーションできるようにしてもよい。そうすれば、ある時間帯にロボットを動かすとどうなるのかなど、いろいろシミュレーションすることができる。
【００５３】
ただし、生成される人エージェントがグループを形成することを出現率データ１０８が示していれば、人生成モジュール１１０は、シミュレーションパラメータとして設定されているグループメンバデータ１１２に従ったメンバ構成のグループで複数の人エージェントを生成する。
【００５４】
移動モジュール１１４は、人生成モジュール１１０が生成した人エージェントを、オブジェクティブモデル（Objective Model）１１６に基づいて、仮想シミュレーション空間２２（図４）内を移動させる。ここで、オブジェクティブとは、先に述べたように人々のロボットに対する反応ないし振る舞いを意味するが、具体的には、仮想シミュレーション空間２２において、人エージェント（図示せず）の視界にロボットエージェント（図示せず）が入ったときに、人エージェントが示す反応の仕方、つまり人が実空間で実際に執り得る対ロボット行動パターンを規定する命令セットである。この実施例では図６に示す４つの典型的な反応の態様（オブジェクティブ)をモデルとして設定しておき、移動モジュール１１４は人エージェントを移動させるとき、そのモデルが示すオブジェクティブに従って移動させる。つまり、オブジェクティブ１１６は、仮想シミュレーション空間においてロボットの存在に対する反応行動を人エージェントに行わせる、第１命令セットとして機能する。これらのオブジェクティブはシミュレーションシステム１０の第１メモリ（図示せず）に記憶されている。
【００５５】
なお、このオブジェクティブモデル１１６に予め設定されている利用可能なオブジェクティブは、たとえば上記第１メモリから読み出してそれらの一覧をたとえばディスプレイ１０５などに表示するなどして、デバッグしようとする開発者が知ることができる。
【００５６】
図６に示す基本オブジェクティブ１１６は、ロボットが自分の視野に入ったときに人が執る行動パターン（オブジェクティブ）である。図６において、発生尤度は、そのオブジェクティブが再現される確率を示し、オブジェクティブUninterested（興味を持たず、そのまま通り過ぎる）の発生尤度は０．６に設定されている。オブジェクティブSlow（速度を落とし、ロボットを見ながら通り過ぎる）の発生尤度は０．０５に設定されている。図７に図解しているオブジェクティブInterest（ロボットに近づき、対話を行う）の発生尤度は０．３に設定されている。図８に図解しているオブジェクティブObserve（やや遠目に立ち止まり、ロボットを見る）の発生尤度は０．０５に設定されている。
【００５７】
図７は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopを隔てて停止し、ロボット１２と対話するオブジェクティブを図解している。
【００５８】
図８は、人（「i」で示す）が自分の視野内にロボット１２を発見すると、ロボット１２の回りに、ロボット１２から停止距離Ｄstopよりもやや大きい観察距離Ｄobserveを隔てて停止し、ロボット１２を観察するオブジェクティブを図解している。
【００５９】
ただし、移動モジュール１１４は、シミュレーションパラメータに含まれるソーシャルフォースモデル（Social Force Model）１１８およびインタラクションモデル（Interaction with robot model）１２０からのそれぞれのモデルデータを考慮して、人エージェントの移動をシミュレートする。ソーシャルフォースモデルとは、後述の図１０に示すように歩行者どうしがいかに影響して挙動が変わるかということを表すモデルである。たとえば、斥力または反力などとして知られている。
【００６０】
仮想シミュレーション空間２２内において、人エージェントの行動は、他のエージェントから影響されて変化するが（たとえば、人同士がぶつからないように避ける、ロボットを見たら近づく、など）。
【００６１】
たとえば図９に示すように、２人の人ｉおよびｊは相互に影響して次のステップでの移動位置を決定する場合がある、人エージェントｉは本来はｄi,jの方向へ移動するのであるが、人エージェントｊが人エージェントｉに対して角度θi,jの方向に速度ｖi,jで移動しようとしているため、人エージェントｉは、結局ｄ’i,jの方向へ移動することになる。
【００６２】
なお、インタラクションモデル１２０とは、人のロボットとの相互作用のパターンを予め設定しているモデルである。
【００６３】
図１０は図４に示す仮想シミュレーション環境（空間）の一部を模式的に示していて、仮想シミュレーション空間２２は、出入口２２ａを設けた壁などのオブジェクト１２４で仕切られた閉空間を想定している。ただし、オブジェクト１２４はすべて、障害物として地図データ１０６に書き込まれている。
【００６４】
ロボットシミュレータ２４は、環境データ２０に含まれるロボット（ロボットエージェント）の位置等のデータに基づいて、ロボットアプリケーションプログラム１８に従ったロボットの次のステップでの行動をシミュレーションする。ここで、ロボットアプリケーションプログラム１８は、図３のセンサ入力／出力ボード８８に入力されるセンサ出力に応じて、各モータすなわちアクチュエータを制御してロボットの行動を決定するプログラムである。
【００６５】
図１０の例でいえば、ロボットアプリケーションプログラム１８は、たとえば図１０において、一方の出入口２２ａからロボット１２が仮想シミュレーション空間２２に入り、他方の出入口２２ａから出るまで、通路２２ｂに従って移動させるように設定されている。なお、図１０において参照符号１２６が、シミュレーションのためにこの仮想シミュレーション空間２２に投入された人エージェントを示し、参照符号１２８が障害物を示す。
【００６６】
さらに、図５に示す実施例では、拡張オブジェクティブモデル１３０が設けられる。この拡張オブジェクティブモデル１３０は、後述のようにして実世界で発見した人々の反応を、基本オブジェクティブモデル１１６とは別に、追加して共有するようにしたオブジェクティブである。このような拡張オブジェクティブモデル１３０を追加でき、その追加した拡張オブジェクティブモデル１３０に従って人々の振る舞いをシミュレーションすることによって、人エージェントの新しい動きをシミュレータ上で再現させることができる。
【００６７】
ここで、まず、図１１を参照して、基本オブジェクティブモデル１１６に従った図１に示すシミュレーション装置１６における動作の一例を説明する。
【００６８】
最初のステップＳ１において、一例として図４（および図１１）に示す通路２２ｂ上を移動するように設定されている、ロボットアプリケーションプログラム１８を読み込むとともに、環境データ２０を読み込む。すなわち、ロボット１２の行動をシミュレーションする図４（および図１１）のような仮想シミュレーション空間２２の地図データ１０６および出現率データ１０８が示す仮想シミュレーション空間２２に投入する人エージェントの生成に関するパラメータ（出現頻度、移動経路、グループ人数、大人子供や男女の比率、背の高さなど）および各エージェント（ロボット１２を含む）の位置データなどを読み込む。
【００６９】
次のステップＳ３では、人シミュレータ２６の人生成モジュール１１０によって、環境データ２０が提示する人エージェントの生成に関する上述のパラメータおよびグループからの人パターンのデータに従って、仮想シミュレーション空間２２内で、１または２以上の人エージェントを生成して配置する。
【００７０】
ステップＳ５で人シミュレータ２６は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、そしてオブジェクティブモデル１１６が示す対ロボット行動パターンに基づいて、人エージェントの次のステップでの行動を決定する。なお、図６に示す基本オブジェクティブの一覧は開発者（操作装置１４のオペレータ）が自由にアクセスできる形で提供される。
【００７１】
ステップＳ７でロボットシミュレータ２４は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、ロボットアプリケーションプログラム１８に従って、次のステップでのロボット１２の行動を決定する。
【００７２】
具体的には、ステップＳ７では、ロボット１２がたとえば搬送ロボットや搭乗型ロボットのように目的地に向かうことが主目的のロボットである場合、他の人々の現在の位置や移動速度から、なるべく他人の移動に干渉しないような移動経路を計算する処理を行う。また、ロボット１２が人々にサービス提供することが目的のロボットである場合には、たとえば、ロボットに興味がありそうな人に接近するために、単純な場合では、ロボットの近傍で止まっている人を選択して、その人に向かって進む、また、人々が集まりがちな場所を選んでそのような場所でやってくる人を待ち受ける、また、混雑を起こさないように過度に人々が通る場所には近づかないようにする、といった処理を行ったりする。
【００７３】
このステップＳ７の場合、ステップＳ５での人エージェントの次のステップでの行動を決定しているので、それを考慮して、上述の処理を実行する。そのため、人と共存する実空間で活動するロボットアプリケーションプログラムの当否を、仮想シミュレーション空間内で判断することができる。
【００７４】
その後ステップＳ９で、物理エンジン２８において、各エージェントの行動を実現する。詳しくいうと、ステップＳ９では、先に説明したように、各エージェント（ロボット含む）が意図した動きを仮想シミュレーション空間２２内で実施する処理が行われ、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりに動く。たとえば、エージェントが１歩前進しようとした場合、その意図通り、エージェントが１歩前進する。
【００７５】
ところが、干渉がある場合、物理学法則（力学法則）に従って各エージェントの実際の動きが処理される。単純な場合、たとえば壁に向かって進もうとすると、壁に衝突し、それ以上前進できないし、一定の反発係数に従って反力を受ける。エージェント同士の衝突の場合、前進する動きと、反力による移動が重なり合って、たとえば、単純な例を考えると、前進中にたとえば側方から衝突すると、斜め前方へと実際には動くことになる。
【００７６】
次のステップＳ１１で、環境データやセンサデータなどを更新する。
【００７７】
そして、ステップＳ１３でシミュレーションを終了するかどうか判断し、シミュレーションを続行するなら再び先のステップＳ３に戻り、たとえば行動決定プログラムが終了するなどした場合“ＹＥＳ”が判断され、シミュレーションを終了する。
【００７８】
このように、シミュレーション装置１６においてオブジェクティブモデル１１６に従ってロボットの周囲の人の行動を再現するようにシミュレーションを行い、その状態をディスプレイ１０５（図１）で確認することにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットアプリケーションプログラム１８の開発を効率的に行うことができる。
【００７９】
しかしながら、人々の存在する環境でロボットの移動をテストすることで新たなオブジェクティブが発見される現状がある。たとえば、ロボットがちらしを配ると、ちらしだけを受け取って去っていくという人々の振る舞い、移動するロボットが停止すると多くの子供が寄ってくるという振る舞いなどである。そこで、この実施例では、こうした人々の新しい振る舞いを追加して共有可能にしようとする。
【００８０】
そのための動作例が図１２に示される。図１２のフロー図は操作装置１４の１または２以上のコンピュータまたはプロセサのメモリ（図示せず）に予め設定されているロボットアプリケーションプログラムであり、たとえばロボット１２を案内ロボットとしとて動作させるときには、そのための動作をロボット１２が実行するようなプログラムである。
【００８１】
図１２の最初のステップＳ２１では、上記の１または２以上のコンピュータまたはプロセサ（以下の説明では単に、「コンピュータ」とする。）は、図６に示す基本オブジェクティブおよび発生尤度を読み込み、初期オブジェクティブ(目的地に向かう)を設定する。
【００８２】
次のステップＳ２３では、コンピュータは、シミュレーションが実行されているかどうか判断する。このステップＳ２３で“ＮＯ”を判断したときには、この図１２の処理は終了する。
【００８３】
ステップＳ２３で“ＹＥＳ”が判断されたとき、すなわち、シミュレーションが実行されているとき、続くステップＳ２５で、コンピュータは、現在選択されているオブジェクティブを実行し、人エージェントの動きを出力する。同時に、コンピュータは、オブジェクティブを変更可能な状態かどうか計算する。オブジェクティブ自身は、その継続時間を初期化時に形成さんでき、その継続時間内に他のオブジェクティブに遷移することはない。たとえば、ロボットを見るというオブジェクティブでは、「ロボットを見ている時間」を実データの確率分布に基づいて決定しており、その継続時間内は他のオブジェクティブに遷移しない。
【００８４】
その計算に基づいて、ステップＳ２７でコンピュータは、オブジェクティブが変更可能な状態、すなわち、実行中のオブジェクティブの継続時間を過ぎたかどうか判断する。
【００８５】
ステップＳ２７で“ＮＯ”なら、終了し、“ＹＥＳ”なら、具体的に図１３に示す次のステップＳ２９でオブジェクティブを変更する。
【００８６】
図１３の最初のステップＳ３１では、コンピュータは、該当する人エージェントからロボットが見えるかどうか、判断する。つまり、オブジェクティブを変更するためには、人エージェントからロボットエージェントが見えることが前提である。したがって、このステップＳ３１で“ＮＯ”をコンピュータが判断したとき、そのまま終了する。
【００８７】
ステップＳ３１で“ＹＥＳ”を判断したとき、コンピュータは、次のステップＳ３３で、図６に示す基本オブジェクティブをすべて候補リスト（List_cand）に追加する。
【００８８】
その後、ステップＳ３５を繰り返し実行して、拡張オブジェクティブ（EOi）毎に、拡張オブジェクティブの条件が成立するかどうか判断する。この条件が成立するかどうかは、ロボットの状態（ステータス）、たとえば、ロボットが紙（ちらし）を持っているかどうか、ロボットの移動速度かが所定の速度以上か、以下か、対象が大人か子供か、ロボットが発話中かどうか、などの各パラメータに基づいて判断する。
【００８９】
ステップＳ３５で“ＹＥＳ”が判断されると、ステップＳ３７で、その拡張オブジェティブEOiを候補リストList_candに追加するが、“ＮＯ”なら、次の拡張オブジェクティブに対してステップＳ３５を判断する。
【００９０】
このような処理に従って拡張オブジェクティブEOiを候補リストList_candに追加する。
【００９１】
その後、ステップＳ３９において、コンピュータは、候補リストList_cand内に存在するオブジェクティブ（Oi）すなわち基本オブジェクティブもしくは拡張オブジェクティブのうち条件を充足したオブジェクティブ毎に、発生確率（Pj）を計算する。
【００９２】
ステップＳ３９では、具体的には、たとえば図６や図１４に示す発生各尤度を正規化し、発生確率を計算する、という方法を採る。たとえば、以下の３つの尤度を持つオブジェクティブが、発生する条件を満たしていた、とする。
０１：尤度０．８
０２：尤度０．３
０３：尤度０．２
これらの総和では１．０にならないので、総和が１．０になるように正規化を実施する。
【００９３】
単純な正規化は、数１のように、３つのオブジェクティブを加算して正規化を行うことである。
［数１］
０１：発生確率Ｐ１＝0.8/(0.8+0.3+0.2）＝０．６１５
０２：発生確率Ｐ２＝0.3/(0.8+0.3+0.2）＝０．２３０７
０３：発生確率Ｐ３＝0.2/(0.8+0.3+0.2）＝０．１５３８
実施例ではこの数１のような正規化を行っているが、別の正規化方法を採用することももちろん可能である。
【００９４】
次のステップＳ４１では、コンピュータは、乱数を使用して次に実行するオブジェクティブ（O_next）を候補リストList_candから選択し、発生尤度として発生確率Pjに基づいて決定する。
【００９５】
たとえば、ステップＳ４１は、０．０‐１．０までの乱数randを発生させ、そのうち、以下の数２のような方法で次に実行するオブジェクティブO_nextを決定する。実施例では、オブジェクティブの発生確率の総和により、どこに分布するかを決定している
［数２］
０１：rand <=P1（0.615）
０２：P1(0.615) <rand <=P1＋P2（0.615＋0.2307）
０３：P1＋P2(0.615＋0.2307) <rand <=1＋P2＋P3（1.0）
そして、ステップＳ４３で、オブジェクティブO_nextを変更する。
【００９６】
このように、この実施例では、オブジェクティブが変更可能な状態かどうか判断し、変更可能な状態であれば、実施可能なオブジェクティブを候補リストに追加する。続いて、各拡張オブジェクティブ毎の条件を確認し、条件が成立した拡張オブジェクティブのみが候補リストへと追加される。最後に、候補リスト内の各オブジェクティブの尤度に基づいて発生確率を計算し、変更するオブジェクティブが決定される。拡張オブジェクティブは，例えば図１５に示す拡張オブジェクティブモデル１３０として、登録されている。この拡張オブジェクティブモデル１３０は、図６に示す基本オブジェクティブモデル１１６と同様、オブジェクティブ一覧としてディスプレイ１０５（図１）に表示され、他の開発者（ユーザ）と共有することができる。
【００９７】
なお、図１５に例示する拡張オブジェクティブの１つは、ステップＳ３５でロボットが紙（ちらし）を持っていることという発生条件の成立を判断したとき変更される拡張オブジェクティブTaking paper（ロボットに近づき、紙を取って立ち去る)であり、この拡張オブジェクティブに対しては、ステップＳ３９で計算された発生確率が発生尤度０．４として登録されている。
【００９８】
図１５に例示する拡張オブジェクティブの他の１つは、ステップＳ３５でロボットの移動速度が遅い（０．５ｍ／秒以下）こと、ロボットが発話中であること、対象が子供であること、という発生条件の成立を判断したとき変更される拡張オブジェクティブInterrupt（ロボットの前に立ち、移動を邪魔する)であり、この拡張オブジェクティブに対しては、ステップＳ３９で計算された発生確率が発生尤度０．５として登録されている。
【００９９】
ただし、ここでの発生尤度は、ユーザが任意に調整（変更）可能である。
【０１００】
したがって、人シミュレータ２６すなわち移動モジュール１１４は、第１記憶手段としての基本オブジェクティブモデル１１６に記憶されている基本オブジェクティブおよび第２記憶手段としての拡張オブジェクティブモデル１３０に記憶された拡張オブジェクティブに従って、人エージェントの移動を制御する。
【０１０１】
すなわち、拡張オブジェクティブモデル１３０も基本オブジェクティブモデル１１６と同様に人シミュレータ２６すなわちシミュレーションシステム１０のユーザが等しく利用できるので、ロボットアプリケーションの開発を効率的に行うことが可能である。たとえば、同じチームの誰かが経験した反応を拡張オブジェクティブに記載しておくと、別の誰かのテスト時においても、登録された拡張オブジェクティブのテストが可能となる。こうした，やりとりは，ロボットアプリケーション開発の効率化に寄与する。
【０１０２】
そのため、実世界で生じた新しい人々の反応ないし振る舞いを拡張オブジェクティブとして追加、共有することができ、新しい人エージェントの動きをシミュレータ上で再現させることができる。そのため、ロボットのアプリケーションプログラムの開発を効率的に実施することができる。
【０１０３】
現場で発見された新たな反応パターンを、シミュレータのユーザが逐次追加していくことは、シミュレータが現場を再現する能力の向上につながる。これによって、シミュレータ上でのロボットシステム（ロボットを用いたアプリケーション）のテストの効果が高まる。
【０１０４】
なお、このシミュレーションシステム１０が行動をシミュレーションできるロボットは実施例で説明した図３および図４に示すロボット１２に限定されるものではない。他の形式、構造のコミュニケーションロボットにもこのシミュレーション装置は適用可能である。
【符号の説明】
【０１０５】
１０  …シミュレーションシステム
１２  …ロボット
１４  …操作装置
１６  …シミュレーション装置
１８  …ロボットアプリケーションプログラム
２２  …仮想シミュレーション空間
２４  …ロボットシミュレータ
２６  …人シミュレータ
２８  …物理エンジン
１１６  …基本オブジェクティブモデル
１３０  …拡張オブジェクティブモデル
【図１】
2018120404.tif 000003
【図２】
2018120404.tif 000004
【図３】
2018120404.tif 000005
【図４】
2018120404.tif 000006
【図５】
2018120404.tif 000007
【図６】
2018120404.tif 000008
【図７】
2018120404.tif 000009
【図８】
2018120404.tif 000010
【図９】
2018120404.tif 000011
【図１０】
2018120404.tif 000012
【図１１】
2018120404.tif 000013
【図１２】
2018120404.tif 000014
【図１３】
2018120404.tif 000015
【図１４】
2018120404.tif 000016
【図１５】
2018120404.tif 000017