(57)【特許請求の範囲】
【請求項１】
１つ又は複数のセンサを用いて実空間を計測し計測した値に基づき空間の３次元形状を再現し、さらに属性を付加した属性付き仮想空間モデルと、
前記仮想空間モデル内のロボットの位置および姿勢とを入力とし、前記ロボットに搭載されたセンサで取得できるデータをシミュレーションするセンサシミュレーション部と、
前記ロボットに搭載されたセンサに応じた補正モデルとセンサデータ補正パラメータを準備し、前記ロボットに搭載されたセンサで取得した取得センサデータに、属性が付加されている点が含まれるかどうか判定し、前記属性が含まれている点群に対して、前記補正モデルと、センサデータ補正パラメータに応じた補正を行い、補正センサデータを作成するセンサデータ補正部と、
前記出力補正センサデータおよび属性反映２次元環境地図とを入力とし、両データの照合処理により２次元環境地図内のロボットの位置姿勢を推定し、仮想ロボット推定位置および姿勢データを出力する仮想ロボット位置・姿勢推定部と、
前記推定仮想ロボット位置および姿勢と、予め設定した経路データを入力とし、次の移動先を決定する移動目標位置決定部と、
決定された値に応じて仮想ロボット位置および姿勢を更新する移動部、とを備えることを特徴としたシミュレーションシステム。
【請求項２】
請求項１に記載の前記属性付き仮想空間モデルは、形状を再現した仮想空間モデルに、センサによって計測データに変化の生じる領域に対して属性を設定することにより作成することを特徴とするシミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションシステムに関し、特に、仮想空間内で、自律移動ロボットの挙動を検証する、ロボットシミュレーションシステムに関する。
【背景技術】
【０００２】
工場や倉庫内などの現場において、物品の搬送などを行うロボットが数多く導入されるようになってきた。実際の工場で運用するためには、事前に安全性などを十分に検証する必要がある。ロボット移動のためのアルゴリズムが正しいか、どのような搬送経路が効率的か、複数ロボット同時運用時に衝突がないか、位置推定誤りや経路逸脱の可能性はあるか、ロボット同士でデッドロックを起こす可能性はあるか、など、様々な検証項目が考えられる。
【０００３】
工場など、屋内を自律的に動く複数のロボットの制御システムとして、次に挙げる運行制御システム(特許文献１)がある。集中制御装置にて、各ロボットとの通信によりロボット位置を把握し、作業の必要な場所に最も近いロボットの動作計画を立てるが、予め決められた短距離経路を組み合わせることにより、目的地までの経路を作成し、通信により各ロボットの位置を把握しロボット同士がぶつかることなく最適な経路で移動できるものである。各ロボットの干渉の可能性をシミュレーションにより予測することができる。
【０００４】
また、ロボットの持つセンサで周辺の環境を認識しながら自律的に移動するものとして、３次元ＣＧ空間を走行し、仮想的に得られるカメラ画像をベースにロボット位置を推定し、動作をシミュレートするロボットシミュレータもある(非特許文献1)。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2005-242489号公報
【非特許文献】
【０００６】
【非特許文献１】“画像理解のための4次元空間シミュレータ,” 電子情報通信学会技術研究報告, No.PRMU-97-277, pp.89-96, 1998.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１記載のシミュレータは、走行する領域の地図を保持し、走行中に適宜目標（地上のマークなど）を検出することによって位置を確認しているが、事前に目標を設置する必要があり、工場内のレイアウトが変更になったときは、全てを設置しなおす手間が必要となる。
【０００８】
非特許文献１記載のシミュレータは、ＣＧで作成した擬似環境内で動作検証を行うものであり、現実空間の状況とは異なる状況である可能性が高い。また、基本的にアルゴリズム検証のためのシミュレータであり、現実空間を走行することを想定したシミュレータではない。
【０００９】
本発明は上記事由に鑑みて為されたものであり、その目的は、現実に近い状況を再現した仮想空間内で、環境内に目印となるものを設置することなく、実機に用いるアルゴリズムを用いて、実際に得られるであろうセンサデータを基に周囲の環境を認識し移動するシミュレーションシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の望ましい態様は、次のようなシミュレーションシステムである。即ち、本発明に係るシミュレーションシステムは、空間の３次元形状を再現し属性を付加した属性付き仮想空間モデルと、前記仮想空間モデル内のロボットの位置および姿勢とを入力とし、前記ロボットに搭載されたセンサで取得できるデータをシミュレーションするセンサシミュレーション部と、前記センサで取得した取得センサデータに、属性が付加されている点が含まれるかどうか判定し、前記属性が含まれている点群に対して、センサデータ補正パラメータに応じた補正を行い、補正センサデータを出力するセンサデータ補正部と、前記出力補正センサデータおよび属性反映２次元環境地図とを入力とし、両データの照合処理により２次元環境地図内のロボットの位置姿勢を推定し、仮想ロボット推定位置および姿勢データを出力する仮想ロボット位置・姿勢推定部と、前記推定仮想ロボット位置および姿勢と、予め設定した経路データを入力とし、次の移動先を決定する移動目標位置決定部と、決定された値に応じて仮想ロボット位置および姿勢を更新する移動部、とを備える。
【発明の効果】
【００１１】
本発明によれば、現実世界により近いロボットのシミュレーションを実現できる。
【図面の簡単な説明】
【００１２】
【図１】全体の流れを示す図。
【図２】現実空間で実機を用いた時の自律移動の流れを示した機能ブロック図。
【図３】自律移動シミュレータの機能ブロック図。
【図４】属性反映２次元環境地図作成のブロック図。
【図５】属性付き仮想空間モデルの例を示した図。
【図６】センサデータ補正の例を示した図。
【図７】センサデータ補正の例を示した図。
【図８】属性反映２次元環境地図の例を示した図。
【図９】従来のシミュレーションの例を示した図。
【図１０】実施形態におけるシミュレーションの例を示した図。
【発明を実施するための形態】
【００１３】
以下、実施形態について、図面を参照しながら説明する。
【００１４】
図１は、本実施形態の全体の流れを示すものである。
【００１５】
本実施形態は、３つのステップから成る。
【００１６】
まず、１つ目のステップは、実測データに基づく環境の形状復元、仮想空間モデルの作成である。より現実に近いシミュレーションを行うためには、極力現実世界に忠実な環境モデルを用意するのが望ましい。それには、距離センサなどを用いて環境を計測し、計測データを統合することにより、仮想空間モデルを作成する方法が、一手法として考えられる。種類の異なる複数のセンサを用い、適切なデータを選択・統合することにより、より正確なモデルの作成が可能となる。例えば、レーザ光を用いた計測では、ガラスは透過したり、鏡面は反射したりする特性を持つ。しかし、超音波を用いた計測では、ガラス面や鏡面も面を認識することができる。このため、ガラス面や鏡面には、超音波による計測データを用いることにより、正確な形状データを得ることができる。また、扉や壁面の向こう側は、レーザ光を用いた計測では扉や壁面のデータに遮られ認識できないが、Ｘ線による計測データを用いることにより、扉や壁内部の状態も把握することが出来るようになる。このように、複数の異なるセンサを用いてデータを統合することにより、形状を正確に再現した仮想空間モデルの作成が可能となる。
【００１７】
また、仮想空間モデルの作成において、モデル作成手段は、実測データを用いることには限定しない。対象となる空間のＣＡＤ図面などを参考にモデルを作成しても構わないし、メジャーで計測しながら現状と同等の環境モデルを手動で作成しても構わない。
【００１８】
また更に、現場の状況が変わる（モノの位置が変わる、新たにモノが置かれる、置かれたモノがなくなる）可能性があることを想定し、作成した仮想空間モデルには、仮想オブジェクトを追加・削除・移動できるようにする。また更に、仮想空間内には、静止物体だけでなく、移動する物体も設置可能とする。
【００１９】
２つめのステップは、仮想空間への属性付加である。センサを用いて環境を計測しその結果に基づき自律移動を行うが、現実に忠実なセンシング結果を得るために、予め仮想空間モデルに属性を設定する。属性の設定には、仮想空間をディスプレイに表示し、マウスやペンタブレット、キーボードなどの入力装置を用いて属性設定範囲を指定し、指定された範囲に対して、予め定めた属性（例えば、ガラス、鏡、光吸収色、光膨張色、拡散素材など）の中から選択する方法などが考えられる。また別の方法として、複数のセンサ、例えば、レーザ距離センサと超音波センサ、カメラなどで、同じ場所を計測したデータを用いて、取得距離データの差異や色などから、属性を自動的に判断してもよい。
【００２０】
３つ目のステップは、属性に応じたセンサシミュレーション、自律移動シミュレーションの実施である。図３以降で詳述する。
【００２１】
図２は、現実空間で実機を用いた時の自律移動の流れを示した機能ブロック図である。
ここでは、レーザ距離センサで環境を認識しながら移動するロボットを想定し、説明する。ロボットに搭載されたセンサは、スキャン面がｘ−ｙ平面（床面）と平行になるように固定されている状態であると仮定する。センサデータ取得部１０１では、レーザ距離センサで周辺環境との距離を計測し、センサデータ２０１として保存する。
【００２２】
ロボット位置推定部１０２では、前記取得センサデータ２０１、ある一定の高さにおける環境の断面図である2次元環境地図２０２を入力とし、両データの照合処理により2次元環境地図２０２内のどの位置・方向にセンサが向いているか推定し、ロボット位置２０３として出力する。
【００２３】
移動目標位置決定部１０３では、前記推定ロボット位置２０３と、２次元環境地図２０２上に設定された経路データ２０４より、ロボットが次に進むべき位置と方向を決定し、移動部１０４にて、前記決定事項に従い、ロボットの移動制御を行う。１０１〜１０４の動作を繰り返すことにより、ロボットは自律的に移動することができる。
【００２４】
これと同じ状況を、計算機上で、再現することを考える。
【００２５】
すなわち、自律移動シミュレーションの基本的な流れは、以下の通りである。実空間を模擬した3次元形状の仮想空間と、前記仮想空間の中を移動する仮想ロボットにより構成され、仮想空間内の物体の配置を示した2次元環境地図と、仮想ロボットの位置及び方向から見える周辺環境までの距離を計測する距離センサと、前記計測センサデータと、2次元環境地図とのマッチングにより、仮想ロボット位置を推定する。また更に、仮想ロボットの位置及び方向と、前記推定仮想ロボットの位置及び方向とを比較することにより、位置推定アルゴリズムを評価する。
【００２６】
なお、計算機は各データおよび各プログラムを記録する記録部、各データおよび各プログラムを読み出して実行するＣＰＵなどの演算部を備えている（図示せず）。本図で説明した各データは記録部に記録され、また、機能ブロックで示される各処理、各フローは必要なプログラムを読み出して演算部が実行するものとする。これらのハードウェアの構成および処理動作は以下で説明する他の図面においても同様である。
【００２７】
図３は本自律移動シミュレータの機能ブロック図である。
センサシミュレーション部３０１では、空間の３次元形状を表し素材などの属性を付加した、属性付き仮想空間モデル４０１と、仮想空間内を走行する仮想ロボットの位置・姿勢４０２を入力とし、仮想ロボット上のセンサ位置から、仮想空間との距離を計測し、センサデータ４０３として保存する。センサデータ４０３は点の集合体である点群にて表され、各点は、レーザ距離センサと障害物との距離・角度の値を持つ。また更に、属性の付加された場所を計測した点には、属性有の情報と属性の種類が追加される。すなわち、各点が持つ情報には、障害物との距離・角度、属性の有無、属性有りの場合はその種類が含まれる。
【００２８】
センサデータ補正部３０２では、センサデータに属性情報が含まれていたときに、センサデータを、その属性に応じて補正する。補正パラメータは、センサ毎に設定した、補正パラメータ４０４により、決定する。現実世界では、使用するセンサ、センシング対象素材によって、取得できるデータが異なる。同じレーザ距離センサでも、センサによって、色に対する感度が異なったりすることもあるし、異なる種類のセンサを使用すれば、あるセンサでは計測できても、別のセンサでは計測不可となるような素材もある。このため、使用センサに応じた補正モデルを準備し、取得したセンサデータの該当部分に適用することにより、補正センサデータ４０５を作成する。
【００２９】
ロボット位置推定部３０３では、前記作成の補正センサデータ２０１、属性を反映した２次元環境地図４０６を入力とし、両データの照合処理により2次元環境地図４０６内のどの位置・方向にロボットが向いているか推定し、ロボット位置４０７として出力する。ここで使用する2次元環境地図４０６は、図４に示す手順で作成する。
【００３０】
図４は、属性反映２次元環境地図作成のブロック図である。
【００３１】
仮想ロボット移動部３０６では、仮想空間内で仮想的にロボットを移動させる。ロボット移動には、例えば、キーボードやマウス、ジョイスティックなどの入力手段を通して、前後左右の移動、及び回転操作を行い、その操作に応じて、仮想ロボットの位置・姿勢４０２を出力する。センサシミュレーション３０１からロボット位置推定３０３までの流れは、図３で説明したのと一緒である。地図更新部３０７では、補正センサデータ４０５と、それまでに作成した属性反映２次元地図４０６との照合処理を行うことで、ロボット位置４０７の推定を行い、この結果に基づき、補正センサデータ４０５を２次元地図２０６に統合することにより、逐次地図を拡大していく。ロボット位置推定３０３と地図更新３０７には、これら二つの計算を同時に実行するSLAM (Simultaneous Localization And Mapping)技術を用いる。
【００３２】
図５は、属性付き仮想空間モデルの例を示した図である。
形状は、現実世界と全く同じ状況を再現する。使用するセンサのセンサ特性により、取得データが実際の形状と異なる。このため、実際の形状と異なるデータが取得される可能性のある領域を設定し、その領域に対して属性を設定する。属性として、鏡、ガラス、すりガラス、凹凸素材、光吸収素材、色、温度、磁気、水、などが考えられる。
【００３３】
図６、図７は、センサデータ補正の例を示した図である。
レーザ距離センサの補正パラメータ４０４を適用した例を挙げる。
シミュレーションにて得られるセンサデータは、障害物の位置を表す点群であらわされるが、センサ位置から障害物までの距離と角度、属性有無種類情報が含まれる。
【００３４】
(1-1)は、鏡属性ありの点が含まれるセンサデータの例である。点５０１は、属性のないデータを表し、点５０２は鏡属性の付与されたデータとする。レーザ光は、鏡面で反射するため、”センサ位置から鏡までの距離＋反射した先の障害物までの距離”が、実際に計測されるデータとなる。そこで、属性を反映したセンサデータ作成にあたり、属性なしの部分はそのままで、属性ありの部分は反射先の障害物までの距離に応じてデータを補正する。例えば、(1-2)に示すような補正データが作成される。
【００３５】
(2-1)は、ガラス属性ありの点が含まれるデータの例である。レーザ光は、ガラスを透過するため、ガラスの先にある障害物までの距離が追加され、例えば、(2-2)に示すような補正データが作成される。
【００３６】
(3-1)は、素材１属性ありの点が含まれるデータの例である。センサ特性として、素材１を計測した時に、実際の距離より遠くに計測される場合の例を挙げている。(3-2)は、補正データの例である。
【００３７】
(4-1)は、素材２属性ありの点が含まれるデータの例である。センサ特性として、素材２を計測した時に、実際の面より凹凸が付加され計測される場合の例を挙げている。(4-2)は、補正データの例である。
【００３８】
(5-1)は、移動体属性ありの点が含まれるデータの例である。次に計測した時に、その場所にはない可能性が高い。そこに障害物がある確度情報を点に付加する。(5-2)は、補正データの例である。
【００３９】
図８は、属性反映２次元環境地図の例を示した図である。
空間内の表面形状を正確に表した仮想空間２次元地図を５１０とする。３次元仮想空間モデルに付与した属性情報を仮想空間２次元地図に重ねた例を５１１とする。図４で説明した手順にて、環境地図を作成するにあたり、センサシミュレーションで取得したデータに、図６の(2-1)(2-2)や図７の(3-1)や(3-2)に例を挙げたように属性に応じた補正を行い、補正後の補正センサデータを順次統合することにより、属性反映2次元地図５１２が作成される。ガラス属性の付与されたものは地図から消え、素材１属性の付与されたものは縮小された状態で残る。
【００４０】
現実世界に忠実な形状をあらわしているのは５１０で示した地図であり、現実世界をセンサで計測したデータに忠実な形状をあらわしているのは５１２で示した地図となる。
【００４１】
図９は、従来のシミュレーションの例を示した図である。
【００４２】
仮想空間内においてセンサから周辺障害物までの距離を測定し、センサデータを取得する。取得センサデータは、４０３に示すとおりである。シミュレーションでは、２次元環境地図と、取得センサデータ４０３の照合処理を行うことにより、自己位置を推定する。形状を正確に再現した3次元仮想空間データ内で取得したセンサデータと、形状を正確に再現した3次元仮想空間の断面図である2次元地図を用いるため、自己位置の推定を正しく行うことができる。このため、ロボット位置推定などのアルゴリズムの検証には、有効である。しかし、現実の世界とは、異なるセンサデータが得られるため、例えば、位置推定誤りの可能性や経路逸脱の可能性、経路妥当性の検証を行うには不向きである。
【００４３】
図１０は、本実施形態におけるシミュレーションの例を示した図である。
【００４４】
属性を反映した仮想空間内においてセンサから周辺障害物までの距離を測定し、センサデータを取得する。取得センサデータは、４０３に示すとおりである。５０１は属性なしのセンサデータであり、５０２は属性ありのセンサデータである。点の一つ一つに、属性の有無及び、属性の種類を与える。取得センサデータ４０３の中で、属性の含まれる点に対して、属性の種類に応じた補正を行い、補正センサデータ４０５を作成する。シミュレーションでは、属性を反映した２次元環境地図５１２と、補正センサデータ４０５の照合処理を行うことにより、自己位置を推定する。形状を正確に再現し必要部分に属性を付加した3次元仮想空間データ内で取得したセンサデータと、その属性を反映して作成した2次元地図を用いるため、自己位置の推定を現実世界で実機で行ったときと同等の結果を得ることができる。このため、ロボット位置推定などのアルゴリズムの検証に有効であり、様々な環境の状況、及びロボットの状態に応じたロボットの挙動をシミュレートすることができる。
【００４５】
例えば、ロボット傾斜時の位置推定への影響を検証できる。床面の段差や床に置かれているものに乗り上げた時、ロボットが傾斜し、センサ面が床面と水平でなくなる。そこで、仮想ロボットを傾斜させる機能を備えることにより、ロボット傾斜時に取得したセンサデータが、地図生成時にどのような影響を及ぼすか、また、ロボット移動時の位置推定にどのような影響を及ぼすかを検証することができる。
【００４６】
例えば、ロボットに搭載するセンサ位置の検証もできる。センサ取り付け方法を変更する機能を備えることにより、センサ位置、例えば、センサの高さ、角度、ロボット中心からの距離などを変更した時の、地図生成時や位置推定に及ぼす影響を検証することができる。また更に、センサ個数を変更する機能を備えることにより、どの程度位置推定精度が向上するかを検証することも可能となる。
【００４７】
例えば、空間内に複数の移動物体（ロボット、人、など）が存在した時の、位置推定への影響及びロボット挙動への影響を検証することが出来る。センサ視野を遮断する移動物体の、大きさ、ロボットとの距離、動作が、ロボットの位置推定へどのくらい影響を及ぼすか検証ができ、また更に、移動物体がロボット進路を遮った場合のロボットの挙動、例えば、停止する、回避する、などの選択が適切であるか、なども検証することが出来る。
【００４８】
例えば、複数の自律移動ロボットが同一環境内を移動する時の各ロボットの挙動も検証できる。ロボット同士が衝突する可能性があるか、それはどのような条件が重なった時か、ロボット同士がデッドロックを起こす可能性があるか、それはどこで起こる可能性が高いか、どのような条件が重なった時か、何台まで同時走行させることが出来るか、などを、シミュレーションにより検証することができる。
【００４９】
また更に、経路逸脱の可能性、経路妥当性の検証にも有効である。
【００５０】
また更に、２次元環境地図妥当性の検証にも有効である。現実空間で実機を用いて計測した距離データに基づき２次元環境地図を作成する。シミュレーションでは、現実空間を模擬して作成した仮想空間を準備し、仮想空間内を走行する仮想ロボットに搭載されたセンサで距離データを取得し、前記取得距離データに属性を反映させた属性反映距離データと、現実空間の２次元環境地図との照合処理により、仮想ロボットの位置及び方向を推定する。仮想空間内のロボット位置・方向と、前記推定ロボット位置・方向とを比較することにより、２次元環境地図の妥当性の検証や、位置推定アルゴリズムの検証を行う。現実空間で作成した２次元環境地図は、一部を修正・追加・削除可能とする。また更に、現実空間での物体の移動状態を基に作成した仮想移動物体を、シミュレーション対象となる仮想空間に追加する手段を備えることにより、より現実に即した動作検証を行うことが出来る。
【００５１】
本実施形態における自律移動シミュレーションは、実機に用いるアルゴリズムを用いて仮想ロボットを移動させることが可能であり、実際のロボットを導入した時の影響をＰＣ内で評価することができる。
【符号の説明】
【００５２】
４００・・・仮想空間モデル、４０１・・・属性付き仮想空間モデル、４０２・・仮想ロボット位置・姿勢、４０３・・・センサデータ、４０４・・・センサデータ補正モデル、４０５・・・補正センサデータ、４０６・・・属性反映２次元環境地図、４０６−ａ・・・２次元環境地図、４０７・・・仮想ロボット推定位置・姿勢、４０８・・・経路データ、５０１・・・属性なし点群データ、５０２・・・属性あり点群データ
【図１】
0005414465.tif 000002
【図２】
0005414465.tif 000003
【図３】
0005414465.tif 000004
【図４】
0005414465.tif 000005
【図５】
0005414465.tif 000006
【図６】
0005414465.tif 000007
【図７】
0005414465.tif 000008
【図８】
0005414465.tif 000009
【図９】
0005414465.tif 000010
【図１０】
0005414465.tif 000011