説明

推定位置評価システム及びプログラム

【課題】推定位置評価システム及びプログラムにおいて、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することを目的とする。
【解決手段】ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を求め、特徴点ペアの推定環境地図上の座標値と、ロボットが特徴点ペアの間を通過する時のロボットの座標値を基準とした位置情報とに基づいて、推定環境地図上のロボット位置を計算し、推定環境地図上のロボット位置と自己位置推定結果を比較することでロボットの自己位置推定を評価するように構成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自己位置推定により生成した推定環境地図上の位置の精度を実環境地図上の位置に対して評価する推定位置評価システム及びプログラムに関する。
【背景技術】
【0002】
SLAM(Simultaneous Localization And Mapping)は、自己位置推定と環境地図の作成を同時に行う手法である。しかし、SLAMによって生成された推定環境地図上の推定位置と実環境地図上の実位置とを対応付けることは、これら2つの環境地図が異なるため困難である。
【0003】
図1は、実環境地図とSLAMにより生成される推定環境地図を説明する図である。図1中、(a)はロボット等が移動可能な領域2を含む実環境地図1を示し、(b)はロボット等が移動可能な領域12を含む推定環境地図11を示す。ロボット等が移動可能な領域2,12は、図1中ハッチングで示す。図1に示すように、SLAMによって生成された推定環境地図11には、ロボットの初期位置におけるロボットの姿勢のずれ、計測時における測定誤差等により実環境地図1との間に歪みが発生する。例えば、SLAM開始時のロボット位置を原点として図1中●印で示すと、このロボット位置はSLAMで生成された推定環境地図11上でも、実環境地図1上でも原点となる。しかし、原点からロボット正面方向に例えば1m移動した位置では、SLAMで生成された推定環境地図11上のロボット位置と実環境地図1上のロボット位置の間にずれが生じる。このずれは、ロボット位置が原点から遠ざかるにつれて大きくなる。このため、ロボットが推定環境地図11上の任意の地点で推定した自己位置が、実環境地図1上の実際の位置からどの程度ずれているかを評価することは困難である。
【0004】
そこで、例えばロボットの初期位置における正面方向をx軸(m)、左手方向をy軸(m)と定義して、例えば座標(1,0),(2,0),(2,1),(2,2)における実環境地図上のロボット位置とSLAMで生成された推定環境地図上のロボット位置とを比較して、図2に●印で示すように実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法も提案されている。図2は、実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法を説明する図である。図2中、(a)は実環境地図1を示し、(b)は推定環境地図11を示し、図1と同一部分には同一符号を付し、その説明は省略する。
【0005】
しかし、このようなマッピングを行う場合、マッピングする位置の数が少ないと、ロボットが推定環境地図11上の任意の地点で推定した自己位置が実環境地図1上の実際の位置からどの程度ずれているかの評価精度が低下する。一方、マッピングする位置の数が多いと、評価精度の低下は抑制できるものの、マッピングの処理が複雑となり処理時間が増大してしまう。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−139265号公報
【特許文献2】特開2004−294421号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
従来、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することは難しいという問題があった。
【0008】
そこで、本発明は、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することのできる推定位置評価システム及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明の一観点によれば、ロボットの自己位置推定を評価する推定位置評価システムであって、前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えたことを特徴とする推定位置評価システムが提供される。
【0010】
本発明の一観点によれば、ロボットの自己位置推定をコンピュータに評価させるプログラムであって、前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順を前記コンピュータ実行させることを特徴とするプログラムが提供される。
【発明の効果】
【0011】
開示の推定位置評価システム及びプログラムによれば、推定環境地図上の任意の地点で推定した自己位置が、実環境地図上の実際の位置からどの程度ずれているかを比較的簡単に、且つ、精度良く評価することが可能となる。
【図面の簡単な説明】
【0012】
【図1】実環境地図とSLAMにより生成される推定環境地図を説明する図である。
【図2】実環境地図上の位置から推定環境地図上の位置へのマッピングを行う手法を説明する図である。
【図3】本発明の一実施例におけるサーバ装置の構成の一例を示すブロック図である。
【図4】本発明の一実施例におけるロボットの構成の一例を示すブロック図である。
【図5】SLAMにより生成される推定環境地図の一例を示す図である。
【図6】位置精度評価処理の第1の例を説明するフローチャートである。
【図7】特徴点ペアを決定する処理を説明するフローチャートである。
【図8】ステップS10の処理を説明する図である。
【図9】ステップS10の処理をより詳細に説明するフローチャートである。
【図10】位置精度評価処理の第2の例を説明するフローチャートである。
【図11】位置精度評価処理の第3の例を説明するフローチャートである。
【図12】ステップS25の処理を説明する図である。
【図13】ステップS25の処理をより詳細に説明するフローチャートである。
【図14】位置精度評価処理の第4の例を説明するフローチャートである。
【発明を実施するための形態】
【0013】
開示の推定位置評価システム及びプログラムは、ロボットの自己位置推定を評価する。ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を求め、特徴点ペアの推定環境地図上の座標値と、ロボットが特徴点ペアの間を通過する時のロボットの座標値を基準とした位置情報とに基づいて、推定環境地図上のロボット位置を計算する。推定環境地図上のロボット位置と自己位置推定結果を比較することで、自己位置推定の精度を評価する。
【0014】
以下に、開示の推定位置評価システム及びプログラムの各実施例を図面と共に説明する。
【実施例】
【0015】
本発明の一実施例における推定位置評価システムは、ネットワークを介して互いに通信可能な1台のサーバ装置と少なくとも1台のロボットとで形成できる。
【0016】
図3は、本発明の一実施例におけるサーバ装置の構成の一例を示すブロック図である。図3に示すサーバ装置20は、CPU(Central Processing Unit)21、記憶部22、入力部23、表示部24、及び通信部25がバス29で接続された構成を有する。尚、CPU21は、記憶部22、入力部23、表示部24、及び通信部25のうち少なくとも1つとバス29を用いることなく直接接続されていても良い。
【0017】
CPU21は、サーバ装置20全体の制御を司るプロセッサを形成する。記憶部22は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、RAM(Random Access Memory)、ROM(Read Only Memory)、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部22は、可搬型の記憶装置を含んでも良い。記憶部22は、CPU21が実行するプログラム、CPU21が実行する演算の中間結果、各種データ等を格納する。入力部23は、キーボード、マウス等の入力装置で形成され、CPU21に各種指示はデータを入力するのに用いられる。表示部24は、操作画面、CPU21の処理結果等を表示するのに用いられる。通信部25は、無線ネットワーク(図示せず)を介して図4と共に後述するロボット30と通信可能であり、更に、有線ネットワーク及び無線ネットワークの少なくとも一方を介して距離センサ等の外部装置と通信可能であっても良い。
【0018】
CPU21は、記憶部22に格納されているプログラムを実行することで、サーバ装置20の各種機能を実現する。つまり、記憶部22に格納されているプログラムには、CPU21に位置精度評価処理を含むサーバ装置20の各種処理を実行させる各手順が含まれる。プログラムには、後述する特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等を含む各種処理を実行させる各手順が含まれても良い。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部22を形成する少なくとも1つの記憶装置で形成可能である。
【0019】
図4は、本発明の一実施例におけるロボットの構成の一例を示すブロック図である。ロボット30は、自律走行が可能(即ち、自律走行型)であり、周知の自己位置推定機能を有する。図4に示すロボット30は、CPU31、記憶部32、入力部33、表示部34、通信部35、駆動部36、及び測定部37がバス39で接続された構成を有する。尚、CPU31は、記憶部32、入力部33、表示部34、通信部35、駆動部36、及び測定部37のうち少なくとも1つとバス39を用いることなく直接接続されていても良い。
【0020】
CPU31は、ロボット30全体の制御を司るプロセッサを形成する。記憶部32は、半導体記憶装置、光記憶装置、光磁気記憶装置、磁気記憶装置等で形成されており、複数の記憶装置、或いは、複数種類の記憶装置で形成されていても良い。半導体記憶装置には、RAM(Random Access Memory)、ROM(Read Only Memory)、メモリカード等が含まれる。光、光磁気、及び磁気記憶装置には、ディスク装置等が含まれる。記憶部32は、可搬型の記憶装置を含んでも良い。記憶部32は、CPU31が実行するプログラム、CPU31が実行する演算の中間結果、各種データ等を格納する。入力部33は、キーボード等の入力装置で形成され、CPU31に各種指示はデータを入力するのに用いられる。表示部34は、操作画面、CPU31の処理結果、ユーザに対するメッセージ等を表示するのに用いられる。通信部55は、無線ネットワークを介して図3に示すサーバ装置20と通信可能であり、更に、有線ネットワーク及び無線ネットワークの少なくとも一方を介して距離センサ等の外部装置と通信可能であっても良い。駆動部36は、ロボット30の自律走行を可能とするモータ等を含む周知の構成を有する。測定部37は、ロボット30から壁等の対象物までの距離を測定するLRF(Laser Range Finder)、画像を撮像するカメラ、マーカ等を検出する光学的検出装置、GPS(Global Positioning System)等を含んでも良い。測定部37は、ロボット30が採用する自己位置推定機能を実現できる構成であれば特に限定されない。
【0021】
CPU31は、記憶部32に格納されているプログラムを実行することで、ロボット30の各種機能を実現する。つまり、記憶部32に格納されているプログラムには、CPU31に自律走行処理、ロボット30の位置を推定する自己位置推定機能を実現させる自己位置推定処理を含むロボット30の各種処理を実行させる各手順が含まれる。プログラムには、特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等を含む各種処理を実行させる各手順が含まれても良い。プログラムを格納したコンピュータ読み取り可能な記憶媒体は、この例では記憶部32を形成する少なくとも1つの記憶装置で形成可能である。
【0022】
尚、ロボット30への入力を音声で行う場合には、入力部33に代えて、或いは、入力部33に加えて音声入力部(例えば、マイクロホン)を設け、CPU31に音声認識機能を持たせれば良い。又、ロボット30からユーザへの出力を音声で行う場合には、表示部34に代えて、或いは、表示部34に加えて音声出力部(例えば、スピーカ)を設け、CPU31に音声合成機能を持たせれば良い。
【0023】
図5は、SLAMにより生成される推定環境地図の一例を示す図である。図5中、図2(b)と同一部分には同一符号を付し、その説明は省略する。この例では、図5に示すように、SLAMにより生成された推定環境地図、この例ではグリッド付きマップ(以下、単にグリッドマップと言う)上の特徴的な2点(以下、特徴点と言う)A,Bをペアとして着目する。特徴点A,Bのペアは、複数ペア選んでも良いが、図5では説明の便宜上1つのペアのみを示す。特徴点A,Bは、例えばロボット30が移動可能な領域12の境界を形成する実環境における壁の角(凸部又は凹部)、机の角、パーティションの端等(以下、単にコーナと言う)に相当する。図5の例では、特徴点Aは実環境における壁の角の凹部に相当し、特徴点Bは実環境における壁の角の凸部に相当する。特徴点A,Bは、例えば測定部37のLRFの測定結果から決定することもできる。上記の特徴点A,Bのグリッドマップ上における座標を求め、特徴点A,B間の点の位置(例えば、特徴点A,Bの中点)を求める。ロボット30の自己位置推定処理の精度を評価する際は、これら特徴点A,Bの間の点をロボット30が通過するようにする。ロボット30がこれら特徴点A,Bの間の点に位置する時、自己位置推定されたロボット位置とグリッドマップから算出された特徴点A,B間の点の位置との差を調べ、自己位置推定の精度を評価する。自己位置推定されたロボット位置とグリッドマップから算出された特徴点A,B間の点の位置との差が小さい程、自己位置推定の精度が高いと評価することができる。
【0024】
従って、SLAMにより生成された推定環境地図上の位置と実環境地図上の位置とを対応付けることができる。このため、ある地点においてロボット30が自己位置推定した位置が、SLAMにより生成された推定環境地図上の位置とどの程度ずれているかを評価することができる。
【0025】
尚、以下の説明では、例えば壁の角(凸部又は凹部)、机の角、パーティションの端等の特徴的な点が設けられた箇所を「コーナ」と言う。
【0026】
図6は、位置精度評価処理の第1の例を説明するフローチャートである。図6に示す位置精度評価処理は、例えばサーバ装置20のCPU21により実行される。
【0027】
図6において、ステップS1は、通信部25がロボット30から受信したデータに基づいて、SLAMにより生成したグリッドマップデータを周知の方法で取得して記憶部22に格納する。ステップS2は、特徴点ペアを手動で決定するか否かを判定する。特徴点ペアを手動で決定するか否かは、入力部23により選択されても、デフォルトにより予め決定されていても良い。ステップS2の判定結果がYESであると処理は後述するステップS5へ進む。ステップS2の判定結果がNOであると、ステップS3は、グリッドマップデータからロボット30の移動可能な領域12の境界に存在するコーナを周知の方法で検出して記憶部22に格納する。グリッドマップデータは、例えば記憶部22に予め格納されていても、入力部23から入力されても、通信部25がロボット30から受信しても良い。ステップS4は、ステップS3で検出された複数のコーナの中から、ロボット30の移動経路を挟む隣接する特徴点ペアを決定して記憶部22に格納する。
【0028】
図7は、特徴点ペアを決定するステップS4の処理を説明するフローチャートである。図7において、ステップS401は、グリッドマップデータから検出されたコーナを取得する。ステップS402は、グリッドマップデータに対してロボット30の移動経路を設定する。ロボット30の移動経路は、例えば入力部23から入力される。ステップS403は、設定された移動経路の例えば左側(或いは、右側)のコーナAを移動経路に沿って検出し、記憶部22に格納する。ステップS404は、検出されたコーナAに対し、ペアの候補となるコーナを検出し、記憶部22に格納する。ステップS405は、ペア候補となるコーナのうち、コーナAとの距離が最小となるコーナBを選択し、記憶部22に格納する。ステップS406は、コーナAとコーナBの距離が基準値以下であれば、コーナA,Bを特徴点ペアに決定し、記憶部22に格納する。ステップS407は、移動経路の左側に沿って検出した全てのコーナに対してステップS403〜S406の処理を実行したか否かを判定し、判定結果がNOであると処理はステップS403へ戻る。一方、ステップS407の判定結果がYESであると、処理は図6に示すステップS5へ進む。
【0029】
ステップS2の判定結果がYESであり特徴点ペアを手動で決定する場合には、オペレータ(又は、管理者)が目で見て、例えば表示部24に表示したグリッドマップ上のコーナ等の2つの特徴点で、且つ、ロボット30がこれらの2つの特徴点の間を通るような特徴点ペアを入力部23から選択して決定する。図6において、ステップS5は、ステップS2の判定結果がYESの場合は手動で決定された特徴点ペアについて、或いは、ステップS2の判定結果がNOの場合はステップS3,S4により自動的に決定された特徴点ペアについて、グリッドマップ上の座標値を求め、処理はステップS6へ進む。
【0030】
ステップS6は、グリッドマップ上の特徴点ペアに対応する実環境地図上の位置(即ち、実環境のコーナ)に距離センサ900を取り付ける。例えば図5に○印で示す特徴点A,Bが選択された場合、特徴点Aから特徴点Bの方向への距離、或いは、特徴点Bから特徴点Aの方向への距離、或いは、図5に示すようにこれら両方の距離を測定するように測距センサ900を取り付ける。距離センサ900には、例えば超音波センサ、赤外線センサ、LRF等を用いても良い。従って、距離センサ900は、実環境の移動経路を移動してくるロボット30までの距離を検出し、検出した距離を示す距離データ(即ち、特徴点A及び/又はBの座標値を基準とした距離情報)をネットワークを介してサーバ装置20へ送信する。サーバ装置20は、通信部25がネットワークを介して受信した距離センサ900からの距離データを記憶部22に格納する。各特徴点A,Bに対して距離センサ900が設けられている場合には、サーバ装置20のCPU21は、2つの距離センサ900の出力を用いることで、距離センサ900が1つしか設けられていない場合に比べてロボット30の移動経路上の位置をより正確に検出することができる。尚、距離センサ900の出力は、ネットワークを介してロボット30に送信しても良い。この場合、ロボット30は、通信部35がネットワークを介して受信した距離センサ900からの距離データを記憶部32に格納し、必要に応じて通信部35からネットワークを介してサーバ装置20へ送信しても良い。
【0031】
ステップS6の後、オペレータは、ロボット30をSLAMにより生成されたグリッドマップ上の所定位置に対応する位置に置き、ロボット30の自己位置推定プログラムを起動する。自己位置推定プログラムが起動されてロボット30の自己位置推定処理が開始した後、SLAMにより生成されたグリッドマップ上の対応する座標位置でロボット30の初期位置を設定する。ロボット30の自己位置推定プログラムの起動及び初期位置の設定は、オペレータがサーバ20の入力部23からロボット30への指示を入力して指示を通信部25からロボット30へ送信することで行っても、オペレータがロボット30の入力部33からロボット30への指示を直接入力することで行っても良い。その後、ステップS7は、ロボット30に自律走行(即ち、自律走行処理)を行わせる自律走行指示を通信部25を介して送信し、自律走行指示に基づいてロボット30の駆動部36が周知の方法で駆動されることで、ロボット30が上記移動経路に沿って移動する。ステップS8は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時のロボット30の自己位置推定結果をロボット30から受信して記憶部22に格納する。ロボット30の自己位置推定結果は、ロボット30内で求められてサーバ装置20に送信される。ステップS9は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時に距離センサ900から送信されてくる距離データを記憶部22に格納する。距離データは、サーバ装置20が距離センサ900から直接受信しても、ロボット30を介して受信しても良い。ステップS10は、記憶部22に格納されているグリッドマップ上の特徴点ペアの位置と、記憶部22に格納されている距離センサ900からの距離データとに基づいて計算されるグリッドマップ上のロボット30の位置を、記憶部22に格納されているロボット30の自己位置推定結果と比較することで自己位置推定の精度を評価し、処理は終了する。自己位置推定結果の精度は、グリッドマップ上のロボット30の位置に近い程精度が高いと評価できる。
【0032】
図8は、図6に示すステップS10の処理を説明する図である。図8中、図5と同一部分には同一符号を付し、その説明は省略する。図8に示す例では、特徴点ペアのうち、特徴点Aのグリッドマップ上の座標値(x1,y1)は例えば(2,2)であり、特徴点Bのグリッドマップ上の座標値(x2,y2)は例えば(3,3)である。又、図8中、Cはロボット30の通過位置を示す。グリッドマップ上の座標値(x,y)におけるx及びyは、この例ではいずれも任意単位であるが、メートル(m)等の単位を用いても良いことは言うまでもない。
【0033】
図9は、ステップS10の処理をより詳細に説明するフローチャートである。図9において、ステップS1001は、ロボット30が特徴点ペアA,Bの間を通過した時、特徴点Aに取り付けられた距離センサ900により特徴点Aからロボット30の通過位置Cまでの距離データ(例えば0.8)を例えば距離センサ900から受信して記憶部22に格納する。ステップS1002は、ロボット30が特徴点ペアA,Bの間を通過した時、ロボット30の自己位置推定処理により得られた自己推定位置(例えば(2.7,2.8))をロボット30から受信して記憶部22に格納する。ステップS1003は、例えば距離センサ900から直接受信して記憶部22に格納された距離データ(例えば0.8)からロボット30の通過位置Cの座標を計算して記憶部22に格納する。ロボット30の通過位置Cの座標は、特徴点Aの座標値(例えば(2,2))に、ベクトルAB方向の単位ベクトル(例えば(0.707,0.707))と距離センサ900から受信した距離データ(例えば0.8)の積を加えることで計算可能である。図8に示す例の場合、計算の結果得られる通過位置Cの座標値は(2.6,2.6)である。ステップS1004は、記憶部22に格納されているロボット30の自己推定位置の座標(例えば(2.7,2.8))と計算されたロボットの通過位置Cの座標(例えば(2.6,2.6))の差を求めて自己位置推定の精度の評価値とし、処理は終了する。
【0034】
上記の例で用いた図5には、1つの特徴点ペアしか示されていないが、複数の特徴点ペアを決定して自己位置推定の精度を評価しても良いことは言うまでもない。
【0035】
図10は、位置精度評価処理の第2の例を説明するフローチャートである。図10に示す位置精度評価処理は、例えばサーバ装置20のCPU21により実行される。図10中、図6と同一ステップには同一符号を付し、その説明は省略する。
【0036】
上記位置精度評価処理の第1の例では、特徴点ペアの位置に距離センサ900を取り付けて自己位置推定の精度を評価するが、この第2の例では、ロボット30の測定部37に含まれるLRFを用いてロボット30と特徴点との間の距離を測定して自己位置推定の精度を評価する。このため、特徴点ペアの位置に距離センサ900を取り付ける必要は無い。
【0037】
図10において、ステップS5の後、ステップS16は、ロボット30に自律走行を行わせる自律走行指示を通信部25を介して送信し、自律走行指示に基づいてロボット30の駆動部36が周知の方法で駆動されることで、ロボット30が上記移動経路に沿って移動する。ステップS17は、ロボットが自律走行中に実環境においてコーナ検出を行わせるコーナ検出指示を通信部25を介して送信し、ロボット30に搭載されたLRFにより実環境におけるコーナ検出を行わせる。又、コーナが検出されると、サーバ装置20は検出されたコーナの情報とロボット30の自己位置推定結果をロボット30から受信し、自己位置推定されたロボット30の位置(即ち、自己位置推定結果)を基準としてコーナのグリッドマップ上の位置を計算する。ステップS18は、検出されたコーナがステップS5で求めた特徴点ペアと一致するか否かを判定する。具体的には、計算されたコーナのグリッドマップ上の位置がステップS5で求めた特徴点ペアの座標値に十分近ければ、検出されたコーナが特徴点ペアと一致すると判定する。ステップS18の判定結果がNOであると、処理はステップS16へ戻る。
【0038】
一方、ステップS18の判定結果がYESであると、ステップS19は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時の自己位置推定結果をロボット30から受信して記憶部22に格納する。ステップS20は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時のロボット30と特徴点ペア間の距離Lの距離データ(即ち、特徴点A及び/又はBの座標値を基準とした距離情報)を、ロボット30に搭載されこの距離Lを測定するLRFから受信して記憶部22に格納する。ステップS21は、記憶部に格納されているグリッドマップ上の特徴点ペアの位置と、記憶部22に格納されている距離Lの距離データとに基づいて計算されるグリッドマップ上のロボット30の位置を、ロボット30から受信して記憶部22に格納されているロボット30の自己位置推定結果と比較することで自己位置推定の精度を評価し、処理は終了する。
【0039】
この場合も、複数の特徴点ペアを決定して自己位置推定の精度を評価しても良いことは言うまでもない。
【0040】
図11は、位置精度評価処理の第3の例を説明するフローチャートである。図11に示す位置精度評価処理は、例えばサーバ装置20のCPU21により実行される。図11中、図6と同一ステップには同一符号を付し、その説明は省略する。
【0041】
上記位置精度評価処理の第1の例では、ロボット30に自律走行を行わせるが、この第3の例では、ロボット30を手動で移動する。
【0042】
図11において、ステップS4の後、ステップS25は、決定された特徴点ペアの間のどの点をロボット30に通過させるかを決定する。例えば、特徴点ペアの中点をロボット30に通過させる場合、特徴点ペアの中点を図12及び図13と共に説明するように計算し、記憶部22に格納する。
【0043】
図12は、ステップS25の処理を説明する図である。図12中、図8と同一部分には同一符号を付し、その説明は省略する。図12に示す例では、特徴点ペアのうち、特徴点Aのグリッドマップ上の座標値(x1,y1)は例えば(2,2)であり、特徴点Bのグリッドマップ上の座標値(x2,y2)は例えば(3,3)である。又、図12中、Dはロボット30の通過位置、即ち、特徴点ペアA,Bの中点を示し、この場合の中点Dのグリッドマップ上の座標値(x0,y0)は(2.5,2.5)である。
【0044】
図13は、ステップS25の処理をより詳細に説明するフローチャートである。図13において、ステップS251は、特徴点Aのグリッドマップ上の座標値(x1,y1)、例えば(2,2)を取得し、ステップS252は、特徴点Bのグリッドマップ上の座標値(x2,y2)、例えば(3,3)を取得する。ステップS253は、特徴点ペアA,Bの座標値(x1,y1),(x2,y2)からロボット30の通過位置Dの座標値(x0,y0)を決定して記憶部22に格納する。
【0045】
次に、実環境における準備作業について述べる。ステップS26は、グリッドマップ上の特徴点ペアA,Bに対応する実環境地図上のコーナ位置を結ぶ直線上のロボット通過位置を決定する。例えば、特徴点ペアA,Bの中点Dをロボット30の通過位置と定めた場合、ステップS27は、特徴点ペアA,Bに対応する実環境地図上のコーナ位置の中点を例えば測定器等で測定して確認し、実環境の床面の中点Dにマーカ950を付ける。ここで、マーカ950としては、シール等を床面に貼り付けても、RFID(Radio Frequency IDentification)タグ等を床面に貼り付けたり埋め込んだりしても、ミラー等の反射板を床面に貼り付けたり埋め込んだりしても良い。又、マーカ950は、実環境の天井に貼り付けたり埋め込んだりしても良い。これにより、実環境における準備作業が完了する。
【0046】
次に、ステップS27の後、オペレータは、ロボット30をSLAMにより生成されたグリッドマップ上の所定位置に対応する位置に置き、ロボット30の自己位置推定プログラムを起動する。グリッドマップ上の所定位置は、この例では特徴点ペアA,Bの間の中点Dの近傍である。自己位置推定プログラムが起動されてロボット30の自己位置推定処理が開始した後、SLAMにより生成されたグリッドマップ上の対応する座標位置でロボット30の初期位置を設定する。ロボット30の自己位置推定プログラムの起動及び初期位置の設定は、上記位置精度評価処理の第1の例の場合と同様に行える。その後、ステップS28は、ロボット30に自律走行を行わせる自律走行指示を通信部25を介して送信し、自律走行指示に基づいてロボット30の駆動部36が周知の方法で駆動されることで、ロボット30が上記移動経路に沿って移動してマーカ950の上を通過する。ステップS29は、ロボット30がマーカ950上に位置する時のロボット30の自己位置推定結果をロボット30から受信して記憶部22に格納する。ステップS30は、ステップS25で決定して記憶部22に格納された中点Dの位置(即ち、特徴点A及び/又はBの座標値を基準とした距離情報)とステップS29で取得して記憶部22に格納されたロボット30の自己位置推定結果を比較することで自己位置推定の精度を評価し、処理は終了する。
【0047】
ステップS29において、ロボット30がマーカ950上を通過したことは、測定部37に設けられた検出装置により周知の方法で検出可能である。例えば、測定部37に設けられたカメラでマーカ950を撮像して検出したり、測定部37に設けられたタグリーダでマーカ950を形成するRFIDタグからの信号を受信してRFIDタグを検出したり、測定部37に設けられた光学的検出装置の発光素子から出射されマーカ950を形成する反射板で反射された光を光学的検出装置の受光素子で受信して反射板を検出したりすることができる。カメラ、タグリーダ、光学的検出装置は、検出装置の一例である。
【0048】
尚、ステップS28においてロボット30を自律走行させる代わりに、ロボット30を手動で移動しても良い。
【0049】
又、複数のマーカ950を設け、各マーカ950に位置に対して自己位置推定の精度を評価しても良いことは言うまでもない。
【0050】
図14は、位置精度評価処理の第4の例を説明するフローチャートである。図14に示す位置精度評価処理は、例えばサーバ装置20のCPU21により実行される。図14中、図6と同一ステップには同一符号を付し、その説明は省略する。
【0051】
上記位置精度評価処理の第1の例、第2の例、及び第3の例では、自己位置推定結果の精度を評価する。これに対し、位置精度評価処理の第4の例では、位置精度の評価結果を自己位置推定結果に反映させることで自己位置推定結果を補正する。図14において、ステップS1〜S7までの処理は、上記位置精度評価処理の第1の例の場合と同様である。
【0052】
図14において、ステップS7の後、ステップS38は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時に距離センサ900から送信されてくる距離データを取得して記憶部22に格納する。距離データは、サーバ装置20が距離センサ900から直接受信しても、ロボット30を介して受信しても良い。ステップS39は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時の距離センサ900の計測結果、即ち、記憶部22に格納されている距離データに基づいて、グリッドマップ上のロボット30の位置を計算して記憶部22に格納する。又、ステップS39は、ロボット30が上記の如く決定された特徴点ペアの間を通過した時のロボット30の自己位置推定結果をロボット30から受信して記憶部22に格納する。ロボット30の自己位置推定結果は、ロボット30内で求められてサーバ装置20に送信される。ステップS40は、記憶部22に格納されているグリッドマップ上のロボット30の位置を、記憶部22に格納されているロボット30の自己位置推定結果と比較することで自己位置推定の精度を評価し、例えば評価結果が一定精度以下であるとグリッドマップ上のロボット30の位置で自己位置推定結果を補正して補正された自己位置推定結果をロボット30へ送信し、評価結果が一定精度を超えていれば自己位置推定結果を補正することなく処理は終了する。自己位置推定結果の補正は、ロボット30内で行っても良い。又、自己位置推定の精度の評価結果にかかわらず、グリッドマップ上のロボット30の位置で自己位置推定結果を補正しても良い。尚、特に自己位置推定結果の補正をロボット30内で行う構成の場合、評価結果が一定精度を超えていれば自己位置推定結果を補正しないようにすることで、ロボット30内のCPU31への負荷を軽減することができる。
【0053】
図14では、上記位置精度評価処理の第1の例の方法で求めた自己位置推定結果を補正しているが、同様にして、上記位置精度評価処理の第2の例の方法で求めた自己位置推定結果を図10に示すステップS19〜S21の処理を適切に変更することで補正したり、上記位置精度評価処理の第3の例の方法で求めた自己位置推定結果を図11に示すステップS29,S30の処理を適切に変更することで補正しても良い。
【0054】
ところで、上記実施例では、自己位置推定の評価及び関連する処理を基本的にはサーバ装置20側で行っているが、少なくとも一部の処理をロボット30側で行うようにしても良い。ロボット30側で実行可能な処理には、ロボット30の位置を推定する自己位置推定機能を実現させる自己位置推定処理の他に、例えば特徴点抽出処理、特徴点ペア決定処理、中間点決定処理等が含まれる。CPUへの負荷が比較的大きい処理をサーバ装置20側で行えば、ロボット30内のCPU31への負荷を軽減できる。例えば、上記実施例のように自己位置推定処理をロボット30内のCPU31で実行し、他の処理はサーバ装置20内のCPU21で実行することで、ロボット30内のCPU31への負荷が増大することを抑制可能となる。
【0055】
以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
ロボットの自己位置推定を評価する推定位置評価システムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えたことを特徴とする、推定位置評価システム。
(付記2)
前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサから前記位置情報を受信する手段を更に備えたことを特徴とする、付記1記載の推定位置評価システム。
(付記3)
前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部から前記位置情報を受信する手段を更に備えたことを特徴とする、付記1記載の推定位置評価システム。
(付記4)
前記位置情報を決定して前記記憶部に格納する決定手段を更に備え、
前記格納手段は、前記ロボットに設けられた検出装置が前記ロボットの移動中に前記特徴点の間に設けられたマーカを検出すると前記自己位置推定結果を前記ロボットから受信することを特徴とする、付記1記載の推定位置評価システム。
(付記5)
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手段を更に備えたことを特徴とする、付記1乃至4のいずれか1項記載の推定位置評価システム。
(付記6)
前記補正手段は、前記評価の結果が一定精度以下の場合に前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正することを特徴とする、付記5記載の推定位置評価システム。
(付記7)
前記格納手段、前記計算手段、及び前記評価手段は、前記ロボットと通信可能なサーバ装置内のプロセッサにより形成され、
前記記憶部は前記サーバ装置内に設けられていることを特徴とする、付記1乃至6のいずれか1項記載の推定位置評価システム。
(付記8)
ロボットの自己位置推定をコンピュータに評価させるプログラムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順
を前記コンピュータ実行させることを特徴とする、プログラム。
(付記9)
前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサから前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、付記8記載のプログラム。
(付記10)
前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部から前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、付記8記載のプログラム。
(付記11)
前記位置情報を決定して前記記憶部に格納する決定手順
を前記コンピュータに更に実行させ、
前記格納手順は、前記ロボットに設けられた検出装置が前記ロボットの移動中に前記特徴点の間に設けられたマーカを検出すると前記自己位置推定結果を前記ロボットから受信することを特徴とする、付記8記載のプログラム。
(付記12)
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手順
を前記コンピュータに更に実行させることを特徴とする、付記8乃至11のいずれか1項記載のプログラム。
(付記13)
前記補正手順は、前記評価の結果が一定精度以下の場合に前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正することを特徴とする、付記12記載の推定位置評価システム。
(付記14)
付記8乃至13のいずれか1項記載のプログラムを格納したことを特徴とする、コンピュータ読み取り可能な記憶媒体。
【0056】
以上、開示の推定位置評価システム及びプログラムを実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは言うまでもない。
【符号の説明】
【0057】
20 サーバ装置
21,31 CPU
22,32 記憶部
23,33 入力部
24,34 表示部
25,35 通信部
29,38 バス
30 ロボット
36 駆動部
37 測定部

