【国等の委託研究の成果に係る記載事項】(出願人による申告)平成27年度、国立研究開発法人新エネルギー・産業技術総合開発機構「次世代ロボット中核技術開発/革新的ロボット要素技術分野/人共存環境で活動するロボットのためのHRI行動シミュレーション技術」に関する委託研究、産業技術力強化法第19条の適用を受ける特許出願
(58)【調査した分野】(Int.Cl.,DB名)
コミニュケーションロボットのように人と共存する環境で活動するロボットの仮想シミュレーション空間における行動を、ロボット行動決定プログラムに従ってシミュレーションする、ロボットの行動シミュレーション装置であって、
前記仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部、
前記仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部、
ロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース、
前記人エージェント位置提示部で提示される人エージェントの位置データに従って、前記仮想シミュレーション空間内において1または複数の人エージェントを生成する人エージェント生成部、
ロボット位置提示部で提示されるロボットの位置データに従った前記仮想シミュレーション空間における現在のロボットの位置、ならびに前記人エージェント位置提示部が提示する位置データに従った前記仮想シミュレーション空間における前記人エージェントの位置および前記対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの当該人エージェントの行動を決定する人エージェント行動決定部、および
前記仮想シミュレーション空間内における次のステップでの前記ロボットの行動を前記ロボット行動決定プログラムに従って決定するロボット行動シミュレーション部を備える、ロボットの行動シミュレーション装置。
前記仮想シミュレーション空間に投入する人エージェントのための大人、子供、男性、女性などの人のパターンを予め登録した人パターンデータベースをさらに備え、前記人エージェント生成部は、前記人パターンデータベースから与えられた人パターンの人エージェントを生成する、請求項1記載のロボットの行動シミュレーション装置。
前記物理エンジン部による各エージェントの行動に従って、前記仮想シミュレーション空間内に配置されているセンサのシミュレーションを実行してセンサ値を保存するセンサ出力シミュレーション部をさらに備える、請求項3記載のロボットの行動シミュレーション装置。
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1および非特許文献1‐3のいずれのロボットシミュレータにおいても、人は「ヒトの形をしたモノ」として扱われているだけで、人の行動は考慮されていないので、コミュニケーションロボットのような人共存環境で活動するロボットのシミュレーション装置としては不十分であった。
【0006】
それゆえに、この発明の主たる目的は、新規な、ロボットの行動シミュレーション装置を提供することである。
【0007】
この発明の他の目的は、人の行動を考慮する、ロボットの行動シミュレーション装置を提供することである。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【0009】
第1の発明は、
コミニュケーションロボットのように人と共存する環境で活動するロボットの仮想シミュレーション空間における行動を、ロボット行動決定プログラムに従ってシミュレーションする、ロボットの行動シミュレーション装置であって、前記仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部、前記仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部、ロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース、前記人エージェント位置提示部で提示される人エージェントの位置データに従って、前記仮想シミュレーション空間内において1または複数の人エージェントを生成する人エージェント生成部、
ロボット位置提示部で提示されるロボットの位置データに従った前記仮想シミュレーション空間における現在のロボットの位置
、ならびに前記人エージェント位置提示部が提示する位置データに従った前記仮想シミュレーション空間における前記人エージェントの位置および
前記対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの当該人エージェントの行動を決定する人エージェント行動決定部、および
前記仮想シミュレーション空間内における次のステップでの前記ロボットの行動を
前記ロボット行動決定プログラムに従って決定するロボット行動シミュレーション部を備える、ロボットの行動シミュレーション装置である。
【0010】
第1の発明では、シミュレーション装置(10:実施例において相当する部分を例示する参照符号。以下、同様。)は、人と共存する環境で活動するたとえばコミニュケーションロボットのようなロボットの
仮想シミュレーション空間(200)における行動を、ロボット行動決定プログラムに従ってシミュレーションする。シミュレーション装置(10)は、
仮想シミュレーション空間における人エージェントの位置を示す位置データを提示する人エージェント位置提示部(20)、仮想シミュレーション空間におけるロボットの位置を示す位置データを提示するロボット位置提示部(20)、およびロボットが視野に入ったとき人が執る行動パターンを予め設定している対ロボット行動パターンデータベース(16)を備える。人エージェント生成部(18、S3)を含み、この人エージェント生成部は、
人エージェント位置提示部で提示される人エージェントの位置データに従って、仮想シミュレーション空間(200)内において1または複数の人エージェントを生成する。人エージェント行動決定部(18、S5)は、
ロボット位置提示部で提示されるロボットの位置データに従った仮想シミュレーション空間における現在のロボットの位置
、ならびに人エージェント位置提示部が提示する位置データに従った仮想シミュレーション空間における人エージェントの位置および
対ロボット行動パターンデータベースが示す行動パターンのデータに基づいて、次のステップでの人エージェントの行動を決定する。ロボット行動シミュレーション部(22、S7)は、ロボット行動決定プログラム(24)に従って、仮想シミュレーション空間内における次のステップでのロボットの行動を決定する。そして、ロボット行動決定プログラム(24)は、必要な場合、シミュレーション装置(10)によるシミュレーション結果に従って手直しされる。
【0011】
第1の発明によれば、
仮想シミュレーション空間において、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、ロボットの行動決定プログラムの開発を効率的に行うことができる。
【0012】
第2の発明は、第1の発明に従属し、
仮想シミュレーション空間に投入する人エージェントのための大人、子供、男性、女性などの人のパターンを予め登録した人パターンデータベースをさらに備え、人エージェント生成部は、人パターンデータベースから与えられた人パターンの人エージェントを生成する、ロボットの行動シミュレーション装置である。
【0013】
第2の発明では、人パターンデータベース(14)は、人の形状、すなわち大人、子供、男性、女性などの人の形状(パターン)を予め設定している。このデータベース(14)から与えられる人パターンに従って、人エージェントを仮想シミュレーション空間内に生成する。
【0014】
第2の発明によれば、仮想シミュレーション空間内に多様なパターンの人エージェントを投入することができる。
【0018】
第3の発明は、第1
または第2の発明に従属し、物理的な法則に従って各エージェントの行動を実現する物理エンジン部をさらに備える、ロボットの行動シミュレーション装置である。
【0019】
第3の発明では、物理エンジン部(26)によって、物理的な法則、あるいは物理的な力に従って各エージェントの行動を実現する。たとえば、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりの行動を実現し、干渉が生じれば、物理学法則(力学法則)に従って各エージェントの実際の動きが処理される。
【0020】
第3の発明によれば、矛盾しないシミュレーション結果が得られる。
第4の発明は、第3の発明に従属し、物理エンジン部による各エージェントの行動に従って、仮想シミュレーション空間に配置されているセンサのシミュレーションを実行してセンサ値を保存するセンサ出力シミュレーション部をさらに備える、ロボットの行動シミュレーション装置である。
第4の発明では、センサ出力シミュレーション部(28)は、仮想シミュレーション空間(200)に配置されている画像センサや距離センサのシミュレーションを実行する。
【発明の効果】
【0021】
この発明によれば、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションできるので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットの行動決定プログラムの開発を効率的に行うことができる。
【0022】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための形態】
【0024】
図1を参照して、この実施例のシミュレーション装置10は、ASIC(特定用途向け集積回路)またはDSP(ディジタル信号プロセサ)のようなハードウエアで構成されるが、汎用コンピュータに組み込まれるプログラムのようなソフトウエアであってもよい。
図1はそのようなシミュレーション装置10の機能ブロック図である。
【0025】
このシミュレーション装置10が対象としているロボットは、たとえば
図2および
図3に示すコミュニケーションロボットのように、人との共存環境で活動するロボット12である。このようなロボット12は環境の中に存在する人の行動に影響を受けるので、この実施例のシミュレーション装置10は、ロボット12の行動をロボットの行動決定プログラムに従ってシミュレーションする際に、人の行動をもシミュレーションすることによって、安全なロボット12のためのロボットの行動決定プログラムの開発を支援する。
【0026】
ここで、シミュレーション装置10の説明に先立って、
図2および
図3を参照して、ロボット12の構成について説明する。ロボット12は台車30を含み、台車30の下面にはロボット12を自律移動させる2つの車輪32および1つの従輪34が設けられる。2つの車輪32は車輪モータ36(
図3参照)によってそれぞれ独立に駆動され、台車30すなわちロボット12を前後左右の任意方向に動かすことができる。
【0027】
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の距離センサ40が取り付けられる。これらの距離センサ40は、たとえば赤外線や超音波などを用いてロボット12の周囲の物体(人や障害物など)との距離を測定するものである。
【0028】
センサ取り付けパネル38の上には、胴体42が直立して設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した距離センサ40がさらに設けられ、ロボット12の前方の主として人との距離を計測する。また、胴体42には、その背面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット12の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。
【0029】
胴体42の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節48Rおよび肩関節48Lによって、上腕50Rおよび上腕50Lが設けられる。図示は省略するが、肩関節48Rおよび肩関節48Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節48Rは、直交する3軸のそれぞれの軸廻りにおいて上腕50Rの角度を制御できる。肩関節48Rの或る軸(ヨー軸)は、上腕50Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節48Lは、直交する3軸のそれぞれの軸廻りにおいて上腕50Lの角度を制御できる。肩関節48Lの或る軸(ヨー軸)は、上腕50Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
【0030】
また、上腕50Rおよび上腕50Lのそれぞれの先端には、肘関節52Rおよび肘関節52Lが設けられる。図示は省略するが、肘関節52Rおよび肘関節52Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕54Rおよび前腕54Lの角度を制御できる。
【0031】
前腕54Rおよび前腕54Lのそれぞれの先端には、人の手に相当するハンド56Rおよびハンド56Lがそれぞれ設けられる。これらのハンド56Rおよび56Lは、詳細な図示は省略するが、開閉可能に構成され、それによってロボット12は、ハンド56Rおよび56Lを用いて物体を把持または挟持することができる。ただし、ハンド56R、56Lの形状は実施例の形状に限らず、人の手に酷似した形状や機能を持たせるようにしてもよい。
【0032】
また、図示は省略するが、台車30の前面、肩関節48Rと肩関節48Lとを含む肩に相当する部位、上腕50R、上腕50L、前腕54R、前腕54L、ハンド56Rおよびハンド56Lには、それぞれ、接触センサ58(
図3で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人間16や他の障害物の接触を検知する。したがって、ロボット12は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット12の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。
【0033】
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部62が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット12の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
【0034】
頭部62には、人の口に相当する位置に、スピーカ64が設けられる。スピーカ64は、ロボット12が、それの周辺の人に対して音声によってコミュニケーションをとるために用いられる。また、人の耳に相当する位置には、マイク66Rおよびマイク66Lが設けられる。以下、右のマイク66Rと左のマイク66Lとをまとめてマイク66ということがある。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人の音声を取り込む。さらに、人の目に相当する位置には、右の眼球部68Rおよび左の眼球部68Lが設けられる。右の眼球部68Rおよび左の眼球部68Lは、それぞれ右の眼カメラ70Rおよび左の眼カメラ70Lを含む。以下、右の眼球部68Rと左の眼球部68Lとをまとめて眼球部68ということがある。また、右の眼カメラ70Rと左の眼カメラ70Lとをまとめて眼カメラ70ということがある。
【0035】
眼カメラ70は、ロボット12に接近した人の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。この実施例では、ロボット12は、この眼カメラ70からの映像信号によって、人の左右両目のそれぞれの視線方向(ベクトル)を検出する。その視線検出方法は具体的には、2つのカメラを用いる方法と、1つのカメラを用いる方法があるが、ここではその詳細は重要ではないので、詳しい説明は省略する。
【0036】
また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。たとえば、眼カメラ70は、眼球部68内に固定され、眼球部68は、眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部62の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部62の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部68ないし眼カメラ70の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ64、マイク66および眼カメラ70の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
【0037】
このように、この実施例のロボット12は、車輪32の独立2軸駆動、肩関節48の3自由度(左右で6自由度)、肘関節52の1自由度(左右で2自由度)、首関節60の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
【0038】
図3はロボット12の電気的な構成を示すブロック図である。この
図3を参照して、ロボット12は、CPU80を含む。CPU80は、マイクロコンピュータ或いはプロセッサとも呼ばれ、バス82を介して、メモリ84、モータ制御ボード86、センサ入力/出力ボード88および音声入力/出力ボード90に接続される。
【0039】
メモリ84は、図示は省略をするが、ROM、HDDおよびRAMを含む。ROMおよびHDDには、ロボット12の動作を制御するためのロボットの行動決定プログラムが予め記憶される。ただし、このシミュレーション装置10においてシミュレーションするロボット12には、この種のロボットの行動決定プログラムは未だインストールされていない。つまり、シミュレーション装置10は、このようなロボット12のための最適の行動決定プログラムを開発、設計するための支援装置である。
【0040】
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節60および眼球部68などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、CPU80からの制御データを受け、右眼球部68Rの2軸のそれぞれの角度を制御する2つのモータ(
図3では、まとめて「右眼球モータ92」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、左眼球部68Lの2軸のそれぞれの角度を制御する2つのモータ(
図3では、まとめて「左眼球モータ94」と示す)の回転角度を制御する。
【0041】
また、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(
図3では、まとめて「右腕モータ96」と示す)の回転角度を制御する。同様にして、モータ制御ボード86は、CPU80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(
図3では、まとめて「左腕モータ98」と示す)の回転角度を制御する。
【0042】
さらに、モータ制御ボード86は、CPU80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(
図3では、まとめて「頭部モータ100」と示す)の回転角度を制御する。そして、モータ制御ボード86は、CPU80からの制御データを受け、車輪32を駆動する2つのモータ(
図3では、まとめて「車輪モータ36」と示す)の回転角度を制御する。
【0043】
モータ制御ボード86にはさらにハンドアクチュエータ108が結合され、モータ制御ボード86は、CPU80からの制御データを受け、ハンド56R、56Lの開閉を制御する。
【0044】
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでCPU80に与える。すなわち、距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてCPU80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからCPU80に入力される。眼カメラ70からの映像信号も、同様にして、CPU80に入力される。また、上述した複数の接触センサ58(
図3では、まとめて「接触センサ58」と示す)からの信号がセンサ入力/出力ボード88を介してCPU80に与えられる。音声入力/出力ボード90もまた、同様に、DSPで構成され、CPU80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してCPU80に与えられる。
【0045】
また、CPU80は、バス82を介して通信LANボード102に接続される。通信LANボード102は、たとえばDSPで構成され、CPU80から与えられた送信データを無線通信装置104に与え、無線通信装置104は送信データを、ネットワークを介してサーバ(図示せず)等に送信する。また、通信LANボード102は、無線通信装置104を介してデータを受信し、受信したデータをCPU80に与える。
【0046】
図1に戻って、シミュレーション装置10は、2つのデータベース14および16を含む。人パターンデータベース16は、シミュレーション装置10の仮想シミュレーション空間に投入する人エージェントのための、人の形状、すなわち大人、子供、男性、女性などの人の形状(パターン)を予め設定しているデータベースである。この4つの基本パターンに対してさらに、リュックサックを背負っている人の形状(パターン)や、カートを引いているときの人の形状などを追加することもできる。
【0047】
なお、この人パターンデータベース14では、曜日や時間ごとに異なるデータセットを保持しておき、曜日や時間を指定してシミュレーションできるようにしてもよい。そうすれば、ある時間帯にロボットを動かすとどうなるのかなど、いろいろシミュレーションすることができる。
【0048】
対ロボット行動パターンデータベース16は、環境において人がロボットに対して行う行動パターンを予め設定しているデータベースである。つまり、人が実空間で実際に執り得る対ロボット行動パターンを登録している。
【0049】
たとえば、ロボットが自分の視野に入ったときに人が執る行動パターンとして、
図4および
図5に示す、ロボットと対話するパターンと、ロボットを観察するパターンを、一例として事前に登録している。
【0050】
図4は、人(「i」で示す)が自分の視野内にロボット12を発見すると、ロボット12の回りに、ロボット12から停止距離Dstopを隔てて停止し、ロボット12と対話する行動パターンを図解している。
【0051】
図5は、人(「i」で示す)が自分の視野内にロボット12を発見すると、ロボット12の回りに、ロボット12から停止距離Dstopよりもやや大きい観察距離Dobserveを隔てて停止し、ロボット12を観察する行動パターンを図解している。
【0052】
対ロボット行動パターンデータベース16には、このような行動パターンを含む多くの対ロボット行動パターンが、事前登録されている。シミュレーション装置10では、人エージェントがその登録しているどれかの行動パターンに従って行動するようにシミュレーションする。
【0053】
たとえば
図4、
図5のような標準的な人々の対ロボット行動パターンだけでなく、変わった行動、難しい行動をする人エージェントの対ロボット行動パターンのデータをこのデータベース16に設定していてもよい。たとえば、ロボットの反応をためす(ぐるぐる回ってみるとか)、いじめる(しつこい行動)、ずっと話し込む、ロボットを見ると走ってくる、など、ありがちな難しい対ロボット行動パターンを設定して、適当な頻度でそのように特別な行動パターンに従ったシミュレーションをするようにしてもよい。
【0054】
仮想シミュレーション空間内において、エージェントの行動は、他のエージェントから影響されて変化するが(たとえば、人同士がぶつからないように避ける、ロボットを見たら近づく、など)。
【0055】
たとえば
図6に示すように、2人の人iおよびjは相互に影響して次のステップでの移動位置を決定する場合がある、人エージェントiは本来はdi,jの方向へ移動するのであるが、人エージェントjが人エージェントiに対して角度θi,jの方向に速度vi,jで移動しようとしているため、人エージェントiは、結局d’i,jの方向へ移動することになる。
【0056】
さらに、人エージェントの対ロボット行動は、人エージェント同士のやりとりによって変化するように設定してもよい。たとえば、人エージェントがロボットと話していると他の人エージェントがロボットに近づく確率が増える、先行する人エージェントがロボットに影響されると(チラシをもらう、店に誘導される、など)、後続の人エージェントも影響される確率が増える、などのようにこのデータベース16に設定することも可能である。
【0057】
人シミュレーション部18は、人パターンデータベース14から受け取った人パターンのデータ、対ロボット行動パターンデータベース16から受け取った行動パターンのデータおよび環境情報提示部20から受け取った仮想シミュレーション空間の地図データ、人やロボットの位置等のデータに従って、仮想シミュレーション空間(仮想空間)での人エージェントの次のステップでの行動をシミュレーションする。
【0058】
環境情報提示部20は、このように、ロボットの行動をシミュレーションするべき、仮想シミュレーション空間(仮想空間)を示す地図データ、その仮想シミュレーション空間内の人エージェントやロボットの位置など、ロボットの行動をシミュレーションするのに必要なデータを提示する。
【0059】
図7は上述のような仮想シミュレーション環境(空間)の一例を示していて、仮想空間200は、入口204および出口206を設けた壁202で仕切られた閉空間を想定している。ただし、柱208や机210などは、障害物として地図データに書き込まれている。さらに、
図7ではこの仮想空間を2次元で描いているが、実際には、3次元画像としてディスプレイ29(
図1)で表示される。
【0060】
ロボット行動シミュレーション部22は、環境情報提示部20から受け取ったロボットの位置等のデータに基づいて、ロボットの行動決定プログラム24に従ったロボットの次のステップでの行動をシミュレーションする。ここで、行動決定プログラム24は、
図3で示すセンサ40、46、58、70などのセンサ入力に応じて、各モータ36、92‐106ならびにアクチュエータ108を制御してロボットの行動を決定するプログラムである。一例として、ロボットの行動決定プログラム24は、たとえば
図7において、入口204からロボット12が仮想空間200に入り、出口206から出るまで、移動経路212に従って移動させるように設定されている。なお、
図7において参照符号214が、シミュレーションのためにこの仮想空間200に投入された人エージェントを示す。
【0061】
物理エンジン26は、物理的な力や法則などに基づいて、各エージェントがどのような移動経路をたどるかを計算する。詳しくいうと、物理エンジン26は、各エージェント(ロボット含む)が意図した動きを、仮想シミュレーション空間200(
図7)で実施する処理を実行する。このとき、他の障害物、構造物や他のエージェントとの干渉が何もなければ、意図したとおりの動きを生成する。しかしながら、干渉がある場合、物理学法則(力学法則)に従って、各エージェントの実際の動きを処理する。
【0062】
センサ出力シミュレーション部28は、仮想シミュレーション空間200内に配置されているカメラのような画像センサやレーザレンジファインダ(LRF)のような距離センサのシミュレーションを実行する。カメラ画像の場合には、カメラ視点からの光学的な計算を行い、カメラ視点毎の画像情報を生成する。距離センサの場合には、レーザによるスキャンを模して、センサから各方位へ距離計測を行い、その結果をセンサ値として保存する。
【0063】
シミュレーション装置10には、ディスプレイ29が設けられていて、このディスプレイ29によって、たとえば
図7に示すような仮想シミュレーション空間の画像が表示される。
【0064】
図8を参照して、
図1に示すシミュレーション装置10は、まず、最初のステップS1において、一例として
図7に示す移動経路212上を移動するように設定されている、ロボットの行動決定プログラム24を読み込むとともに、環境情報提示部20から、ロボット12の行動をシミュレーションする
図7のような仮想シミュレーション空間の地図データ、仮想シミュレーション空間に投入する人エージェントの生成に関するパラメータ(出現頻度、移動経路、グループ人数、大人子供や男女の比率、背の高さなど)および各エージェント(ロボット12を含む)の位置データなどを読み込む。
【0065】
次のステップS3では、環境情報提示部20が提示する人エージェントの生成に関する上述のパラメータおよび人パターンデータベース14からの人パターンのデータに従って、仮想シミュレーション空間内で、1または複数の人エージェントを生成して配置する。人パターンデータベース14には多様な内パターンを登録していて、そこから与えられる人パターンに基づいて仮想シミュレーション空間内に人エージェントを生成するので、多様な人エージェントを生成することができる。
【0066】
なお、このステップS3での人エージェントの生成に関するパラメータは、実際の観測データに基づいて設定されるようにしてもよい。
【0067】
ステップS5で人シミュレーション部16は、環境情報提示部20が示す現在の人エージェントおよびロボット12の位置に基づいて、そして対ロボット行動パターンデータベース16が示す対ロボット行動パターンに基づいて、人エージェントの次のステップでの行動を決定する。なお、ここでのロボット12への働きかけの行動の種類や頻度は、実際の観測データに基づいて設定するようにしてもよい。対ロボット行動パターンデータベース16に登録している行動パターンは、人が実空間で実際に執り得る対ロボット行動パターンであり、このような行動パターンに従ってシミュレーションするので、シミュレーションの結果が妥当な結果となる。
【0068】
ステップS7でロボット行動シミュレーション部22は、環境情報提示部20が示す現在の人エージェントおよびロボット12の位置に基づいて、ロボットの行動決定プログラム24に従って、次のステップでのロボット12の行動を決定する。
【0069】
具体的には、ステップS7では、ロボット12がたとえば搬送ロボットや搭乗型ロボットのように目的地に向かうことが主目的のロボットである場合、他の人々の現在の位置や移動速度から、なるべく他人の移動に干渉しないような移動経路を計算する処理を行う。また、ロボット12が人々にサービス提供することが目的のロボットである場合には、たとえば、ロボットに興味がありそうな人に接近するために、単純な場合では、ロボットの近傍で止まっている人を選択して、その人に向かって進む、また、人々が集まりがちな場所を選んでそのような場所でやってくる人を待ち受ける、また、混雑を起こさないように過度に人々が通る場所には近づかないようにする、といった処理を行ったりする。
【0070】
このステップS7の場合、ステップS5での人の次のステップでの行動を決定しているので、それを考慮して、上述の処理を実行する。そのため、人と共存する実空間で活動するロボットの行動決定プログラムの当否を、仮想シミュレーション空間内で判断することができる。
【0071】
その後ステップS9で、物理エンジン26において、各エージェントの行動を実現する。詳しくいうと、ステップS9では、先に説明したように、各エージェント(ロボット含む)が意図した動きを仮想空間200内で実施する処理が行われ、他の障害物、構造物や他のエージェントとの干渉が何もなければ、各エージェントは意図したとおりに動く。たとえば、エージェントが1歩前進しようとした場合、その意図通り、エージェントが1歩前進する。
【0072】
ところが、干渉がある場合、物理学法則(力学法則)に従って各エージェントの実際の動きが処理される。単純な場合、たとえば壁に向かって進もうとすると、壁に衝突し、それ以上前進できないし、一定の反発係数に従って反力を受ける。エージェント同士の衝突の場合、前進する動きと、反力による移動が重なり合って、たとえば、単純な例を考えると、前進中にたとえば側方から衝突すると、斜め前方へと実際には動くことになる。
【0073】
次のステップS11で、センサシミュレーション部24は、上述したように、環境情報やセンサの出力情報などを更新する。
【0074】
そして、ステップS13でシミュレーションを終了するかどうか判断し、シミュレーションを続行するなら再び先のステップS3に戻り、たとえば行動決定プログラムが終了するなどした場合“YES”が判断され、シミュレーションを終了する。
【0075】
この実施例においては、ロボットの周囲の人の行動を再現するようにシミュレーションを行うことにより、ロボットの行動をシミュレーションしているので、ロボットを実空間で実際に動かすことなく、人と共存する実空間で活動するロボットの行動決定プログラム24の開発を効率的に行うことができる。
【0076】
なお、上述のステップS5における人エージェントのロボットへの働きかけ行動は、ロボットの見かけや振る舞いに依存する。その依存関係を、あらかじめデータベースとして持っていてもよい(例:色が白いと、人が2倍の頻度で近づいてくる、など)。また、このパラメータをエディットして、もしロボットが人を2倍呼び寄せるようになったら(つまり、そのようにデザインを変えることができたら)何が起きるのか(売り上げ増えるか、混みすぎるか、安全か、など)、シミュレーションできてもよい。
【0077】
さらに、上述の実施例ではロボット12は1台だけが仮想シミュレーション空間内を移動するものとしたが、ロボットは複数台が同時に動いてもよい。この場合各ロボットはそれぞれ異なる行動決定プログラム24に従って行動する。
【0078】
上述の実施例では、各人エージェントはステップS3およびS5で人シミュレーション部18が自動的に次のステップでの位置を決定したが、多数の人エージェントがシミュレーションされる場合、その中の1人(または複数人)は、シミュレーション装置10を操作する者が操作して動かしてもよい。また、実際の環境で人が動いた結果として起きるセンサデータを(合成して)入力するようにしてもよい。たとえば、自分が動いた結果を仮想シミュレーションにデバッグすることができる。
【0079】
なお、上述のシミュレーション装置10におけるセンサ出力シミュレーション部28でシミュレーションしたセンサデータの一部、たとえば、ユーザの発話する音声などは、実際に計測したセンサデータを再生して再現してもよい。
【0080】
この実施例のシミュレーション装置10では、仮想シミュレーション空間内の人エージェントについては、予め人の形状(パターン)モデルを登録した人パターンデータベース14を設け、そこから、大人子供、男女、などの属性が合うデータを仮想シミュレーション空間内に投入したが、このデータを、たとえば、リュックを持っている人が多い、冬服夏服、などのように、実際に計測した人のデータに置き換えるような仕組みを設けてもよい。
【0081】
シミュレーション装置10の出力として、様々なパターン認識に役立つデータ(センサデータとラベル付きのデータ)を出力するようにしてもよい。たとえば、ロボットの距離画像センサの視野内に人がいるかどうか、大量のデータを出力すると、ディープラーニング(Deep learning)等の手法により、人を検出する認識プログラムを実現可能である。
【0082】
なお、上述の実施例ではロボットの行動決定プログラム24は、仮想シミュレーション空間内におけるロボット12の一連の行動をすべてプログラムしているものとして説明したが、一連の行動の一部のみをシミュレーションする場合にも、このシミュレーション装置10は使える。つまり、ロボットの行動決定プログラム24は、ロボットの少なくとも1つの行動を決定するプログラムであればよく、このシミュレーション装置10はそのようなプログラムの良否を判断する指標を与えてくれる。
【0083】
実施例のシミュレーション装置10は、ロボット12の性能を計測するために利用することもできる。
図9には一例として、ロボット12が仮想シミュレーション空間200のA地点(たとえば、入口202)からB地点(たとえば、出口204)(いずれも
図7参照)まで移動する際の移動効率(平均速度)を計測する(1000回シミュレーションして平均を求める場合、N=1000)場合のシミュレーション装置10の動作を示している。
【0084】
図9の最初のステップS21では、シミュレーション回数をカウントする変数nおよび合計速度を示すv_sumを初期化する(n=0、v_sum=0)。ただし、シミュレーション回数は別途設けたカウンタ(図示せず)でカウントされ、合計速度v_sumは、別途設けたバッファ(図示せず)で累積される。
【0085】
そして、次のステップS23で、シミュレーション回数nが規定回数Nに達したかどうか判断する(n>N?)。
【0086】
ステップS23で“NO”ならステップS25に進み、シミュレーション装置10に初期値を設定する。現在時刻をt0と設定し、ロボット12の位置をA地点(入口202)に設定する。そして、シミュレーション回数をインクリメントする(n=n+1)。
【0087】
ステップS27で、ロボット12がB地点(出口204)に到達するまで、シミュレーションを実行する。
【0088】
ステップS29では、シミュレーション装置10内でのシミュレーション終了時刻t1から、この回のシミュレーションにおけるロボット12の移動速度v=AB/(t1-t0)を計算する。ただし、ABは地点Aから地点Bまでの距離である。
【0089】
ステップS31では、バッファに合計速度v_sumを更新する(v_sum+v)。
【0090】
そして、ステップS23において、シミュレーション回数nが規定回数Nに達したと判断したら、次のステップS33において、平均速度v_avgを計算する(v_avg=v_sum/N)。このようにしてシミュレーションしたロボット12の地点Aから地点Bまでの移動効率(平均移動速度)は、人共存環境におけるロボット12の安全な運用のための指標となり得る。
【0091】
実施例のシミュレーション装置10を用いれば、上述の平均移動速度の他に、安全に関する指標として、ロボットが人に接触してしまった回数、ロボットから一定距離以内(たとえば50cm)に人が近づいてしまった回数、性能に関する指標として、ロボットに話しかけた人の人数や、ロボットの宣伝を聞いて来店した人の人数なども利用できる。
【0092】
なお、このシミュレーション装置10が行動をシミュレーションできるロボットは実施例で説明した
図3および
図4に示すロボット12に限定されるものではない。他の形式、構造のコミュニケーションロボットにもこのシミュレーション装置は適用可能である。