(57)【特許請求の範囲】
【請求項１】
ロボットの自己位置推定をコンピュータに評価させるプログラムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の実環境地図上のロボット位置を表す自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記推定環境地図上の座標値とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順
を前記コンピュータ実行させることを特徴とする、プログラム。
【請求項２】
前記ロボットが前記特徴点ペアの間を通過した時、前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサからの距離データを受信する手順
を前記コンピュータに更に実行させ、
前記計算手順は、前記特徴点ペアの推定環境地図上の座標値と前記距離データとに基づき前記ロボットの前記推定環境地図上の前記座標値を計算することを特徴とする、請求項１記載のプログラム。
【請求項３】
前記ロボットが前記特徴点ペアの間を通過した時、前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部からの距離データを受信する手順
を前記コンピュータに更に実行させ、
前記計算手順は、前記特徴点ペアの推定環境地図上の座標値と前記距離データとに基づき前記ロボットの前記推定環境地図上の前記座標値を計算することを特徴とする、請求項１記載のプログラム。
【請求項４】
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手順
を前記コンピュータに更に実行させることを特徴とする、請求項１乃至３のいずれか１項記載のプログラム。
【請求項５】
ロボットの自己位置推定を評価する推定位置評価システムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の実環境地図上のロボット位置を表す自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記推定環境地図上の座標値とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えたことを特徴とする、推定位置評価システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自己位置推定により生成した推定環境地図上の位置の精度を実環境地図上の位置に対して評価する推定位置評価システム及びプログラムに関する。
【背景技術】
【０００２】
ＳＬＡＭ（Simultaneous Localization And Mapping）は、自己位置推定と環境地図の作成を同時に行う手法である。しかし、ＳＬＡＭによって生成された推定環境地図上の推定位置と実環境地図上の実位置とを対応付けることは、これら２つの環境地図が異なるため困難である。
【０００３】
図１は、実環境地図とＳＬＡＭにより生成される推定環境地図を説明する図である。図１中、（ａ）はロボット等が移動可能な領域２を含む実環境地図１を示し、（ｂ）はロボット等が移動可能な領域１２を含む推定環境地図１１を示す。ロボット等が移動可能な領域２，１２は、図１中ハッチングで示す。図１に示すように、ＳＬＡＭによって生成された推定環境地図１１には、ロボットの初期位置におけるロボットの姿勢のずれ、計測時における測定誤差等により実環境地図１との間に歪みが発生する。例えば、ＳＬＡＭ開始時のロボット位置を原点として図１中●印で示すと、このロボット位置はＳＬＡＭで生成された推定環境地図１１上でも、実環境地図１上でも原点となる。しかし、原点からロボット正面方向に例えば１ｍ移動した位置では、ＳＬＡＭで生成された推定環境地図１１上のロボット位置と実環境地図１上のロボット位置の間にずれが生じる。このずれは、ロボット位置が原点から遠ざかるにつれて大きくなる。このため、ロボットが推定環境地図１１上の任意の地点で推定した自己位置が、実環境地図１上の実際の位置からどの程度ずれているかを評価することは困難である。
【０００４】
そこで、例えばロボットの初期位置における正面方向をｘ軸（ｍ）、左手方向をｙ軸（ｍ）と定義して、例えば座標(1,0),(2,0),(2,1),(2,2)における実環境地図上のロボット位置とＳＬＡＭで生成された推定環境地図上のロボット位置とを比較して、図２に●印で示すように実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法も提案されている。図２は、実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法を説明する図である。図２中、（ａ）は実環境地図１を示し、（ｂ）は推定環境地図１１を示し、図１と同一部分には同一符号を付し、その説明は省略する。
【０００５】
しかし、このようなマッピングを行う場合、マッピングする位置の数が少ないと、ロボットが推定環境地図１１上の任意の地点で推定した自己位置が実環境地図１上の実際の位置からどの程度ずれているかの評価精度が低下する。一方、マッピングする位置の数が多いと、評価精度の低下は抑制できるものの、マッピングの処理が複雑となり処理時間が増大してしまう。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−１３９２６５号公報
【特許文献２】特開２００４−２９４４２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することは難しいという問題があった。
【０００８】
そこで、本発明は、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することのできる推定位置評価システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一観点によれば、ロボットの自己位置推定を評価する推定位置評価システムであって、前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の実環境地図上のロボット位置を表す自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記推定環境地図上の座標値とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えた推定位置評価システムが提供される。
【００１０】
本発明の一観点によれば、ロボットの自己位置推定をコンピュータに評価させるプログラムであって、前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の実環境地図上のロボット位置を表す自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記推定環境地図上の座標値とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順を前記コンピュータ実行させるプログラムが提供される。
【発明の効果】
【００１１】
開示の推定位置評価システム及びプログラムによれば、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】実環境地図とＳＬＡＭにより生成される推定環境地図を説明する図である。
【図２】実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法を説明する図である。
【図３】本発明の一実施例におけるサーバ装置の構成の一例を示すブロック図である。
【図４】本発明の一実施例におけるロボットの構成の一例を示すブロック図である。
【図５】ＳＬＡＭにより生成される推定環境地図の一例を示す図である。
【図６】位置精度評価処理の第１の例を説明するフローチャートである。
【図７】特徴点ペアを決定する処理を説明するフローチャートである。
【図８】ステップＳ１０の処理を説明する図である。
【図９】ステップＳ１０の処理をより詳細に説明するフローチャートである。
【図１０】位置精度評価処理の第２の例を説明するフローチャートである。
【図１１】位置精度評価処理の第３の例を説明するフローチャートである。
【図１２】ステップＳ２５の処理を説明する図である。
【図１３】ステップＳ２５の処理をより詳細に説明するフローチャートである。
【図１４】位置精度評価処理の第４の例を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
開示の推定位置評価システム及びプログラムは、ロボットの自己位置推定を評価する。ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を求め、特徴点ペアの推定環境地図上の座標値と、ロボットが特徴点ペアの間を通過する時のロボットの座標値を基準とした位置情報とに基づいて、推定環境地図上のロボット位置を計算する。推定環境地図上のロボット位置と自己位置推定結果を比較することで、自己位置推定の精度を評価する。
【００１４】
以下に、開示の推定位置評価システム及びプログラムの各実施例を図面と共に説明する。
【実施例】
【００１５】
本発明の一実施例における推定位置評価システムは、ネットワークを介して互いに通信可能な１台のサーバ装置と少なくとも１台のロボットとで形成できる。
【００１６】
図３は、本発明の一実施例におけるサーバ装置の構成の一例を示すブロック図である。図３に示すサーバ装置２０は、ＣＰＵ（Central Processing Unit）２１、記憶部２２、入力部２３、表示部２４、及び通信部２５がバス２９で接続された構成を有する。尚、ＣＰＵ２１は、記憶部２２、入力部２３、表示部２４、及び通信部２５のうち少なくとも１つとバス２９を用いることなく直接接続されていても良い。
【００１７】
ＣＰＵ２１は、サーバ装置２０全体の制御を司るプロセッサを形成する。記憶部２２は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部２２は、可搬型の記憶装置を含んでも良い。記憶部２２は、ＣＰＵ２１が実行するプログラム、ＣＰＵ２１が実行する演算の中間結果、各種データ等を格納する。入力部２３は、キーボード、マウス等の入力装置で形成され、ＣＰＵ２１に各種指示はデータを入力するのに用いられる。表示部２４は、操作画面、ＣＰＵ２１の処理結果等を表示するのに用いられる。通信部２５は、無線ネットワーク（図示せず）を介して図４と共に後述するロボット３０と通信可能であり、更に、有線ネットワーク及び無線ネットワークの少なくとも一方を介して距離センサ等の外部装置と通信可能であっても良い。
【００１８】
ＣＰＵ２１は、記憶部２２に格納されているプログラムを実行することで、サーバ装置２０の各種機能を実現する。つまり、記憶部２２に格納されているプログラムには、ＣＰＵ２１に位置精度評価処理を含むサーバ装置２０の各種処理を実行させる各手順が含まれる。プログラムには、後述する特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等を含む各種処理を実行させる各手順が含まれても良い。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部２２を形成する少なくとも１つの記憶装置で形成可能である。
【００１９】
図４は、本発明の一実施例におけるロボットの構成の一例を示すブロック図である。ロボット３０は、自律走行が可能（即ち、自律走行型）であり、周知の自己位置推定機能を有する。図４に示すロボット３０は、ＣＰＵ３１、記憶部３２、入力部３３、表示部３４、通信部３５、駆動部３６、及び測定部３７がバス３９で接続された構成を有する。尚、ＣＰＵ３１は、記憶部３２、入力部３３、表示部３４、通信部３５、駆動部３６、及び測定部３７のうち少なくとも１つとバス３９を用いることなく直接接続されていても良い。
【００２０】
ＣＰＵ３１は、ロボット３０全体の制御を司るプロセッサを形成する。記憶部３２は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部３２は、可搬型の記憶装置を含んでも良い。記憶部３２は、ＣＰＵ３１が実行するプログラム、ＣＰＵ３１が実行する演算の中間結果、各種データ等を格納する。入力部３３は、キーボード等の入力装置で形成され、ＣＰＵ３１に各種指示はデータを入力するのに用いられる。表示部３４は、操作画面、ＣＰＵ３１の処理結果、ユーザに対するメッセージ等を表示するのに用いられる。通信部５５は、無線ネットワークを介して図３に示すサーバ装置２０と通信可能であり、更に、有線ネットワーク及び無線ネットワークの少なくとも一方を介して距離センサ等の外部装置と通信可能であっても良い。駆動部３６は、ロボット３０の自律走行を可能とするモータ等を含む周知の構成を有する。測定部３７は、ロボット３０から壁等の対象物までの距離を測定するＬＲＦ（Laser Range Finder）、画像を撮像するカメラ、マーカ等を検出する光学的検出装置、ＧＰＳ（Global Positioning System）等を含んでも良い。測定部３７は、ロボット３０が採用する自己位置推定機能を実現できる構成であれば特に限定されない。
【００２１】
ＣＰＵ３１は、記憶部３２に格納されているプログラムを実行することで、ロボット３０の各種機能を実現する。つまり、記憶部３２に格納されているプログラムには、ＣＰＵ３１に自律走行処理、ロボット３０の位置を推定する自己位置推定機能を実現させる自己位置推定処理を含むロボット３０の各種処理を実行させる各手順が含まれる。プログラムには、特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等を含む各種処理を実行させる各手順が含まれても良い。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部３２を形成する少なくとも１つの記憶装置で形成可能である。
【００２２】
尚、ロボット３０への入力を音声で行う場合には、入力部３３に代えて、或いは、入力部３３に加えて音声入力部（例えば、マイクロホン）を設け、ＣＰＵ３１に音声認識機能を持たせれば良い。又、ロボット３０からユーザへの出力を音声で行う場合には、表示部３４に代えて、或いは、表示部３４に加えて音声出力部（例えば、スピーカ）を設け、ＣＰＵ３１に音声合成機能を持たせれば良い。
【００２３】
図５は、ＳＬＡＭにより生成される推定環境地図の一例を示す図である。図５中、図２（ｂ）と同一部分には同一符号を付し、その説明は省略する。この例では、図５に示すように、ＳＬＡＭにより生成された推定環境地図、この例ではグリッド付きマップ（以下、単にグリッドマップと言う）上の特徴的な２点（以下、特徴点と言う）Ａ，Ｂをペアとして着目する。特徴点Ａ，Ｂのペアは、複数ペア選んでも良いが、図５では説明の便宜上１つのペアのみを示す。特徴点Ａ，Ｂは、例えばロボット３０が移動可能な領域１２の境界を形成する実環境における壁の角（凸部又は凹部）、机の角、パーティションの端等（以下、単にコーナと言う）に相当する。図５の例では、特徴点Ａは実環境における壁の角の凹部に相当し、特徴点Ｂは実環境における壁の角の凸部に相当する。特徴点Ａ，Ｂは、例えば測定部３７のＬＲＦの測定結果から決定することもできる。上記の特徴点Ａ，Ｂのグリッドマップ上における座標を求め、特徴点Ａ，Ｂ間の点の位置(例えば、特徴点Ａ，Ｂの中点)を求める。ロボット３０の自己位置推定処理の精度を評価する際は、これら特徴点Ａ，Ｂの間の点をロボット３０が通過するようにする。ロボット３０がこれら特徴点Ａ，Ｂの間の点に位置する時、自己位置推定されたロボット位置とグリッドマップから算出された特徴点Ａ，Ｂ間の点の位置との差を調べ、自己位置推定の精度を評価する。自己位置推定されたロボット位置とグリッドマップから算出された特徴点Ａ，Ｂ間の点の位置との差が小さい程、自己位置推定の精度が高いと評価することができる。
【００２４】
従って、ＳＬＡＭにより生成された推定環境地図上の位置と実環境地図上の位置とを対応付けることができる。このため、ある地点においてロボット３０が自己位置推定した位置が、ＳＬＡＭにより生成された推定環境地図上の位置とどの程度ずれているかを評価することができる。
【００２５】
尚、以下の説明では、例えば壁の角（凸部又は凹部）、机の角、パーティションの端等の特徴的な点が設けられた箇所を「コーナ」と言う。
【００２６】
図６は、位置精度評価処理の第１の例を説明するフローチャートである。図６に示す位置精度評価処理は、例えばサーバ装置２０のＣＰＵ２１により実行される。
【００２７】
図６において、ステップＳ１は、通信部２５がロボット３０から受信したデータに基づいて、ＳＬＡＭにより生成したグリッドマップデータを周知の方法で取得して記憶部２２に格納する。ステップＳ２は、特徴点ペアを手動で決定するか否かを判定する。特徴点ペアを手動で決定するか否かは、入力部２３により選択されても、デフォルトにより予め決定されていても良い。ステップＳ２の判定結果がＹＥＳであると処理は後述するステップＳ５へ進む。ステップＳ２の判定結果がＮＯであると、ステップＳ３は、グリッドマップデータからロボット３０の移動可能な領域１２の境界に存在するコーナを周知の方法で検出して記憶部２２に格納する。グリッドマップデータは、例えば記憶部２２に予め格納されていても、入力部２３から入力されても、通信部２５がロボット３０から受信しても良い。ステップＳ４は、ステップＳ３で検出された複数のコーナの中から、ロボット３０の移動経路を挟む隣接する特徴点ペアを決定して記憶部２２に格納する。
【００２８】
図７は、特徴点ペアを決定するステップＳ４の処理を説明するフローチャートである。図７において、ステップＳ４０１は、グリッドマップデータから検出されたコーナを取得する。ステップＳ４０２は、グリッドマップデータに対してロボット３０の移動経路を設定する。ロボット３０の移動経路は、例えば入力部２３から入力される。ステップＳ４０３は、設定された移動経路の例えば左側（或いは、右側）のコーナＡを移動経路に沿って検出し、記憶部２２に格納する。ステップＳ４０４は、検出されたコーナＡに対し、ペアの候補となるコーナを検出し、記憶部２２に格納する。ステップＳ４０５は、ペア候補となるコーナのうち、コーナＡとの距離が最小となるコーナＢを選択し、記憶部２２に格納する。ステップＳ４０６は、コーナＡとコーナＢの距離が基準値以下であれば、コーナＡ，Ｂを特徴点ペアに決定し、記憶部２２に格納する。ステップＳ４０７は、移動経路の左側に沿って検出した全てのコーナに対してステップＳ４０３〜Ｓ４０６の処理を実行したか否かを判定し、判定結果がＮＯであると処理はステップＳ４０３へ戻る。一方、ステップＳ４０７の判定結果がＹＥＳであると、処理は図６に示すステップＳ５へ進む。
【００２９】
ステップＳ２の判定結果がＹＥＳであり特徴点ペアを手動で決定する場合には、オペレータ（又は、管理者）が目で見て、例えば表示部２４に表示したグリッドマップ上のコーナ等の２つの特徴点で、且つ、ロボット３０がこれらの２つの特徴点の間を通るような特徴点ペアを入力部２３から選択して決定する。図６において、ステップＳ５は、ステップＳ２の判定結果がＹＥＳの場合は手動で決定された特徴点ペアについて、或いは、ステップＳ２の判定結果がＮＯの場合はステップＳ３，Ｓ４により自動的に決定された特徴点ペアについて、グリッドマップ上の座標値を求め、処理はステップＳ６へ進む。
【００３０】
ステップＳ６は、グリッドマップ上の特徴点ペアに対応する実環境地図上の位置（即ち、実環境のコーナ）に距離センサ９００を取り付ける。例えば図５に○印で示す特徴点Ａ，Ｂが選択された場合、特徴点Ａから特徴点Ｂの方向への距離、或いは、特徴点Ｂから特徴点Ａの方向への距離、或いは、図５に示すようにこれら両方の距離を測定するように測距センサ９００を取り付ける。距離センサ９００には、例えば超音波センサ、赤外線センサ、ＬＲＦ等を用いても良い。従って、距離センサ９００は、実環境の移動経路を移動してくるロボット３０までの距離を検出し、検出した距離を示す距離データ（即ち、特徴点Ａ及び／又はＢの座標値を基準とした距離情報）をネットワークを介してサーバ装置２０へ送信する。サーバ装置２０は、通信部２５がネットワークを介して受信した距離センサ９００からの距離データを記憶部２２に格納する。各特徴点Ａ，Ｂに対して距離センサ９００が設けられている場合には、サーバ装置２０のＣＰＵ２１は、２つの距離センサ９００の出力を用いることで、距離センサ９００が１つしか設けられていない場合に比べてロボット３０の移動経路上の位置をより正確に検出することができる。尚、距離センサ９００の出力は、ネットワークを介してロボット３０に送信しても良い。この場合、ロボット３０は、通信部３５がネットワークを介して受信した距離センサ９００からの距離データを記憶部３２に格納し、必要に応じて通信部３５からネットワークを介してサーバ装置２０へ送信しても良い。
【００３１】
ステップＳ６の後、オペレータは、ロボット３０をＳＬＡＭにより生成されたグリッドマップ上の所定位置に対応する位置に置き、ロボット３０の自己位置推定プログラムを起動する。自己位置推定プログラムが起動されてロボット３０の自己位置推定処理が開始した後、ＳＬＡＭにより生成されたグリッドマップ上の対応する座標位置でロボット３０の初期位置を設定する。ロボット３０の自己位置推定プログラムの起動及び初期位置の設定は、オペレータがサーバ２０の入力部２３からロボット３０への指示を入力して指示を通信部２５からロボット３０へ送信することで行っても、オペレータがロボット３０の入力部３３からロボット３０への指示を直接入力することで行っても良い。その後、ステップＳ７は、ロボット３０に自律走行（即ち、自律走行処理）を行わせる自律走行指示を通信部２５を介して送信し、自律走行指示に基づいてロボット３０の駆動部３６が周知の方法で駆動されることで、ロボット３０が上記移動経路に沿って移動する。ステップＳ８は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時のロボット３０の自己位置推定結果をロボット３０から受信して記憶部２２に格納する。ロボット３０の自己位置推定結果は、ロボット３０内で求められてサーバ装置２０に送信される。ステップＳ９は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時に距離センサ９００から送信されてくる距離データを記憶部２２に格納する。距離データは、サーバ装置２０が距離センサ９００から直接受信しても、ロボット３０を介して受信しても良い。ステップＳ１０は、記憶部２２に格納されているグリッドマップ上の特徴点ペアの位置と、記憶部２２に格納されている距離センサ９００からの距離データとに基づいて計算されるグリッドマップ上のロボット３０の位置を、記憶部２２に格納されているロボット３０の自己位置推定結果と比較することで自己位置推定の精度を評価し、処理は終了する。自己位置推定結果の精度は、グリッドマップ上のロボット３０の位置に近い程精度が高いと評価できる。
【００３２】
図８は、図６に示すステップＳ１０の処理を説明する図である。図８中、図５と同一部分には同一符号を付し、その説明は省略する。図８に示す例では、特徴点ペアのうち、特徴点Ａのグリッドマップ上の座標値(x1,y1)は例えば(2,2)であり、特徴点Ｂのグリッドマップ上の座標値(x2,y2)は例えば(3,3)である。又、図８中、Ｃはロボット３０の通過位置を示す。グリッドマップ上の座標値(x,y)におけるx及びyは、この例ではいずれも任意単位であるが、メートル（ｍ）等の単位を用いても良いことは言うまでもない。
【００３３】
図９は、ステップＳ１０の処理をより詳細に説明するフローチャートである。図９において、ステップＳ１００１は、ロボット３０が特徴点ペアＡ，Ｂの間を通過した時、特徴点Ａに取り付けられた距離センサ９００により特徴点Ａからロボット３０の通過位置Ｃまでの距離データ（例えば0.8）を例えば距離センサ９００から受信して記憶部２２に格納する。ステップＳ１００２は、ロボット３０が特徴点ペアＡ，Ｂの間を通過した時、ロボット３０の自己位置推定処理により得られた自己推定位置（例えば(2.7,2.8)）をロボット３０から受信して記憶部２２に格納する。ステップＳ１００３は、例えば距離センサ９００から直接受信して記憶部２２に格納された距離データ（例えば0.8）からロボット３０の通過位置Ｃの座標を計算して記憶部２２に格納する。ロボット３０の通過位置Ｃの座標は、特徴点Ａの座標値(例えば(2,2))に、ベクトルＡＢ方向の単位ベクトル（例えば(0.707,0.707)）と距離センサ９００から受信した距離データ（例えば0.8）の積を加えることで計算可能である。図８に示す例の場合、計算の結果得られる通過位置Ｃの座標値は(2.6,2.6)である。ステップＳ１００４は、記憶部２２に格納されているロボット３０の自己推定位置の座標（例えば(2.7,2.8)）と計算されたロボットの通過位置Ｃの座標（例えば(2.6,2.6)）の差を求めて自己位置推定の精度の評価値とし、処理は終了する。
【００３４】
上記の例で用いた図５には、１つの特徴点ペアしか示されていないが、複数の特徴点ペアを決定して自己位置推定の精度を評価しても良いことは言うまでもない。
【００３５】
図１０は、位置精度評価処理の第２の例を説明するフローチャートである。図１０に示す位置精度評価処理は、例えばサーバ装置２０のＣＰＵ２１により実行される。図１０中、図６と同一ステップには同一符号を付し、その説明は省略する。
【００３６】
上記位置精度評価処理の第１の例では、特徴点ペアの位置に距離センサ９００を取り付けて自己位置推定の精度を評価するが、この第２の例では、ロボット３０の測定部３７に含まれるＬＲＦを用いてロボット３０と特徴点との間の距離を測定して自己位置推定の精度を評価する。このため、特徴点ペアの位置に距離センサ９００を取り付ける必要は無い。
【００３７】
図１０において、ステップＳ５の後、ステップＳ１６は、ロボット３０に自律走行を行わせる自律走行指示を通信部２５を介して送信し、自律走行指示に基づいてロボット３０の駆動部３６が周知の方法で駆動されることで、ロボット３０が上記移動経路に沿って移動する。ステップＳ１７は、ロボットが自律走行中に実環境においてコーナ検出を行わせるコーナ検出指示を通信部２５を介して送信し、ロボット３０に搭載されたＬＲＦにより実環境におけるコーナ検出を行わせる。又、コーナが検出されると、サーバ装置２０は検出されたコーナの情報とロボット３０の自己位置推定結果をロボット３０から受信し、自己位置推定されたロボット３０の位置（即ち、自己位置推定結果）を基準としてコーナのグリッドマップ上の位置を計算する。ステップＳ１８は、検出されたコーナがステップＳ５で求めた特徴点ペアと一致するか否かを判定する。具体的には、計算されたコーナのグリッドマップ上の位置がステップＳ５で求めた特徴点ペアの座標値に十分近ければ、検出されたコーナが特徴点ペアと一致すると判定する。ステップＳ１８の判定結果がＮＯであると、処理はステップＳ１６へ戻る。
【００３８】
一方、ステップＳ１８の判定結果がＹＥＳであると、ステップＳ１９は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時の自己位置推定結果をロボット３０から受信して記憶部２２に格納する。ステップＳ２０は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時のロボット３０と特徴点ペア間の距離Ｌの距離データ（即ち、特徴点Ａ及び／又はＢの座標値を基準とした距離情報）を、ロボット３０に搭載されこの距離Ｌを測定するＬＲＦから受信して記憶部２２に格納する。ステップＳ２１は、記憶部に格納されているグリッドマップ上の特徴点ペアの位置と、記憶部２２に格納されている距離Ｌの距離データとに基づいて計算されるグリッドマップ上のロボット３０の位置を、ロボット３０から受信して記憶部２２に格納されているロボット３０の自己位置推定結果と比較することで自己位置推定の精度を評価し、処理は終了する。
【００３９】
この場合も、複数の特徴点ペアを決定して自己位置推定の精度を評価しても良いことは言うまでもない。
【００４０】
図１１は、位置精度評価処理の第３の例を説明するフローチャートである。図１１に示す位置精度評価処理は、例えばサーバ装置２０のＣＰＵ２１により実行される。図１１中、図６と同一ステップには同一符号を付し、その説明は省略する。
【００４１】
上記位置精度評価処理の第１の例では、ロボット３０に自律走行を行わせるが、この第３の例では、ロボット３０を手動で移動する。
【００４２】
図１１において、ステップＳ４の後、ステップＳ２５は、決定された特徴点ペアの間のどの点をロボット３０に通過させるかを決定する。例えば、特徴点ペアの中点をロボット３０に通過させる場合、特徴点ペアの中点を図１２及び図１３と共に説明するように計算し、記憶部２２に格納する。
【００４３】
図１２は、ステップＳ２５の処理を説明する図である。図１２中、図８と同一部分には同一符号を付し、その説明は省略する。図１２に示す例では、特徴点ペアのうち、特徴点Ａのグリッドマップ上の座標値(x1,y1)は例えば(2,2)であり、特徴点Ｂのグリッドマップ上の座標値(x2,y2)は例えば(3,3)である。又、図１２中、Ｄはロボット３０の通過位置、即ち、特徴点ペアＡ，Ｂの中点を示し、この場合の中点Ｄのグリッドマップ上の座標値(x0,y0)は(2.5,2.5)である。
【００４４】
図１３は、ステップＳ２５の処理をより詳細に説明するフローチャートである。図１３において、ステップＳ２５１は、特徴点Ａのグリッドマップ上の座標値(x1,y1)、例えば(2,2)を取得し、ステップＳ２５２は、特徴点Ｂのグリッドマップ上の座標値(x2,y2)、例えば(3,3)を取得する。ステップＳ２５３は、特徴点ペアＡ，Ｂの座標値(x1,y1),(x2,y2)からロボット３０の通過位置Ｄの座標値(x0,y0)を決定して記憶部２２に格納する。
【００４５】
次に、実環境における準備作業について述べる。ステップＳ２６は、グリッドマップ上の特徴点ペアＡ，Ｂに対応する実環境地図上のコーナ位置を結ぶ直線上のロボット通過位置を決定する。例えば、特徴点ペアＡ，Ｂの中点Ｄをロボット３０の通過位置と定めた場合、ステップＳ２７は、特徴点ペアＡ，Ｂに対応する実環境地図上のコーナ位置の中点を例えば測定器等で測定して確認し、実環境の床面の中点Ｄにマーカ９５０を付ける。ここで、マーカ９５０としては、シール等を床面に貼り付けても、ＲＦＩＤ（Radio Frequency IDentification）タグ等を床面に貼り付けたり埋め込んだりしても、ミラー等の反射板を床面に貼り付けたり埋め込んだりしても良い。又、マーカ９５０は、実環境の天井に貼り付けたり埋め込んだりしても良い。これにより、実環境における準備作業が完了する。
【００４６】
次に、ステップＳ２７の後、オペレータは、ロボット３０をＳＬＡＭにより生成されたグリッドマップ上の所定位置に対応する位置に置き、ロボット３０の自己位置推定プログラムを起動する。グリッドマップ上の所定位置は、この例では特徴点ペアＡ，Ｂの間の中点Ｄの近傍である。自己位置推定プログラムが起動されてロボット３０の自己位置推定処理が開始した後、ＳＬＡＭにより生成されたグリッドマップ上の対応する座標位置でロボット３０の初期位置を設定する。ロボット３０の自己位置推定プログラムの起動及び初期位置の設定は、上記位置精度評価処理の第１の例の場合と同様に行える。その後、ステップＳ２８は、ロボット３０に自律走行を行わせる自律走行指示を通信部２５を介して送信し、自律走行指示に基づいてロボット３０の駆動部３６が周知の方法で駆動されることで、ロボット３０が上記移動経路に沿って移動してマーカ９５０の上を通過する。ステップＳ２９は、ロボット３０がマーカ９５０上に位置する時のロボット３０の自己位置推定結果をロボット３０から受信して記憶部２２に格納する。ステップＳ３０は、ステップＳ２５で決定して記憶部２２に格納された中点Ｄの位置（即ち、特徴点Ａ及び／又はＢの座標値を基準とした距離情報）とステップＳ２９で取得して記憶部２２に格納されたロボット３０の自己位置推定結果を比較することで自己位置推定の精度を評価し、処理は終了する。
【００４７】
ステップＳ２９において、ロボット３０がマーカ９５０上を通過したことは、測定部３７に設けられた検出装置により周知の方法で検出可能である。例えば、測定部３７に設けられたカメラでマーカ９５０を撮像して検出したり、測定部３７に設けられたタグリーダでマーカ９５０を形成するＲＦＩＤタグからの信号を受信してＲＦＩＤタグを検出したり、測定部３７に設けられた光学的検出装置の発光素子から出射されマーカ９５０を形成する反射板で反射された光を光学的検出装置の受光素子で受信して反射板を検出したりすることができる。カメラ、タグリーダ、光学的検出装置は、検出装置の一例である。
【００４８】
尚、ステップＳ２８においてロボット３０を自律走行させる代わりに、ロボット３０を手動で移動しても良い。
【００４９】
又、複数のマーカ９５０を設け、各マーカ９５０に位置に対して自己位置推定の精度を評価しても良いことは言うまでもない。
【００５０】
図１４は、位置精度評価処理の第４の例を説明するフローチャートである。図１４に示す位置精度評価処理は、例えばサーバ装置２０のＣＰＵ２１により実行される。図１４中、図６と同一ステップには同一符号を付し、その説明は省略する。
【００５１】
上記位置精度評価処理の第１の例、第２の例、及び第３の例では、自己位置推定結果の精度を評価する。これに対し、位置精度評価処理の第４の例では、位置精度の評価結果を自己位置推定結果に反映させることで自己位置推定結果を補正する。図１４において、ステップＳ１〜Ｓ７までの処理は、上記位置精度評価処理の第１の例の場合と同様である。
【００５２】
図１４において、ステップＳ７の後、ステップＳ３８は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時に距離センサ９００から送信されてくる距離データを取得して記憶部２２に格納する。距離データは、サーバ装置２０が距離センサ９００から直接受信しても、ロボット３０を介して受信しても良い。ステップＳ３９は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時の距離センサ９００の計測結果、即ち、記憶部２２に格納されている距離データに基づいて、グリッドマップ上のロボット３０の位置を計算して記憶部２２に格納する。又、ステップＳ３９は、ロボット３０が上記の如く決定された特徴点ペアの間を通過した時のロボット３０の自己位置推定結果をロボット３０から受信して記憶部２２に格納する。ロボット３０の自己位置推定結果は、ロボット３０内で求められてサーバ装置２０に送信される。ステップＳ４０は、記憶部２２に格納されているグリッドマップ上のロボット３０の位置を、記憶部２２に格納されているロボット３０の自己位置推定結果と比較することで自己位置推定の精度を評価し、例えば評価結果が一定精度以下であるとグリッドマップ上のロボット３０の位置で自己位置推定結果を補正して補正された自己位置推定結果をロボット３０へ送信し、評価結果が一定精度を超えていれば自己位置推定結果を補正することなく処理は終了する。自己位置推定結果の補正は、ロボット３０内で行っても良い。又、自己位置推定の精度の評価結果にかかわらず、グリッドマップ上のロボット３０の位置で自己位置推定結果を補正しても良い。尚、特に自己位置推定結果の補正をロボット３０内で行う構成の場合、評価結果が一定精度を超えていれば自己位置推定結果を補正しないようにすることで、ロボット３０内のＣＰＵ３１への負荷を軽減することができる。
【００５３】
図１４では、上記位置精度評価処理の第１の例の方法で求めた自己位置推定結果を補正しているが、同様にして、上記位置精度評価処理の第２の例の方法で求めた自己位置推定結果を図１０に示すステップＳ１９〜Ｓ２１の処理を適切に変更することで補正したり、上記位置精度評価処理の第３の例の方法で求めた自己位置推定結果を図１１に示すステップＳ２９，Ｓ３０の処理を適切に変更することで補正しても良い。
【００５４】
ところで、上記実施例では、自己位置推定の評価及び関連する処理を基本的にはサーバ装置２０側で行っているが、少なくとも一部の処理をロボット３０側で行うようにしても良い。ロボット３０側で実行可能な処理には、ロボット３０の位置を推定する自己位置推定機能を実現させる自己位置推定処理の他に、例えば特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等が含まれる。ＣＰＵへの負荷が比較的大きい処理をサーバ装置２０側で行えば、ロボット３０内のＣＰＵ３１への負荷を軽減できる。例えば、上記実施例のように自己位置推定処理をロボット３０内のＣＰＵ３１で実行し、他の処理はサーバ装置２０内のＣＰＵ２１で実行することで、ロボット３０内のＣＰＵ３１への負荷が増大することを抑制可能となる。
【００５５】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
ロボットの自己位置推定を評価する推定位置評価システムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えたことを特徴とする、推定位置評価システム。
（付記２）
前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサから前記位置情報を受信する手段を更に備えたことを特徴とする、付記１記載の推定位置評価システム。
（付記３）
前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部から前記位置情報を受信する手段を更に備えたことを特徴とする、付記１記載の推定位置評価システム。
（付記４）
前記位置情報を決定して前記記憶部に格納する決定手段を更に備え、
前記格納手段は、前記ロボットに設けられた検出装置が前記ロボットの移動中に前記特徴点の間に設けられたマーカを検出すると前記自己位置推定結果を前記ロボットから受信することを特徴とする、付記１記載の推定位置評価システム。
（付記５）
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手段を更に備えたことを特徴とする、付記１乃至４のいずれか１項記載の推定位置評価システム。
（付記６）
前記補正手段は、前記評価の結果が一定精度以下の場合に前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正することを特徴とする、付記５記載の推定位置評価システム。
（付記７）
前記格納手段、前記計算手段、及び前記評価手段は、前記ロボットと通信可能なサーバ装置内のプロセッサにより形成され、
前記記憶部は前記サーバ装置内に設けられていることを特徴とする、付記１乃至６のいずれか１項記載の推定位置評価システム。
（付記８）
ロボットの自己位置推定をコンピュータに評価させるプログラムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順
を前記コンピュータ実行させることを特徴とする、プログラム。
（付記９）
前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサから前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、付記８記載のプログラム。
（付記１０）
前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部から前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、付記８記載のプログラム。
（付記１１）
前記位置情報を決定して前記記憶部に格納する決定手順
を前記コンピュータに更に実行させ、
前記格納手順は、前記ロボットに設けられた検出装置が前記ロボットの移動中に前記特徴点の間に設けられたマーカを検出すると前記自己位置推定結果を前記ロボットから受信することを特徴とする、付記８記載のプログラム。
（付記１２）
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手順
を前記コンピュータに更に実行させることを特徴とする、付記８乃至１１のいずれか１項記載のプログラム。
（付記１３）
前記補正手順は、前記評価の結果が一定精度以下の場合に前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正することを特徴とする、付記１２記載の推定位置評価システム。
（付記１４）
付記８乃至１３のいずれか１項記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【００５６】
以上、開示の推定位置評価システム及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【００５７】
２０      サーバ装置
２１，３１      ＣＰＵ
２２，３２      記憶部
２３，３３      入力部
２４，３４      表示部
２５，３５      通信部
２９，３８      バス
３０      ロボット
３６      駆動部
３７      測定部
【図１】
0005720292.tif 000002
【図２】
0005720292.tif 000003
【図３】
0005720292.tif 000004
【図４】
0005720292.tif 000005
【図５】
0005720292.tif 000006
【図６】
0005720292.tif 000007
【図７】
0005720292.tif 000008
【図８】
0005720292.tif 000009
【図９】
0005720292.tif 000010
【図１０】
0005720292.tif 000011
【図１１】
0005720292.tif 000012
【図１２】
0005720292.tif 000013
【図１３】
0005720292.tif 000014
【図１４】
0005720292.tif 000015