(57)【要約】    【課題】  シミュレーション装置においてテストコードを実行できるようにして、ロボットアプリケーションプログラムのデバッグを容易に行えるようにする。    【解決手段】  ロボットシステム（１０）のシミュレーション装置（１６）は、人シミュレータ２６を含む。シミュレーション装置１６は、４種類のオブジェクティブを予め設定しているオブジェクティブモデル１１６およびテストコードを記述しているスクリプト１２２を含む。人シミュレータ２６は、オブジェクティブとは別に、テストモードにおいてスクリプト１２２に設定されている命令を実行することによって、特定の状況を再現する。【選択図】  図５
2018097417.tif 000002
【特許請求の範囲】
【請求項１】
仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、
前記仮想シミュレーション空間に人エージェントを投入する人生成モジュール、
第１命令セットに従って前記人エージェントにロボットの存在に対する反応行動を行わせる移動モジュール、および
第２命令セットによって前記第１命令セットを部分的に変更することによって前記仮想シミュレーション空間において特定の状況を再現する状況再現手段を備える、シミュレーションシステム。
【請求項２】
仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、
前記仮想シミュレーション空間に人エージェントを投入する人生成モジュール、
前記人エージェントにロボットの存在に対する反応行動を行わせる第１命令セットを設定する第１メモリ、
前記第１メモリの前記第１命令セットに従って前記人エージェントの移動を制御する移動モジュール、および
前記移動モジュールによって移動される人エージェントを含めて前記仮想シミュレーション空間を表示するディスプレイを備える、シミュレーションシステム。
【請求項３】
前記第１命令セットより上位であって第１命令セットを部分的に変更可能な第２命令セットを設定する第２メモリをさらに備え、
前記人生成モジュールおよび前記移動モジュールの少なくともいずれかが前記第２命令セットによって制御される、請求項２記載のシミュレーションシステム。
【請求項４】
出現率に従って前記人生成モジュールによって前記仮想シミュレーション空間内に人エージェントを出現させる手段をさら備え、
前記第２命令セットは前記出現率に関係なく前記人生成モジュールによって前記仮想シミュレーション空間内に人エージェントを出現させる、請求項２または３記載のシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はシミュレーションシステムに関し、特にたとえば、コミュニケーションロボットのようなロボットと人との共存環境におけるロボットや人エージェントをシミュレーションする、シミュレーションシステムに関する。
【背景技術】
【０００２】
従来のこの種のシミュレーション装置が非特許文献１、２で開示されている。これらの非特許文献１、２のシミュレーション装置では、センサやアクチュエータをシミュレーションして可視化することによって、人との共存環境におけるロボットの適応をより簡単にシミュレーションすることができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】https://www.openrobots.org/morse/doc/stable/morse.html
【非特許文献２】http://gazebosim.org/
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような共存環境で動くロボットをデバッグするためには問題を引き起こす人々の振る舞いを何回も繰り返しデバッグする必要がある。しかしながら、非特許文献のような先行技術では単にセンサをシミュレーションするだけなので、特定の状況（限られた時間帯で発生する状況、人数が多いときにのみ発生する状況など）を再現するのが難しく、必要なデバッグが行えず、最終的には実空間での動作確認が必要となってしまうなどの問題がある。
【０００５】
それゆえに、この発明の主たる目的は、新規な、シミュレーションシステムを提供することである。
【０００６】
この発明の他の目的は、必要なデバッグを容易に行える、シミュレーションシステムを提供することである。
【課題を解決するための手段】
【０００７】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００８】
第１の発明は、仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、仮想シミュレーション空間に人エージェントを投入する人生成モジュール、第１命令セットに従って人エージェントにロボットの存在に対する反応行動を行わせる移動モジュール、および第２命令セットによって第１命令セットを部分的に変更することによって仮想シミュレーション空間において特定の状況を再現する状況再現手段を備える、シミュレーションシステムである。
【０００９】
第１の発明では、シミュレーションシステム（１０：実施例において相当する部分を例示する参照符号。以下、同様。）は、人生成モジュール（１１０）および移動モジュール（１１４）を備え、人生成モジュール（１１０）は、たとえば出現率データ（１１８）に従って人エージェントを生成し、仮想シミュレーション空間（２２）内に投入する。移動モジュール（１１４）は、たとえばオブジェクティブのような第１命令セットに従って、人エージェントに対してロボットに対する定型反応行動を行わせる。状況再現手段（１２２）は、その第１命令セットを部分的に変更するなどして、仮想シミュレーション空間において特定の状況を再現する。
【００１０】
第１の発明によれば、人エージェントに定型のロボット反応行動を生じさせる第１命令セットを一部変更することによって、特定の状況を仮想シミュレーション空間に再現させることができるので、デバッグが容易になる。
【００１１】
第２の発明は、仮想シミュレーション空間に投入した人エージェントの行動をシミュレーションするシミュレーションシステムであって、仮想シミュレーション空間に人エージェントを投入する人生成モジュール、人エージェントにロボットの存在に対する反応行動を行わせる第１命令セットを設定する第１メモリ、第１メモリの第１命令セットに従って人エージェントの移動を制御する移動モジュール、および移動モジュールによって移動される人エージェントを含めて仮想シミュレーション空間を表示するディスプレイを備える、シミュレーションシステムである。
【００１２】
第２の発明では、シミュレーションシステム（１０）は人生成モジュール（１１０）および移動モジュール（１１４）を含む人シミュレータ（２６）を備える。人生成モジュール（１１０）は、たとえば出現率データ（１１８）に従って人エージェントを生成し、仮想シミュレーション空間（２２）内に投入する。移動モジュール（１１４）は、たとえばオブジェクティブのような、第１メモリに予め設定されている第１命令セットに従って、人エージェントに対してロボットに対する定型反応行動を行わせる。人シミュレータ（２６）に接続されたディスプレイ（１０５）は、移動モジュールによって移動される人エージェントを含めて仮想シミュレーション空間を表示する。
【００１３】
第２の発明によれば、仮想シミュレーション空間内の人エージェントの第１命令セットに従った対ロボット反応行動を目視によって確認することができるので、シミュレーションを効率的に行える。
【００１４】
第３の発明は、第２の発明に従属し、第１命令セットより上位であって第１命令セットを部分的に変更可能な第２命令セットを設定する第２メモリをさらに備え、人生成モジュールおよび移動モジュールの少なくともいずれかが第２命令セットによって制御される、シミュレーションシステムである。
【００１５】
第３の発明では、第２メモリに記述された第２命令セットに従って、人生成モジュール（１１０）および／または移動モジュール（１１４）が人エージェントを生成し、かつ／または人エージェントを移動させる。
【００１６】
第３の発明によれば、第２命令セットによって第１命令セットを部分的に書き換え可能なので、第１命令セットに従う人エージェントの行動を部分的に変更することができる。したがって、デバッグで必要な特定的な状況を容易に再現でき、デバッグの効率化が期待できる。
【００１７】
第４の発明は、第２の発明または第３の発明に従属し、出現率に従って人生成モジュールによって仮想シミュレーション空間内に人エージェントを出現させる手段をさら備え、第２命令セットは出現率に関係なく人生成モジュールによって仮想シミュレーション空間内に人エージェントを出現させる、シミュレーションシステムである。
【００１８】
第４の発明では、たとえば出現率データ（１１８）からの出現率に従って、人生成モジュール（１１０）が人エージェントを生成する。第２命令セットはその出現率とは関係なく人生成モジュール（１１０）によって任意のタイミングで任意の種類の人エージェントを生成させることができる。
【００１９】
第４の発明によれば、デバッグのために、一度に多人数の人エージェントを仮想シミュレーション空間に投入して特定の状況を容易に再現させることができ、デバッグの効率化が記載できる。
【発明の効果】
【００２０】
この発明によれば、人エージェントのロボットに対する行動を容易に再現できるテストコードを使い、必要なデバッグを容易に行うことができる。
【００２１】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２２】
【図１】図１はこの発明の一実施例のシミュレーションシステムを示すブロック図である。
【図２】図２はこの発明が適用されるロボットの一例を示す図解図である。
【図３】図３は図２に示すロボットの電気的な構成を示すブロック図である。
【図４】図４は図１の仮想シミュレーション空間の一例を示す図解図である。
【図５】図５は図４の人シミュレータの詳細を示す機能ブロック図である。
【図６】図６は人エージェントのオブジェクティブモデルの一例を示す図解図である。
【図７】図７は人エージェントのオブジェクティブモデルの他の例を示す図解図である。
【図８】図８は人エージェントのオブジェクティブモデルのその他の例を示す図解図である。
【図９】図９は図４の仮想シミュレーション空間の一部における人エージェントの移動の一例を示す図解図である。
【図１０】図１０は図１実施例のシミュレーションシステムのオブジェクティブに従った動作の一例を示すフロー図である。
【図１１】図１１はスクリプトの一例を示す表である。
【図１２】図１２は図１実施例のシミュレーションシステムのスクリプトに従った動作の他の例を示すフロー図である。
【発明を実施するための形態】
【００２３】
図１を参照して、この実施例のシミュレーションシステム１０は、ロボット１２、ロボット１２を遠隔操作する操作装置１４およびロボット１２をシミュレートしたロボットエージェントや人（歩行者）エージェントをシミュレーションするシミュレーション装置１６含む。シミュレーションシステム１０において、ロボット１２を除いて、１台または２台以上のコンピュータ（プロセサ）によって実現される。
【００２４】
この実施例のロボット１２は、たとえば図２に示すコミュニケーションロボットのように、人との共存環境で活動するロボットである。このようなロボット１２は環境の中に存在する人の行動に影響を受けるので、この実施例のシミュレーション装置１６では、ロボット１２の行動をロボットアプリケーションプログラム（ロボット行動決定プログラム）に従ってシミュレーションする際に、人の行動もシミュレーションすることによって、ロボット１２のための安全なロボットアプリケーションプログラムの開発を支援する。
【００２５】
ここで、図２および図３を参照して、この発明の理解に必要な範囲でロボット１２の構成について説明する。ロボット１２は台車３０を含み、台車３０の下面にはロボット１２を移動させる２つの車輪３２および１つの従輪３４が設けられる。２つの車輪３２は車輪モータ３６（図３参照）によってそれぞれ独立に駆動され、台車３０すなわちロボット１２を前後左右の任意方向に動かすことができる。
【００２６】
台車３０の上には、円柱形のセンサ取り付けパネル３８が設けられ、このセンサ取り付けパネル３８には、多数の距離センサ４０が取り付けられる。これらの距離センサ４０は、たとえば赤外線や超音波などを用いてロボット１２の周囲の物体（人や障害物など）との距離を測定するものである。
【００２７】
センサ取り付けパネル３８の上には、胴体４２が直立して設けられる。また、胴体４２の前方中央上部（人の胸に相当する位置）には、上述した距離センサ４０がさらに設けられ、ロボット１２の前方の、主として人との距離を計測する。また、胴体４２には、その側面側上端部のほぼ中央から伸びる支柱４４が設けられ、支柱４４の上には、全方位カメラ４６が設けられる。全方位カメラ４６は、ロボット１２の周囲を撮影するものであり、後述する眼カメラ７０とは区別される。この全方位カメラ４６としては、たとえばＣＣＤやＣＭＯＳのような固体撮像素子を用いるカメラを採用することができる。
【００２８】
胴体４２の両側面上端部（人の肩に相当する位置）には、それぞれ、肩関節４８Ｒおよび肩関節４８Ｌによって、上腕５０Ｒおよび上腕５０Ｌが設けられる。図示は省略するが、肩関節４８Ｒおよび肩関節４８Ｌは、それぞれ、直交する３軸の自由度を有する。すなわち、肩関節４８Ｒは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｒの角度を制御できる。肩関節４８Ｒの或る軸（ヨー軸）は、上腕５０Ｒの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節４８Ｌは、直交する３軸のそれぞれの軸廻りにおいて上腕５０Ｌの角度を制御できる。肩関節４８Ｌの或る軸（ヨー軸）は、上腕５０Ｌの長手方向（または軸）に平行な軸であり、他の２軸（ピッチ軸およびロール軸）は、その軸にそれぞれ異なる方向から直交する軸である。
【００２９】
また、上腕５０Ｒおよび上腕５０Ｌのそれぞれの先端には、肘関節５２Ｒおよび肘関節５２Ｌが設けられる。図示は省略するが、肘関節５２Ｒおよび肘関節５２Ｌは、それぞれ１軸の自由度を有し、この軸（ピッチ軸）の軸回りにおいて前腕５４Ｒおよび前腕５４Ｌの角度を制御できる。
【００３０】
前腕５４Ｒおよび前腕５４Ｌのそれぞれの先端には、人の手に相当するハンド５６Ｒおよびハンド５６Ｌがそれぞれ設けられる。これらのハンド５６Ｒおよび５６Ｌは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット１２は、ハンド５６Ｒおよび５６Ｌを用いて物体を把持または挟持することができる。ただし、ハンド５６Ｒ、５６Ｌの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
【００３１】
また、図示は省略するが、台車３０の前面、肩関節４８Ｒと肩関節４８Ｌとを含む肩に相当する部位、上腕５０Ｒ、上腕５０Ｌ、前腕５４Ｒ、前腕５４Ｌ、ハンド５６Ｒおよびハンド５６Ｌには、それぞれ、接触センサ５８（図３で包括的に示す）が設けられる。台車３０の前面の接触センサ５８は、台車３０への人間や他の障害物の接触を検知する。したがって、ロボット１２は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪３２の駆動を停止してロボット１２の移動を急停止させることができる。また、その他の接触センサ５８は、当該各部位に触れたかどうかを検知する。
【００３２】
胴体４２の中央上部（人の首に相当する位置）には首関節６０が設けられ、さらにその上には頭部６２が設けられる。図示は省略するが、首関節６０は、３軸の自由度を有し、３軸の各軸廻りに角度制御可能である。或る軸（ヨー軸）はロボット１２の真上（鉛直上向き）に向かう軸であり、他の２軸（ピッチ軸、ロール軸）は、それぞれ、それと異なる方向で直交する軸である。
【００３３】
頭部６２には、人の口に相当する位置に、スピーカ６４が設けられる。スピーカ６４は、ロボット１２が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク６６Ｒおよびマイク６６Ｌが設けられる。以下、右のマイク６６Ｒと左のマイク６６Ｌとをまとめてマイク６６ということがある。マイク６６は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。
【００３４】
さらに、人の目に相当する位置には、右の眼球部６８Ｒおよび左の眼球部６８Ｌが設けられる。右の眼球部６８Ｒおよび左の眼球部６８Ｌは、それぞれ右の眼カメラ７０Ｒおよび左の眼カメラ７０Ｌを含む。以下、右の眼球部６８Ｒと左の眼球部６８Ｌとをまとめて眼球部６８ということがある。また、右の眼カメラ７０Ｒと左の眼カメラ７０Ｌとをまとめて眼カメラ７０ということがある。
【００３５】
眼カメラ７０は、ロボット１２に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット１２は、この眼カメラ７０からの映像信号によって、人の左右両目のそれぞれの視線方向（ベクトル）を検出する。
【００３６】
また、眼カメラ７０は、上述した全方位カメラ４６と同様のカメラを用いることができる。たとえば、眼カメラ７０は、眼球部６８内に固定され、眼球部６８は、眼球支持部（図示せず）を介して頭部６２内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、２軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この２軸の一方は、頭部６２の上に向かう方向の軸（ヨー軸）であり、他方は、一方の軸に直交しかつ頭部６２の正面側（顔）が向く方向に直行する方向の軸（ピッチ軸）である。眼球支持部がこの２軸の各軸廻りに回転されることによって、眼球部６８ないし眼カメラ７０の先端（正面）側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ６４、マイク６６および眼カメラ７０の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【００３７】
このように、この実施例のロボット１２は、車輪３２の独立２軸駆動、肩関節４８の３自由度（左右で６自由度）、肘関節５２の１自由度（左右で２自由度）、首関節６０の３自由度および眼球支持部の２自由度（左右で４自由度）の合計１７自由度を有する。
【００３８】
図３はロボット１２の電気的な構成を示すブロック図である。この図３を参照して、ロボット１２は、１つまたは２以上のプロセサ８０を含む。プロセサ８０は、バス８２を介して、メモリ８４、モータ制御ボード８６、センサ入力／出力ボード８８および音声入力／出力ボード９０に接続される。
【００３９】
メモリ８４は、図示は省略をするが、ＲＯＭ、ＨＤＤおよびＲＡＭを含む。ＲＯＭおよびＨＤＤには、各種プログラムが予め記憶される。
【００４０】
モータ制御ボード８６は、たとえばＤＳＰで構成され、各腕や首関節６０および眼球部６８などの各軸モータの駆動を制御する。すなわち、モータ制御ボード８６は、プロセサ８０からの制御データを受け、右眼球部６８Ｒの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「右眼球モータ９２」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、左眼球部６８Ｌの２軸のそれぞれの角度を制御する２つのモータ（図３では、まとめて「左眼球モータ９４」と示す）の回転角度を制御する。
【００４１】
また、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｒの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｒの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「右腕モータ９６」と示す）の回転角度を制御する。同様にして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、肩関節４８Ｌの直交する３軸のそれぞれの角度を制御する３つのモータと肘関節５２Ｌの角度を制御する１つのモータとの計４つのモータ（図３では、まとめて「左腕モータ９８」と示す）の回転角度を制御する。
【００４２】
さらに、モータ制御ボード８６は、プロセサ８０からの制御データを受け、首関節６０の直交する３軸のそれぞれの角度を制御する３つのモータ（図３では、まとめて「頭部モータ１００」と示す）の回転角度を制御する。そして、モータ制御ボード８６は、プロセサ８０からの制御データを受け、車輪３２を駆動する２つのモータ（図３では、まとめて「車輪モータ３６」と示す）の回転角度を制御する。
【００４３】
モータ制御ボード８６にはさらにハンドアクチュエータ１０１が結合され、モータ制御ボード８６は、プロセサ８０からの制御データを受け、ハンド５６Ｒ、５６Ｌの開閉を制御する。
【００４４】
センサ入力／出力ボード８８は、モータ制御ボード８６と同様に、ＤＳＰで構成され、各センサからの信号を取り込んでプロセサ８０に与える。すなわち、距離センサ４０のそれぞれからの反射時間に関するデータがこのセンサ入力／出力ボード８８を通じてプロセサ８０に入力される。また、全方位カメラ４６からの映像信号が、必要に応じてセンサ入力／出力ボード８８で所定の処理を施してからプロセサ８０に入力される。眼カメラ７０からの映像信号も、同様にして、プロセサ８０に入力される。また、上述した複数の接触センサ５８（図３では、まとめて「接触センサ５８」と示す）からの信号がセンサ入力／出力ボード８８を介してプロセサ８０に与えられる。音声入力／出力ボード９０もまた、同様に、ＤＳＰで構成され、プロセサ８０から与えられる音声合成データに従った音声または声がスピーカ６４から出力される。また、マイク６６からの音声入力が、音声入力／出力ボード９０を介してプロセサ８０に与えられる。
【００４５】
また、プロセサ８０は、バス８２を介して通信ＬＡＮボード１０２に接続される。通信ＬＡＮボード１０２は、たとえばＤＳＰで構成され、プロセサ８０から与えられた送信データを無線通信モジュール１０４に与え、無線通信モジュール１０４は送信データを、ネットワークを介してサーバ（図示せず）等に送信する。また、通信ＬＡＮボード１０２は、無線通信モジュール１０４を介してデータを受信し、受信したデータをプロセサ８０に与える。
【００４６】
図１に戻って、操作装置１４は、基本的には１または２以上のコンピュータまたはプロセサによって構成され、そのプロセサのメモリ（図示せず）にロボットアプリケーションプログラム１８が設定されていて、そのロボットアプリケーションプログラムがコンピュータからたとえば無線でロボット１２またはシミュレーション装置１６に与えられる。ロボットアプリケーションプログラム１８は、ロボット１２に対すアプリケーションプログラムであり、たとえばロボット１２を案内ロボットとしとて動作させるときには、そのための動作をロボット１２が実行するようなプログラムである。
【００４７】
操作装置１４のメモリにはさらに、環境データ２０を予め記憶している。環境データ２０は主として図４に示す仮想シミュレーション空間２２の地図データおよびその仮想シミュレーション空間２２内での人エージェントの出現率データを含む。環境および環境内のオブジェクトは３次元モデルデータとして表され、３次元仮想空間として視覚化される。
【００４８】
図４に示す仮想シミュレーション空間２２は、図中点線矩形で示す出入口２２ａを有する３次元閉空間を想定している。この仮想シミュレーション空間２２においては黒色太線で示す通路２２ｂが設定されていて、ロボット１２や人エージェントはその通路５０や広場などを通行し、またはそこに存在する。これらの通路２２ｂや広場は建物や壁などオブジェクトによって区画され、図中丸印で示す場所で分岐または合流する。
【００４９】
シミュレーション装置１６は、基本的には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の方向へ移動することになる。
【００７１】
なお、インタラクションモデル１２０とは、人のロボットとの相互作用のパターンを予め設定しているモデルである。
【００７２】
図９は図４に示す仮想シミュレーション環境（空間）の一部を模式的に示していて、仮想シミュレーション空間２２は、出入口２２ａを設けた壁などのオブジェクト１２４で仕切られた閉空間を想定している。ただし、オブジェクト１２４はすべて、障害物として地図データ１０６に書き込まれている。
【００７３】
ロボットシミュレータ２４は、環境データ２０に含まれるロボット（ロボットエージェント）の位置等のデータに基づいて、ロボットアプリケーションプログラム１８に従ったロボットの次のステップでの行動をシミュレーションする。ここで、ロボットアプリケーションプログラム１８は、図３のセンサ入力／出力ボード８８に入力されるセンサ出力に応じて、各モータすなわちアクチュエータを制御してロボットの行動を決定するプログラムである。
【００７４】
図９の例でいえば、ロボットアプリケーションプログラム１８は、たとえば図９において、一方の出入口２２ａからロボット１２が仮想シミュレーション空間２２に入り、他方の出入口２２ａから出るまで、通路２２ｂに従って移動させるように設定されている。なお、図９において参照符号１２６が、シミュレーションのためにこの仮想シミュレーション空間２２に投入された人エージェントを示す。
【００７５】
人シミュレータ２６はさらに、必要な場合、オブジェクティブ１１６ではなく、スクリプト１２２に従ってシミュレーションを実行する。オブジェクティブ１１６は上述のように、予め設定した、定型の対ロボット反応パターンであるが、スクリプト１２２は、シミュレーション装置１６すなわち人シミュレータ２６に非定型の動作を行わせる命令である。ここで、スクリプトとは、コンピュータが理解できる言語への変換作業を省略して、簡単に解釈実行できるようにした簡易プログラム（命令セット）のことである。ソフトウェアの設計などにおいて、コンピュータに命令を与える際には、通常、人間が普通に読み書きできる言語から、コンピュータが理解できる言語、いわゆる機械語への変換が必要であるが、スクリプトは、そのような変換作業を省略して簡単に解釈実行できるようにした簡易プログラムである。これらのスクリプトは、第２命令セットに該当するが、それらはシミュレーションシステム１０の第２メモリ（図示せず）に記憶されている。ただし、第１メモリおよび第２メモリは同じメモリの異なる記憶場所であってよい。
【００７６】
留意すべきは、オブジェクティブ１１６の上位構造として、スクリプト１２２が存在し、スクリプト１２２側からオブジェクティブ１１６に容易にアクセス可能であるという点である。したがって、オブジェクティブ１１６は移動モジュール１１４にのみ命令を与えられるのに対して、スクリプト１２２は人シミュレータ２６全体に命令を与える。そのため、人生成モジュール１１０も移動モジュール１１４と同様に、スクリプト１２２に記述された命令を実行することができる。
【００７７】
図１に示すように、ロボットの開発環境に人シミュレータを組み込む、ということは比較的新しく、特に、ロボットが視野に入ったときの人エージェントの定型的な反応行動を予め規定しておき、そのどれかを確率的に実行するというオブジェクティブ１１６の考え方は新しい。そのうえで、スクリプト１２２をオブジェクティブ１１６の上位に置くことが、この実施例の特徴である。
【００７８】
考え方としては、オブジェクティブ１１６とスクリプト１２２を独立に設計するという考え方もあるが、オブジェクティブ１１６とスクリプト１２２を独立したものとして準備してしまうと、不都合が生じる。
【００７９】
デバックしようとする開発者がシミュレータ装置１６の内部情報を詳しく知っているとは限らず、場合によっては、実施例のオブジェクティブ１１６に類似する人エージェント行動を開発者自身がアドホックに記述するかもしれない。そうした場合、スクリプト（テストコード）の記述に大きな時間が掛かってしまい、結果としてデバッグが円滑に進まないことになる。
【００８０】
これに対して、実施例のように、スクリプト１２２から，オブジェクティブ１１６を容易にアクセスできる構造とすることによって、スクリプト１２２によってオブジェクティブ１１６を変更して、テストコードとして利用することができるのである。
【００８１】
このようなスクリプトの一例が図１１に示される。この実施例では８つの命令を記述した１つのスクリプトが代表的に示されるが、その他のスクリプトも当然利用可能である。
【００８２】
このようなスクリプト１２２は、シミュレーション装置１６においてテストモードを実行するためのテストコードであり、たとえばシミュレーション装置１６のテストモードボタン（図示せず）が操作されてテストモードが呼び出されたとき、あるいは設定ファイルで起動時にテストモードが呼び出されたとき、図１１のようなスクリプト１２２の一覧が表示され、それを開発者が選択してシミュレーション装置１６、特に人シミュレータ２６に実行させる。詳細は、図１２を参照して後述する。
【００８３】
ここで、まず、図１０を参照して、オブジェクティブモデル１１６に従った図１に示すシミュレーション装置１６における動作の一例を説明する。
【００８４】
最初のステップＳ１において、一例として図４（および図９）に示す通路２２ｂ上を移動するように設定されている、ロボットアプリケーションプログラム１８を読み込むとともに、環境データ２０を読み込む。すなわち、ロボット１２の行動をシミュレーションする図４（および図９）のような仮想シミュレーション空間２２の地図データ１０６および出現率データ１０８が示す仮想シミュレーション空間２２に投入する人エージェントの生成に関するパラメータ（出現頻度、移動経路、グループ人数、大人子供や男女の比率、背の高さなど）および各エージェント（ロボット１２を含む）の位置データなどを読み込む。
【００８５】
次のステップＳ３では、人シミュレータ２６の人生成モジュール１１０によって、環境データ２０が提示する人エージェントの生成に関する上述のパラメータおよびグループからの人パターンのデータに従って、仮想シミュレーション空間２２内で、１または２以上の人エージェントを生成して配置する。
【００８６】
ステップＳ５で人シミュレータ２６は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、そしてオブジェクティブモデル１１６が示す対ロボット行動パターンに基づいて、人エージェントの次のステップでの行動を決定する。なお、基本的な前述した４つのオブジェクティブの一覧は開発者（操作装置１４のオペレータ）が自由にアクセスできる形で提供される。さらに、他のオブジェクティブモデルを採用することもできる。
【００８７】
ステップＳ７でロボットシミュレータ２４は、環境データ２０が示す現在の人エージェントおよびロボット１２の位置に基づいて、ロボットアプリケーションプログラム１８に従って、次のステップでのロボット１２の行動を決定する。
【００８８】
具体的には、ステップＳ７では、ロボット１２がたとえば搬送ロボットや搭乗型ロボットのように目的地に向かうことが主目的のロボットである場合、他の人々の現在の位置や移動速度から、なるべく他人の移動に干渉しないような移動経路を計算する処理を行う。また、ロボット１２が人々にサービス提供することが目的のロボットである場合には、たとえば、ロボットに興味がありそうな人に接近するために、単純な場合では、ロボットの近傍で止まっている人を選択して、その人に向かって進む、また、人々が集まりがちな場所を選んでそのような場所でやってくる人を待ち受ける、また、混雑を起こさないように過度に人々が通る場所には近づかないようにする、といった処理を行ったりする。
【００８９】
このステップＳ７の場合、ステップＳ５での人エージェントの次のステップでの行動を決定しているので、それを考慮して、上述の処理を実行する。そのため、人と共存する実空間で活動するロボットアプリケーションプログラムの当否を、仮想シミュレーション空間内で判断することができる。
【００９０】
その後ステップＳ９で、物理エンジン２８において、各エージェントの行動を実現する。詳しくいうと、ステップＳ９では、先に説明したように、各エージェント（ロボット含む）が意図した動きを仮想シミュレーション空間２２内で実施する処理が行われ、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりに動く。たとえば、エージェントが１歩前進しようとした場合、その意図通り、エージェントが１歩前進する。
【００９１】
ところが、干渉がある場合、物理学法則（力学法則）に従って各エージェントの実際の動きが処理される。単純な場合、たとえば壁に向かって進もうとすると、壁に衝突し、それ以上前進できないし、一定の反発係数に従って反力を受ける。エージェント同士の衝突の場合、前進する動きと、反力による移動が重なり合って、たとえば、単純な例を考えると、前進中にたとえば側方から衝突すると、斜め前方へと実際には動くことになる。
【００９２】
次のステップＳ１１で、環境データやセンサデータなどを更新する。
【００９３】
そして、ステップＳ１３でシミュレーションを終了するかどうか判断し、シミュレーションを続行するなら再び先のステップＳ３に戻り、たとえば行動決定プログラムが終了するなどした場合“ＹＥＳ”が判断され、シミュレーションを終了する。
【００９４】
このように、シミュレーション装置１６においてオブジェクティブ１１６に従ってロボットの周囲の人の行動を再現するようにシミュレーションを行い、その状態をディスプレイ１０５（図１）で確認することにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットアプリケーションプログラム１８の開発を効率的に行うことができる。
【００９５】
上述のようなシミュレーションでは、予め設定された環境データ２０やオブジェクティブモデル１１６に従って人エージェントの移動をシミュレーションするので、ロボットアプリケーションプログラムをデバッグするときに特殊な状況を再現しにくい。たとえばそのような状況が特定の時間帯でのみ発生する、人数が多いときのみ発生するなど、定型のオブジェクティブモデル１１６だけでは再現するのが難しいことが多い。したがって、十分なデバッグができず、最終的には実空間で確認しなければならなくなってはしまう。
【００９６】
そこで、この実施例のシミュレーション装置１６では、定型のオブジェクティブの他に、人エージェントの振る舞いや仕組みを再現するテストコード（ある特定の状況を再現（テスト）するためのスクリプト)を記述して実行可能なフレームワークを提案する。
【００９７】
図１１に示す例では、「離れた場所にいる子供が少し移動し、その後、ロボットと対話する（前へとやってくる）」というテスト内容を記載したスクリプトで、８つの命令が記述されている。日本語の行は該当のテストコードの意味を示し、次の英数字の行が実際のテストコードを示す。
【００９８】
命令１は、「シミュレーション時間において５秒間実行し続ける」、という内容である。
【００９９】
命令２は、Boy 02という「子供を生成する」、という内容である。図５に示す出現率データ１０８は、予め定めた出現率に従って人生成モジュール１１０に、人エージェントを生成させる手段であるが、スクリプトのこの命令２は、その出現率に関係なく、任意のタイミングで任意の種類の人エージェントを人生成モジュール１１０から生成させることができる。それによって、デバッグのために、一度に多人数の人エージェントを仮想シミュレーション空間２２に投入して特定の状況を再現させることができるのである。
【０１００】
命令３は、人エージェントの位置を設定する、という内容である。
【０１０１】
命令４は、人エージェントを指定した場所へ移動させる、という内容である。
【０１０２】
命令５は、人エージェントが指定した目的地に場到着するまで待つ、という内容である。
【０１０３】
命令６は、人エージェントを新しい目的地へ移動させる、という内容である。
【０１０４】
命令７は、オブジェクティブを変更する、という内容である。ただし、オブジェクティブを変更するのは、移動モジュール１１４である。移動モジュール１１４のみがオブジェクティブモデル１１６にアクセスできるからである。また、オブジェクティブの前部を変更するのでは、オブジェクティブを利用してデバッグ用の特定状況を再現しようとする趣旨に反する（時間が掛かり過ぎる）ので、スクリプトによるオブジェクティブの変更は、第１命令セットであるオブジェクティブの一部の命令を変更する。
【０１０５】
命令８は、「シミュレーション時間において５分間実行し続ける」、という内容である。スクリプトの最終行まで到達するとシミュレーションは)終了する、という設定にしているため、「人がロボットに近づいている様子」を開発者が５分間見て、動作を検証する目的でこの命令８を記述している。
【０１０６】
なお、スクリプトが読み込まれると、人シミュレータ２６の各モジュール１１０および１１４は、「確率的な遷移」を行わない、特殊な命令モードに移行する。そのため、人エージェントの生成や、目的地の設定、オブジェクティブの決定（とそのタイミング）を全てスクリプトで設定する必要がある。したがって、スクリプト１２２は、２のモジュール１１０および１１４に直接命令を出すことができるようになっている。
【０１０７】
そして、上述のようにしてテストモードが呼び出されると、シミュレーション装置１６のプロセサ（図示せず）は、図１２の最初のステップＳ２１で、スクリプト１２２のテストコードを１行（図１１の英数字の行）読み込む。
【０１０８】
読み取ったテストコードに基づいて、ステップＳ２３、Ｓ２９、Ｓ３３、Ｓ３７またはＳ４１（Ｓ４３）で、テストコードの内容を判断し、その結果に応じて、ステップＳ２５、Ｓ３１、Ｓ３５、Ｓ３９またはＳ４５で所要の処理を、シミュレーション装置１６の１または２以上のプロセサが実行する。そして、ステップＳ２７でその結果をディスプレイ１０５（図１）に表示するとともに、ネットワーク（図示せず）から操作装置１４へ出力する。したがって、開発者すなわちオペレータがそのテストコードに従った人エージェントの生成や行動を確認することができる。
【０１０９】
詳しく説明すると、ステップＳ２３では、ステップＳ２１で読み取ったテストコードが人エージェントの生成命令であるかどうか、判断する。“ＹＥＳ”なら、ステップＳ２５において、人生成モジュール１１０によって、人エージェントを初期値に生成させる。ただし、人エージェントは、人シミュレータ２６の１ステップ毎に生成される。その後、ステップＳ２７において、ステップＳ２５でのテストコードの実行結果を、ディスプレイ１０５およびネットワークへ出力する。
【０１１０】
ステップＳ２７では、ステップＳ２１で読み取ったテストコードが人エージェントの位置変更命令であるかどうか、判断する。“ＹＥＳ”なら、ステップＳ２９において、移動モジュール１１４によって、指定した人エージェントの現在位置を変更させる。その後、ステップＳ２７において、ステップＳ３１でのテストコードの実行結果を、ディスプレイ１０５およびネットワークへ出力する。
【０１１１】
ステップＳ３１では、ステップＳ２１で読み取ったテストコードが人エージェントの移動命令であるかどうか、判断する。“ＹＥＳ”なら、ステップＳ３３において、移動モジュール１１４によって、指定した人エージェントの移動を開始させる。その後、ステップＳ２７において、ステップＳ３５でのテストコードの実行結果を、ディスプレイ１０５およびネットワークへ出力する。
【０１１２】
ステップＳ３５では、ステップＳ２１で読み取ったテストコードがオブジェクティブの設定命令であるかどうか、判断する。“ＹＥＳ”なら、ステップＳ３７において、シミュレーション装置１６のプロセサが、オブジェクティブモデル１１６の中の対応するオブジェクティブを変更する。その後、ステップＳ２７において、ステップＳ３９でのテストコードの実行結果を、ディスプレイ１０５およびネットワークへ出力する。それによって、開発者は自分の設定したスクリプトに従ったシミュレーションを目視によって確認することができる。ただし、このオブジェクティブの変更は移動モジュール１１４によって行う。具体的には、先に説明したようにメモリに設定されているオブジェクティブをそのメモリから読み出し、該当する箇所のソースコードをキーボードなどを使って変更することによって、オブジェクティブを変更することができる。
【０１１３】
ステップＳ３９では、ステップＳ２１で読み取ったテストコードが待機命令であるかどうか、判断する。“ＹＥＳ”なら、次のステップＳ４３において、さらに待機条件（たとえば、テストコード１または８での設定時間の経過）が成立したかどうか判断する。“ＹＥＳ”なら、ステップＳ４５で、ステップＳ２７と同様に、そのテストコードの実行結果を、ディスプレイ１０５およびネットワークへ出力する。
【０１１４】
図１０および図１２に示すように、スクリプト１２２とオブジェクティブ１１６を別々に実行可能とした理由は、スクリプトとオブジェクティブの目的（および抽象度）が異なるためである。
【０１１５】
すなわち、スクリプト１２２は、「（複数の人エージェントの生成や行動変化を含む)特定の状況の再現」が目的であって、この中に、特定の状況を再現するための、（複数の)人エージェントの生成のタイミング，移動のタイミング、オブジェクティブの変更タイミングを記載したものであり、（スクリプトを使用しない）通常のシミュレーションでは利用できない。
【０１１６】
これに対して、オブジェクティブ１１６は「１人の人エージェントがロボットの存在に対して行う反応行動」を記載して利用することを目的としている。そのため、オブジェクティブ１１６は、遷移確率さえ定義してしまえば、（スクリプトを使用しない）通常のシミュレーションで容易に使用することができる。
【０１１７】
また，このように分類をすることで、スクリプトからは、オブジェクティブは下位の変更可能なライブラリとして見ることが可能になる。つまり、スクリプトによってオブジェクティブを使用することで、再現したい状況を簡単に記述することができる。
【０１１８】
なお、このシミュレーションシステム１０が行動をシミュレーションできるロボットは実施例で説明した図３および図４に示すロボット１２に限定されるものではない。他の形式、構造のコミュニケーションロボットにもこのシミュレーション装置は適用可能である。
【符号の説明】
【０１１９】
１０  …シミュレーションシステム
１２  …ロボット
１４  …操作装置
１６  …シミュレーション装置
１８  …ロボットアプリケーションプログラム
２２  …仮想シミュレーション空間
２４  …ロボットシミュレータ
２６  …人シミュレータ
２８  …物理エンジン
１１６  …オブジェクティブモデル
１２２  …スクリプト
【図１】
2018097417.tif 000003
【図２】
2018097417.tif 000004
【図３】
2018097417.tif 000005
【図４】
2018097417.tif 000006
【図５】
2018097417.tif 000007
【図６】
2018097417.tif 000008
【図７】
2018097417.tif 000009
【図８】
2018097417.tif 000010
【図９】
2018097417.tif 000011
【図１０】
2018097417.tif 000012
【図１１】
2018097417.tif 000013
【図１２】
2018097417.tif 000014