【特許請求の範囲】
【請求項1】
ロボットの自己位置推定をコンピュータに評価させるプログラムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手順と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手順と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手順
を前記コンピュータ実行させることを特徴とする、プログラム。
【請求項2】
前記特徴点ペアの少なくとも一方から前記ロボットまでの距離を測定する距離センサから前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、請求項1記載のプログラム。
【請求項3】
前記ロボットに設けられ前記特徴点ペアの少なくとも一方までの距離を測定する測定部から前記位置情報を受信する手順
を前記コンピュータに更に実行させることを特徴とする、請求項2記載のプログラム。
【請求項4】
前記評価の結果に基づいて前記推定環境地図上の前記ロボット位置で前記自己位置推定結果を補正する補正手順
を前記コンピュータに更に実行させることを特徴とする、請求項1乃至3のいずれか1項記載のプログラム。
【請求項5】
ロボットの自己位置推定を評価する推定位置評価システムであって、
前記ロボットが移動経路を挟む特徴点ペアの間を通過する時の自己位置推定結果を前記ロボットから受信して記憶部に格納する格納手段と、
前記記憶部に格納されている前記特徴点ペアの推定環境地図上の座標値と、前記ロボットが前記特徴点ペアの間を通過する時の前記ロボットの前記座標値を基準とした位置情報とに基づいて、前記推定環境地図上のロボット位置を計算する計算手段と、
前記推定環境地図上の前記ロボット位置と、前記記憶部に格納された前記自己位置推定結果を比較し、前記自己位置推定結果が前記推定環境地図上の前記ロボット位置に近い程自己位置推定の精度が高いと評価する評価手段を備えたことを特徴とする、推定位置評価システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2012−173013(P2012−173013A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−32502(P2011−32502)
【出願日】平成23年2月17日(2011.2.17)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】