以下に説明する実施例の主要な特徴を列記しておく。なお、以下に記載する技術要素は、それぞれ独立した技術要素であって、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項に記載の組合せに限定されるものではない。
(特徴1)本明細書に開示する地図作成装置は、最適化された第1のグラフ構造データを構成する複数のセンサノードから選択された少なくとも2つのセンサノード間におけるセンサの相対的位置関係を規定するループクローズエッジを最適化された第1のグラフ構造データに追加し、各エッジから算出される誤差関数の和が最小となるように第1のグラフ構造データを最適化するループクローズ部をさらに備えていてもよい。このような構成によると、最適化された第1のグラフ構造データに、センサノード間におけるセンサの相対的位置関係を規定するループクローズエッジを追加することによって、ループクローズされるセンサ間の相対的な姿勢のずれを第1のグラフ構造データに取り込むことができる。第1のグラフ構造データがさらに最適化されるため、さらに地図全体の精度を高くすることができる。
(特徴2)本明細書に開示する地図作成装置は、最適化された第1のグラフ構造データ内のセンサノードと、センサノードが規定するセンサの位置から計測された環境情報を用いて環境地図を作成する環境地図作成部をさらに備えていてもよい。このような構成によると、真値情報が取込まれ、最適化された第1のグラフ構造データ内のセンサノードが規定するセンサの位置から計測された環境情報に基づいて、精度の高い地図を作成することができる。
(特徴3)本明細書に開示する地図作成装置では、センサ計測位置情報は、センサ位置計測装置によって、複数の計測点の中から選択された2以上の計測点において計測されたセンサの位置に関する情報であってもよい。2以上の計測点間の距離は、センサによって環境情報を計測可能な距離より短くてもよい。このような構成によると、センサで計測可能な距離より短い間隔で、センサの位置の真値情報が第1のグラフ構造データに追加される。このため、地図全体の精度を好適に高くすることができる。
以下、実施例に係る地図作成装置10について説明する。地図作成装置10は、対象領域の環境地図を作成する。地図作成装置10は、例えば、CPU、ROM、RAM等を備えたコンピュータによって構成することができる。コンピュータがプログラムを実行することで、地図作成装置10は、図1に示すグラフ構造データ生成部14、センサ真位置算出部18、センサ位置エッジ追加部20、グラフ構造データ最適化部22、ループクローズ部24、環境地図作成部26等として機能する。地図作成装置10の各部14、18、20、22、24、26の処理については、後で詳述する。
また、図1に示すように、地図作成装置10は、環境計測データ記憶部12と、測量データ記憶部16を備えている。環境計測データ記憶部12は、センサ52によって計測された対象領域内の環境情報及びセンサ推定位置情報を記憶する。後述するようにセンサ52は移動体50に搭載される。移動体50は対象領域内を移動しながら、センサ52によって対象領域内の環境(例えば、壁等の計測物)を計測する。センサ52によって取得された環境情報は、その環境情報が取得されたときのセンサ52の位置(センサ52の推定位置ともいう)と共に環境計測データ記憶部12に記憶される。測量データ記憶部16は、測量器56によって計測されたセンサ52の位置(センサ52の計測位置ともいう)に関するセンサ計測位置情報及び測量器56の設置位置に関する設置位置情報を記憶する。環境計測データ記憶部12に記憶される環境情報及びセンサ推定位置情報と、測量データ記憶部16に記憶されるセンサ計測位置情報及び設置位置情報については、後で詳述する。
図2〜図10を参照して、地図作成装置10が行う処理について説明する。図2は、地図作成装置10が行う地図作成処理を示すフローチャートである。図2に示すように、まず、地図作成装置10は、移動体50から対象領域内の複数の計測地点A〜J(図3参照)において計測された環境情報及びセンサ推定位置情報を取得し、環境計測データ記憶部12に記憶する(S10)。ここで、移動体50によって環境情報を計測する手順について説明する。
移動体50は、車輪駆動型の移動体である。移動体50は、図示しない操作装置を備えており、例えば、ジョイスティック等のリモコンで操縦される。なお、本実施例では、移動体50はリモコンで操縦されるが、このような構成に限定されない。例えば、移動体50は、作業者がハンドル操作によって運転することによって移動してもよいし、作業者が手で押すことによって移動してもよい。また、移動体50は飛翔体であってもよい。
移動体50は、センサ52と記憶部54を備えている(図1参照)。本実施例では、移動体50が搭載するセンサ52は、レーザレンジファインダ(LRF)である。LRFは、レーザ光を射出し、射出したレーザ光が物体で反射して返ってくるまでの時間を計測する。LRFで計測された時間から、LRFから物体までの距離が計測される。また、LRFからレーザ光を射出した方向(すなわち、物体から反射されるレーザ光の入射角度)は既知であるため、LRFに対する物体の方位を決定することができる。LRFは、計測地点から見た壁や柱等(以下、「計測物62」という)の位置、姿勢及び形状等の環境情報を計測することができる。LRFで計測された環境情報は記憶部54に記憶される。また、センサ52には、図示しない測量用の反射板が設置されている。測量用の反射板は、測量器56によってセンサ52の位置を計測するために用いられる。測量器56によるセンサ52の位置の計測については、後で詳述する。
各計測地点におけるセンサ52の姿勢及び位置は、各計測地点においてセンサ52によって計測された環境情報を用いて算出される。詳細には、1つの計測地点においてセンサ52が計測した環境情報と、次の計測地点においてセンサ52が計測した環境情報をマッチングさせることによって、両者の間の位置及び姿勢の変位を算出する。ここで算出された変位が、1つの計測地点から次の計測地点までのセンサ52の移動量といえる。マッチングの方法としては、パターンマッチングやICP(Iterative Closest Point)等の公知の方法を用いることができる。このように、各計測地点の間のセンサ52の移動量を算出することによって、各計測地点におけるセンサ52の姿勢及び位置を算出することができる。また、移動体50は、車輪の回転角を検出するセンサ(例えば、エンコーダ)を備えていてもよい。このセンサによって車輪の回転角を検出することで、移動体50の移動方向及び移動量を算出することができる。このため、移動体50は、算出された移動体50の移動方向及び移動量に基づいて、各計測地点における移動体50の姿勢及び位置を算出することができる。移動体50へのセンサ(LRF)52の設置状態は既知であるため、算出された各計測地点における移動体50の姿勢及び位置に基づいて、各計測地点におけるセンサ52の姿勢及び位置を算出してもよい。さらに、センサ52が計測した環境情報をマッチングさせる方法と、車輪の回転角を検出するセンサによって算出する方法を組み合わせてもよい。
記憶部54には、各計測点においてセンサ52で計測された環境情報に対応付けて、その計測点におけるセンサ52の姿勢及び位置が記憶される。本実施例では、センサ52が計測する環境情報及び算出されるセンサ推定位置情報を合わせて「環境計測データ」と称することがある。なお、センサ52はLRFに限定されるものではない。センサ52は、環境情報を計測できればよく、例えば、センサ52は画像情報によって計測物62を計測するものであってもよい。センサ52によって計測された計測物62の環境情報は、移動体50の記憶部54に時系列で記憶される。また、センサ52の位置及び姿勢も上記の方法(いわゆる、オドメトリ)に限られず、例えば、GPSセンサ等を用いて検出するようにしてもよい。
図3は、移動体50に搭載されるセンサ52が、対象領域内の計測物62を計測する状態を模式的に示している。移動体50は、対象領域内に設定される移動経路60上を移動する。詳細には、移動体50は、地点Aを始点として移動経路60上を移動し、地点Aの近傍の地点Jまで(すなわち、地点Jを終点として)移動する。対象領域内には、壁や柱等(すなわち、計測物62)が配置されており、センサ52は、計測地点から計測物62までの距離及び計測物62の形状等を計測する。図3に示される矢印は、移動体50が計測地点Bに移動したときにセンサ52から計測物62aに射出されるレーザと、移動体50が計測地点Dに移動したときにセンサ52から計測物62b、62cに射出されるレーザを示している。なお、以下の明細書において、計測物62を区別する必要があるときは計測物62a、62b、62cのように沿字のアルファベットを用いて記載し、区別する必要のないときは単に計測物62と記載する場合がある。また、他の構成要素についても同一構成のものについて区別する必要がないときは、上記と同様に沿字のアルファベットを省略して単に数字で記載することがある。
図3に示すように、例えば、センサ52は、地点Bにおいて計測可能な計測物62a及び計測物62dの環境情報を計測し、また、移動体50(詳細には、移動体50に搭載された演算装置)は地点Bにおける計測時のセンサ推定位置情報を算出する。計測された環境情報と算出されたセンサ推定位置情報は記憶部54に記憶される。また、移動体50が地点Eに移動すると、センサ52は、地点Eにおいて計測可能な計測物62bの環境情報、計測物62c及び計測物62dの環境情報を計測し、また、地点Eにおける計測時のセンサ推定位置情報が算出される。このようにして、移動体50は、移動経路60上を移動し、センサ52は、対象領域内の計測物62を計測し、その計測物62を計測した地点のセンサ推定位置情報が算出される。計測された環境情報と算出されたセンサ推定位置情報は、時系列順に記憶部54に蓄積される。記憶部54に蓄積された環境情報とセンサ推定位置情報は、地図作成装置10に入力され、環境計測データ記憶部12に記憶される。なお、環境計測データ記憶部12は、「環境情報記憶部」及び「センサ推定位置情報記憶部」の一例である。
次に、地図作成装置10は、測量器56で計測されたセンサ52の位置に関する情報(すなわち、対象領域内の複数の計測地点A〜Jの中から選択された地点において測量器56を用いて計測されたセンサ52の位置に関する情報(以下、センサ計測位置情報ともいう))と、測量器56の設置位置に関する情報(以下、設置位置情報ともいう)を取得し、測量データ記憶部16に記憶する(S12)。ここで、測量器56によってセンサ計測位置情報を計測する手順について説明する。
センサ計測位置情報は、基本測量や公共測量に用いられるトータルステーション等の測量器56によって計測される。測量器56は、図示しないレーザセンサを備えており、反射板までの距離及び向きを計測することによって、反射板が設置される位置を精度良く測量する。本実施例では、測量器56は、対象領域内に設置された複数の反射板(基準用反射板ともいう)の位置と、上述のセンサ52に設置された反射板の位置を計測する。計測された基準用反射板の位置に基づいて、測量器56で計測する際の基準点(例えば、座標の原点)と座標軸の軸方向を決定することができる。なお、基準用反射板に代わり、例えば、プリズムを設置して、その位置を計測してもよいし、対象領域内に存在する特徴的な模様等の位置を計測してもよい。また、測量器56は、決定された基準点と座標軸の軸方向に基づいて、測量器56の設置位置と、測量器56によって計測されたセンサ52の位置(すなわち、センサ52の計測位置)を算出することができる。また、測量器56は、記憶部58を備えている。記憶部58には、測量器56の設置位置に対応付けて、その設置位置に設置された測量器56から計測されたセンサ52の位置が記憶される。本実施例では、測量器56の設置位置情報及びセンサ計測位置情報を合わせて、「測量データ」と称することがある。なお、本実施例では、測量データは、測量器56を用いて計測しているが、このような構成に限定されない。センサ52の位置を計測する精度が高い方法であればよく、例えば、ARマーカーやQRコード(登録商標)等をカメラで計測してもよいし、GPS測量や航空測量を用いてもよい。また、メジャーやコンベックス等を用いて測定してもよいし、CAD図等の座標値を示す図面を用いてもよい。また、測量器56は、「センサ位置計測装置」の一例である。
図4〜図6は、測量器56が対象領域内に設置された基準用反射板の位置とセンサ52に設置された反射板の位置を計測する状態を模式的に示している。本実施例では、測量器56を用いてセンサ52の位置を計測する地点として、センサ52が環境情報を計測する10箇所の計測地点A〜Jの中から5箇所の地点A、C、E、G、Jを選択している。測量器56が計測するセンサ52の位置の数は特に限定されないが、測量器56で計測するセンサ52間の距離が、センサ52によって環境情報を計測可能な距離より短くすることが好ましい。測量器56で計測するセンサ52間の距離をセンサ52によって環境情報を計測可能な距離より短くすることによって、地図全体の精度を好適に高くできる。一方、測量器56で計測するセンサ52間の距離をセンサ52によって環境情報を計測可能な距離より長くすると、測量器56で計測する作業が増大することを抑制できる。したがって、測量器56で計測するセンサ52間の距離は、対象領域の環境によって作業者が適宜決定することができる。以下に、測量器56を用いてセンサ52の位置を計測する手順について説明する。
まず、センサ52によって環境情報を取得する前(すなわち、移動体50が移動経路60上を移動する前)に、測量器56を用いて基準用反射板の位置を計測する。例えば、図4に示すように、対象領域内の地点Kに測量器56を設置し、対象領域内の地点L及び地点Mに基準用反射板を設置する。測量器56は、見通しの良い位置に配置することが好ましく、センサ52の位置を計測する5箇所の地点A、C、E、G、Jのうち、できるだけ多くの地点を計測可能な位置に設置するとよい。また、基準用反射板は、地点Kに設置された測量器56によって計測可能な位置に配置する。
次いで、測量器56は、地点L及び地点Mに設置された基準用反射板の位置を計測する。測量器56(詳細には、測量器56に搭載された演算装置)は、計測された基準用反射板の位置に基づいて、原点と座標軸の軸方向を決定する。測量器56は、決定した原点と座標軸の軸方向に基づいて、測量器56の設置地点Kの位置(例えば、地点Kの座標)及び姿勢を算出する。決定された原点及び座標軸の軸方向と、算出された測量器56の設置地点Kの位置は、記憶部58に記憶される。
次いで、測量器56は、センサ52の位置を計測する。測量器56は、移動体50に搭載されたセンサ52が複数の計測地点A〜Jにおける環境情報を計測しながら移動経路60上を移動する際に、複数の計測地点A〜Jの中から選択した5箇所の地点A、C、E、G、Jにおけるセンサ52の位置をそれぞれ計測する。測量器56によってセンサ52の位置を計測する際には、移動経路60上を移動する移動体50を停止させ、移動体50(すなわち、センサ52)を停止させた状態で測量器56はセンサ52の位置を計測する。
図5は、地点Kに設置された測量器56が地点A、C、Eにおけるセンサ52の位置を計測する状態を模式的に示している。まず、移動体50が移動経路60の始点である地点Aに位置する状態で、移動体50を停止させる。そして、移動体50を停止させた状態で、地点Aにおけるセンサ52の位置を地点Kに設置された測量器56で計測する。図5に示すように、地点Kに設置された測量器56と地点Aに位置するセンサ52の間には計測物62等の測量器56による計測を妨害するものが配置されていないため、測量器56は地点Aに位置するセンサ52の位置を計測することができる。計測された地点Aにおけるセンサ52の位置は、記憶部58に記憶される。なお、移動体50が地点Aに位置する間に、移動体50に搭載されるセンサ52は、地点Aから計測物62(すなわち、環境情報)を計測する。地点Aにおけるセンサ52の位置の計測が終了すると、移動体50を移動させる。移動体50が地点Aから地点Bを介して地点Cまで移動する間、センサ52は、地点B及び地点Cから計測物62を計測する。以下の説明では、センサ52による計測物62の計測についての説明は省略するが、移動体50が移動経路60を移動する間、上述したように、センサ52は地点A〜Jにおいて計測物62を計測する。このように、移動体50が移動経路60上を移動する間、測量器56によるセンサ52の位置の計測と、センサ52による計測物62の計測を同時に行う。
移動体50が地点Cに位置すると、移動体50を停止させる。そして、移動体50を停止させた状態で、地点Cにおけるセンサ52の位置を地点Kに設置された測量器56で計測する。地点Kに設置された測量器56と地点Cに位置するセンサ52の間には計測物62等が配置されていないため、測量器56は地点Cに位置するセンサ52の位置を計測することができる。計測された地点Cにおけるセンサ52の位置は、記憶部58に記憶される。地点Cにおけるセンサ52の位置の計測が終了すると、移動体50を移動させる。同様に、移動体50を次の計測地点である地点Eまで移動させ、地点Kに設置された測量器56を用いて地点Eにおけるセンサ52の位置を計測する。地点Kに設置された測量器56と地点Eに位置するセンサ52の間には計測物62等が配置されていないため、測量器56は地点Eに位置するセンサ52の位置を計測することができる。計測された地点Eにおけるセンサ52の位置は、記憶部58に記憶される。
地点Eにおけるセンサ52の計測が終了すると、移動体50を次の計測地点である地点Gまで移動させ、移動体50を停止させる。しかしながら、地点Kに設置された測量器56と地点Gに位置するセンサ52の間には計測物62dが配置されているため、地点Kに設置された測量器56は地点Gに位置するセンサ52の位置を計測することができない。このため、地点Gに位置するセンサ52の位置を計測できるように、測量器56の設置位置を変更する。例えば、図6に示すように、測量器56を地点Kから地点Nに移動させる。
測量器56を地点Nに設置すると、再び測量器56を用いて基準用反射板の位置を計測する。このとき、先に設置された基準用反射板の位置(すなわち、地点Lと地点Mに設置された基準用反射板の位置)を地点Nから計測できない場合には、地点Nから計測できる位置に基準用反射板をさらに設置する。測量器56は、計測された基準用反射板の位置に基づいて、原点と座標軸の軸方向を決定し、測量器56の設置地点Nの位置を算出する。決定された原点及び座標軸の軸方向と、算出された測量器56の設置地点Nの位置は、記憶部58に記憶される。
次いで、地点Nに設置された測量器56を用いて、地点Gにおけるセンサ52の位置を計測する。地点Nに設置された測量器56と地点Gに位置するセンサ52の間には計測物62等が配置されていないため、測量器56は地点Gに位置するセンサ52の位置を計測することができる。そして、地点Gにおけるセンサ52の計測が終了すると、次の計測地点である地点Jまで移動体50を移動させ、地点Nに設置された測量器56を用いて、地点Jに位置するセンサ52の位置を計測する。計測された地点G及び地点Jにおけるセンサ52の位置は、記憶部58に記憶される。このようにして、測量器56を用いて、複数の計測地点A〜Jの中から選択した5箇所の地点A、C、E、G、Jにおけるセンサ52の位置をそれぞれ計測する。センサ52の計測位置は、測量器56によって計測されるため、記憶部58には、センサ52の位置に関する真値又は真値に近似する情報(真値情報)が記憶される。記憶部58に蓄積された測量器56の設置位置情報とセンサ計測位置情報は、地図作成装置10に入力され、測量データ記憶部16に記憶される。なお、測量データ記憶部16は、「センサ計測位置情報記憶部」及び「設置位置情報記憶部」の一例である。
なお、本実施例では、測量器56の設置位置を1回変更し(すなわち、設置位置を地点Kから地点Nに変更し)、5箇所の地点A、C、E、G、Jにおけるセンサ52の位置を計測したが、このような構成に限定されない。例えば、1つの設置位置から5箇所の計測地点おけるセンサ52の位置の全てを計測可能であれば、測量器56を移動させることなく、その1つの設置位置から5箇所の計測地点におけるセンサ52の位置の全てを計測してもよい。また、例えば、壁等の計測物62が多く配置されている場合や対象領域が広域である場合には、測量器56の設置位置を2回以上変更してもよい。また、本実施例では、1台の測量器56で5箇所の計測地点におけるセンサ52の位置の全てを計測しているが、このような構成に限定されない。例えば、2台以上の測量器56を用いてセンサ52の位置を計測してもよい。また、本実施例では、測量器56は2箇所の地点K、Mに設置した基準用反射板の位置を計測しているが、このような構成に限定されない。測量器56で計測する基準用反射板の位置や数は上記の例に限定されるものではなく、3箇所以上の地点に設置した基準用反射板の位置を計測してもよい。
次に、地図作成装置10では、ステップS10で環境計測データ記憶部12に記憶された環境情報及びセンサ推定位置情報に基づいて、グラフ構造データ生成部14が対象領域内のグラフ構造データ28(以下、第1のグラフ構造データ28ともいう)を生成する(S14)。第1のグラフ構造データ28は、センサノード30及びセンサエッジ32によって構成される。グラフ構造データ生成部14は、環境情報及びセンサ推定位置情報に基づいてセンサノード30及びセンサエッジ32を生成し、生成したセンサノード30がセンサエッジ32により関連付けられた第1のグラフ構造データ28を生成する。
すなわち、図7に示すように、グラフ構造データ生成部14は、まず、環境計測データ記憶部12が記憶するセンサ推定位置情報に基づいて、各計測地点A〜Jにおける計測時のセンサ52の位置や姿勢を規定するセンサノード30a〜30jをそれぞれ生成する。なお、隣接する計測地点の間隔は、対象領域内に設置されている複数の計測物62の環境情報を計測できる間隔であればよい。
次に、グラフ構造データ生成部14は、環境計測データ記憶部12に記憶される時系列に蓄積されたセンサ推定位置情報及び環境情報に基づいて、隣接するセンサノード30間におけるセンサ52の相対的位置関係を規定するセンサエッジ32を生成する。センサエッジ32は、センサエッジ32の両端にある2つのセンサノード30の各姿勢についての制約を表しており、具体的には、上述したように、各計測地点においてセンサ52が計測した環境情報をマッチングさせることによって算出することができる。
例えば、グラフ構造データ生成部14は、環境計測データ記憶部12に記憶される時系列に蓄積された計測地点A、Bの環境情報及びセンサ推定位置情報から、計測地点A、B間のセンサ52の移動量(すなわち、移動体50が地点A、B間を移動したことによって移動したセンサ52の移動量)を算出する。この移動量と計測地点A、Bのセンサ推定位置情報から、グラフ構造データ生成部14は、センサノード30aとセンサノード30bとを連結するセンサエッジ32aを生成する。センサエッジ32aは、センサノード30a、30b間におけるセンサ52の相対的位置関係を規定する。すなわち、センサエッジ32aは、センサ52が計測地点Aから計測地点Bまで移動したという事象を表している。同様にして、グラフ構造データ生成部14は、時系列に蓄積された計測地点B、Cの環境情報及びセンサ推定位置情報から、センサノード30bとセンサノード30cとを連結するセンサエッジ32bを生成する。このようにして、グラフ構造データ生成部14は、全ての隣接するセンサノード30間に、センサエッジ32を生成する。そして、グラフ構造データ生成部14は、生成したセンサノード30及びセンサエッジ32から第1のグラフ構造データ28を生成する。なお、グラフ構造データ生成部14は、「第1グラフ構造データ生成部」の一例である。
次に、地図作成装置10では、ステップS12で測量データ記憶部16に記憶された測量器56の設置位置情報及びセンサ計測位置情報に基づいて、センサ真位置算出部18が、測量器56によって計測されたセンサ52の位置についてセンサ真位置を算出する(S16)。センサ真位置の算出は、以下の手順で実行される。
まず、センサ真位置算出部18は、測量データ記憶部16に記憶された測量器56の設置位置情報及びセンサ計測位置情報に基づいて、グラフ構造データ38(以下、第2のグラフ構造データ38ともいう)を生成する。第2のグラフ構造データ38は、測量器ノード40、測量器エッジ42、センサ計測ノード44及びセンサ計測エッジ46によって構成される。センサ真位置算出部18は、測量器56の設置位置情報及びセンサ計測位置情報に基づいて測量器ノード40、測量器エッジ42、センサ計測ノード44及びセンサ計測エッジ46を生成し、生成した測量器ノード40及びセンサ計測ノード44が測量器エッジ42及びセンサ計測エッジ46により関連付けられた第2のグラフ構造データ38を生成する。なお、測量器ノード40は、「計測装置ノード」の一例であり、測量器エッジ42は、「計測装置エッジ」の一例である。
図8に示すように、センサ真位置算出部18は、測量データ記憶部16に記憶された測量器56の設置位置情報に基づいて、測量器56の設置位置を規定する測量器ノード40a、40bを生成する。測量器ノード40aは、地点Kに設置された測量器56の位置を規定し、測量器ノード40bは、地点Nに設置された測量器56の位置を規定する。そして、センサ真位置算出部18は、地点Kに設置された測量器56から計測された基準用反射板の位置である地点L、Mの位置と、地点Nに設置された測量器56から計測された基準用反射板の位置である地点L、Mの位置に基づいて、各地点K、Nに設置された測量器56間の相対的位置や姿勢関係を規定する測量器エッジ42を生成する。
次いで、センサ真位置算出部18は、測量データ記憶部16に記憶されたセンサ計測位置情報に基づいて、センサ52の計測位置を規定するセンサ計測ノード44a〜44eを生成する。また、センサ真位置算出部18は、測量データ記憶部16に記憶された測量器56の設置位置情報及びセンサ計測位置情報に基づいて、センサ計測ノード44とそのセンサ計測ノード44を規定するセンサ52の位置を計測した地点の測量器ノード40との相対的位置関係を規定するセンサ計測エッジ46a〜46eを生成する。
具体的には、センサ計測ノード44aは、地点Kに設置された測量器56が計測した地点Aにおけるセンサ52の位置を規定する。また、センサ計測エッジ46aは、測量器ノード40aとセンサ計測ノード44aの間の相対位置を規定する。同様に、センサ計測ノード44b、44cは、地点Kに設置された測量器56が計測した地点C、Eにおけるセンサ52の位置をそれぞれ規定し、センサ計測エッジ46b、46cは、測量器ノード40aとセンサ計測ノード44b、44cの間の相対位置をそれぞれ規定する。また、センサ計測ノード44d、44eは、地点Nに設置された測量器56が計測した地点G、Jにおけるセンサ52の位置をそれぞれ規定し、センサ計測エッジ46d、46eは、測量器ノード40bとセンサ計測ノード44d、44eの間の相対位置や姿勢関係をそれぞれ規定する。
さらに、センサ真位置算出部18は、測量データ記憶部16に記憶された測量器56の設置位置情報及び基準用反射板の位置に関する情報に基づいて、基準用反射板の位置を規定するノードを生成すると共に、基準用反射板の位置を規定するノードとそのノードを規定する基準用反射板の位置を計測した地点の測量器ノード40との相対的位置関係を規定するエッジを生成する。本実施例では、測量器56の設置位置情報及び基準用反射板の位置に関する情報に基づいて生成されるノード及びエッジについても「センサ計測ノード44」及び「センサ計測エッジ46」と称する。具体的には、センサ計測ノード44f、44gは、地点Kに設置された測量器56が計測した地点L、Mに設置される基準用反射板の位置をそれぞれ規定し、センサ計測エッジ46f、46gは、測量器ノード40aとセンサ計測ノード44f、44gの間の相対位置や姿勢関係をそれぞれ規定する。同様に、センサ計測ノード44h、44iは、地点Nに設置された測量器56が計測した地点L、Mに設置される基準用反射板の位置をそれぞれ規定し、センサ計測エッジ46h、46iは、測量器ノード40bとセンサ計測ノード44h、44iの間の相対位置や姿勢関係をそれぞれ規定する。センサ真位置算出部18は、測量器56の設置位置情報、センサ計測位置情報及び基準用反射板の位置に関する情報に基づいて生成した測量器ノード40、測量器エッジ42、センサ計測ノード44及びセンサ計測エッジ46から、第2のグラフ構造データ38を生成する。
第2のグラフ構造データ38を生成すると、センサ真位置算出部18は、第2のグラフ構造データ38を最適化する。具体的には、センサ真位置算出部18は、第2のグラフ構造データ38内の測量器エッジ42及びセンサ計測エッジ46に基づいて算出される誤差関数の和が最小となるように第2のグラフ構造データ38を最適化する。誤差関数は、Graph−based SLAM技術で用いられている、公知の方法を用いて生成することができ、また、最適化方法についても、最急降下法や共役勾配法等の最小二乗法等の公知の方法を用いることができる。センサ真位置算出部18は、第2のグラフ構造データ38内の全てのエッジ(測量器エッジ42及びセンサ計測エッジ46)から誤差関数を算出し、これら算出された誤差関数を加算し、次いで、この誤差関数の和が最小となるように最適化する。
センサ真位置算出部18は、最適化された第2のグラフ構造データ38を構成するセンサ計測ノード44により規定されるセンサ52の計測位置を算出する。ここで算出されたセンサ52の計測位置が、第1のグラフ構造データ28においてセンサ52の真位置として用いられる。センサ52の位置(計測位置)は測量器56によって計測されるため、真値に近い正確な位置を計測することができる。しかしながら、上述したように、本実施例では、測量器56を用いてセンサ52を計測する際に、測量器56の設置位置を地点Kから地点Nに移動させている。このように測量器56の設置位置を移動させると、測量器56が計測するセンサ52の計測位置に誤差が生じることがある。測量器56の設置位置情報及びセンサ計測位置情報に基づいて生成した第2のグラフ構造データ38を最適化することによって、センサ52の計測位置を全体としてより真値に近づけることができる。このため、センサ52の位置についての真値情報の精度をより高くすることができる。なお、センサ真位置算出部18は、「第2グラフ構造データ生成部」及び「センサ真位置算出部」の一例である。
次に、地図作成装置10は、センサ位置エッジ追加部20によって、センサ位置エッジ48を第1のグラフ構造データ28内に追加する(S18)。センサ位置エッジ48は、ステップS16で算出されたセンサ52の真位置と、その位置に対応する第1のグラフ構造データ28内のセンサ52の位置とのずれを規定する。図9に示すように、センサ位置エッジ追加部20は、まず、ステップS16で最適化されたセンサ計測ノード44(すなわち、算出されたセンサ52の真位置)を、グラフ構造データ生成部14によって生成された第1のグラフ構造データ28に追加する。次いで、センサ位置エッジ追加部20は、追加されたセンサ計測ノード44と、そのセンサ計測ノード44に対応する第1のグラフ構造データ28内のセンサノード30に基づいて、両位置のずれを規定するセンサ位置エッジ48を生成する。センサ位置エッジ追加部20は、生成したセンサ位置エッジ48を第1のグラフ構造データ28に追加する。
図9に示すように、地点Aにおける計測時のセンサ52の推定位置を規定するセンサノード30aと、地点Aにおけるセンサ52の真位置を規定するセンサ計測ノード44aは一致しないことがある。センサ位置エッジ48aは、センサノード30aとセンサ計測ノード44aのずれを規定している。同様にして、センサ位置エッジ48bは、センサノード30cとセンサ計測ノード44bのずれを規定しており、センサ位置エッジ48cは、センサノード30eとセンサ計測ノード44cのずれを規定しており、センサ位置エッジ48dは、センサノード30gとセンサ計測ノード44dのずれを規定しており、センサ位置エッジ48eは、センサノード30jとセンサ計測ノード44eのずれを規定している。センサ位置エッジ48を追加することによって、第1のグラフ構造データ28に真値情報を取り込むことができる。
次に、地図作成装置10は、グラフ構造データ最適化部22によって、センサ計測ノード44及びセンサ位置エッジ48が追加された第1のグラフ構造データ28を最適化する(S20)。具体的には、グラフ構造データ最適化部22は、第1のグラフ構造データ28内のセンサエッジ32及びセンサ位置エッジ48に基づいて算出される誤差関数の和が最小となるように第1のグラフ構造データ28を最適化する。なお、第1のグラフ構造データ28の最適化については、ステップS16においてセンサ真位置算出部18が第2のグラフ構造データ38を最適化する手順と同様であるため、詳細な説明は省略する。センサエッジ32に加え、センサ位置エッジ48を用いて最適化することによって、真値情報を取り込んだ第1のグラフ構造データ28を最適化することができる。
次に、地図作成装置10では、ループクローズ部24がループクローズエッジ49を追加して第1のグラフ構造データ28をさらに最適化する(S22)。ループクローズエッジ49は、ステップS20で最適化された第1のグラフ構造データ28を構成する複数のセンサノード30の中から選択された2つのセンサノード30を規定するセンサ52間の相対位置や姿勢を規定する。本実施例では、移動経路60の始点である地点Aにおける推定位置を規定するセンサノード30aと、終点である地点Jにおける推定位置を規定するセンサノード30jを選択する。選択する2つのセンサノード30は、2つのセンサノード30によって規定されるセンサ52間の距離が比較的近く、かつ、2つのセンサノード30によって規定されるセンサ52が環境情報を計測した時間が比較的離れているほうがよい。センサ52間の距離が近いと、2つの位置から同一の計測物62を計測することができる。また、センサ52が環境情報を計測した時間が離れると、2つの位置から計測された同一の計測物62の姿勢誤差等が大きくなる。このため、2つのセンサノード30が規定するセンサ52から計測された同一の計測物62間にずれが生じ易くなる。ループクローズエッジ49は、これら2つのセンサノード30を規定するセンサ52間の相対位置や姿勢を規定することで、上記したずれが生じることを抑制する。
図10に示すように、まず、ループクローズ部24は、移動体50の移動経路60の始点である地点Aに対応するセンサノード30aと、移動経路60の終点である地点Jに対応するセンサノード30jの間に、ループクローズエッジ49を生成する。具体的には、ループクローズ部24は、地点Aにおいてセンサ52が計測した環境情報と、地点Jにおいてセンサ52が計測した環境情報に基づいて、両者のずれを規定するループクローズエッジ49を生成する。ループクローズエッジ49は、センサノード30aとセンサノード30jとの間の姿勢の制約を表す情報行列を含む。この情報行列の算出には、パターンマッチングやICP等の公知の方法を用いることができる。なお、本実施例では、追加するループクローズエッジ49は1つであるが、追加するループクローズエッジ49の数は特に限定されるものではなく、2つ以上のループクローズエッジ49を追加してもよい。また、本実施例では、ループクローズエッジ49を生成するために、移動経路60の始点である地点Aに対応するセンサノード30aと、終点である地点Jに対応するセンサノード30jを選択しているが、複数のセンサノード30の中から選択する2つのセンサノード30の組み合わせは特に限定されない。ループクローズ部24は、生成したループクローズエッジ49を第1のグラフ構造データ28に追加する。
次いで、ループクローズ部24は、ループクローズエッジ49が追加された第1のグラフ構造データ28を最適化する。具体的には、ループクローズ部24は、ステップS20において最適化された第1のグラフ構造データ28内のセンサエッジ32、センサ位置エッジ48(図10では図示省略)及びループクローズエッジ49に基づいて算出される誤差関数の和が最小となるように第1のグラフ構造データ28を最適化する。なお、ステップS22における第1のグラフ構造データ28の最適化については、ステップS16において第2のグラフ構造データ38を最適化する手順及びステップS20において第1のグラフ構造データ28を最適化する手順と同様であるため、詳細な説明は省略する。センサエッジ32及びセンサ位置エッジ48に加え、ループクローズエッジ49を用いて最適化することによって、センサ52間の相対的な姿勢のずれを取り込んだ第1のグラフ構造データ28を最適化することができる。
最後に、地図作成装置10は、環境地図作成部26によって、グラフ構造データ最適化部22及びループクローズ部24によって最適化された第1のグラフ構造データ28に基づいて環境地図を作成させる(S24)。具体的には、環境地図作成部26は、グラフ構造データ最適化部22及びループクローズ部24によって最適化された第1のグラフ構造データ28を構成するセンサノード30(以下では、最適化されたセンサノード30ともいう)に基づいて、そのセンサノード30に対応する位置から計測したセンサ52の環境情報を用いて環境地図を作成する。グラフ構造データ最適化部22及びループクローズ部24によって最適化された第1のグラフ構造データ28には、真値情報が組み込まれている。このため、最適化されたセンサノード30が規定するセンサ52の位置及び姿勢は、真値情報によって精度が高くなっている。環境地図作成部26は、センサ52が計測した環境情報に、最適化されたセンサノード30が規定するセンサ52の位置及び姿勢を適用する。これによって、環境情報の精度を高くすることができる。環境地図作成部26は、各センサノード30について、センサ52が計測した環境情報に、最適化されたセンサノード30が規定するセンサ52の位置及び姿勢をそれぞれ適用する。そして、環境地図作成部26は、最適化されたセンサノード30が規定するセンサ52の位置及び姿勢が適用された複数の環境情報をICP等の公知の方法を用いてマッチングし、環境地図を作成する。このように、グラフ構造データ最適化部22及びループクローズ部24によって最適化された第1のグラフ構造データ28に基づいて環境地図を作成することによって、環境地図全体の精度を高めることができる。
本実施例の地図作成装置10は、センサ計測ノード44が規定するセンサ52の真位置と、その位置に対応するセンサノード30が規定するセンサ52の位置とのずれを規定するセンサ位置エッジ48を第1のグラフ構造データ28に追加する。これによって、第1のグラフ構造データ28に真値情報を取込むことができる。また、真値情報は、測量器56の設置位置情報及びセンサ計測位置情報に基づいて生成した第2のグラフ構造データ38を最適化して算出される。これよって、センサ52の計測位置を全体としてより真値に近づけることができ、センサ52の位置についての真値情報の精度をより高くすることができる。また、真値情報が取り込まれた第1のグラフ構造データ28の各エッジ32、48に基づいて算出される誤差関数の和が最小となるように第1のグラフ構造データ28を最適化する。これによって、環境地図全体の精度を高めることができる。
(変形例)
上記の実施例では、対象領域内の中央に比較的小さい計測物62dのみが配置されており、移動体50は比較的広い領域を移動可能となっていたが、このような構成に限定されない。例えば、対象領域内の比較的広い範囲に計測物が配置されており、移動体50が移動可能な範囲が狭くなっている場合であっても、本実施例の技術を適用して対象領域内の地図を作成することができる。具体的には、対象領域は、例えば工場や倉庫等であり、移動体50は、対象領域(すなわち、工場や倉庫等)内の比較的狭い通路等を移動してもよい。
図11は、センサ52が倉庫70内の環境情報を計測する状態の一例を模式的に示している。図11に示すように、倉庫70内には、3つの棚72a〜72cが設置されている。移動体50は、移動経路74を移動する。詳細には、移動経路74は、区間74a〜74fに区分される。区間74aは、棚72aと倉庫70の壁の間のX方向に伸びる区間である。区間74bは、棚72aと倉庫70の壁の間及び棚72bと倉庫70の壁の間のY方向に伸びる区間である。区間74cは、棚72bと倉庫70の壁の間のX方向に伸びる区間である。区間74dは、棚72bと棚72cの間のY方向に伸びる区間である。区間74eは、棚72cと倉庫70の壁の間のX方向に伸びる区間である。区間74fは、棚72cと倉庫70の壁の間及び棚72aと倉庫70の壁の間のY方向に伸びる区間である。このような倉庫70においては、例えば、移動体50は、始点76から、区間74aを+X方向に移動する。そして、移動体50は、区間74bを−Y方向に移動し、さらに区間74cを−X方向に移動する。その後、移動体50は、区間74dを+Y方向に移動した後、同じ区間74dを−Y方向に移動する。そして、移動体50は、区間74eを−X方向に移動した後、区間72fを+Y方向に移動し、始点76の近傍に設定される終点78まで移動し、移動を終了する。この間、センサ52は複数地点で環境情報を計測する。
倉庫70内のように、見通しが悪く、移動体50が移動可能な領域(すなわち、通路等)が比較的狭い場合には、センサ52による計測物(すなわち、壁や棚72等)の計測地点が多いほうが作成される環境地図の精度を高くできる。このため、移動体50が移動経路74を移動する間、可能な限り多くの地点で環境情報を計測したほうがよい。具体的には、倉庫70等では、例えば、移動体50は1〜2m程度移動する毎に環境情報を計測してもよく、移動経路74の距離によるが、合計1000箇所以上の地点で環境情報を計測してもよい。
測量器56による計測についても、計測地点が多いほうが作成される環境地図の精度を高くできる。しかしながら、測量器56による計測は、作業者によって行われるため、計測地点が多いと作業負担が増大する。このため、測量器56による計測は、倉庫70内において特徴を有する箇所を全て含むように計測すると共に、可能な限り少ない方がよい。
例えば、まず、測量器56を区間74aと区間74bの間の地点80aに設置する。測量器56を地点80aに設置すると、区間74aに位置するときのセンサ52の位置と、区間74bに位置するときのセンサ52の位置を計測できる。このとき、区間74aに位置するセンサ52については始点76を含む2〜3地点においてセンサ52の位置を計測し、区間74bに位置するセンサ52については2〜3地点においてセンサ52の位置を計測する。次に、測量器56を区間74bと区間74dの間の地点80bに設置する。測量器56を地点80bに設置すると、区間74cに位置するときのセンサ52の位置と、区間74dに位置するときのセンサ52の位置と、区間74eに位置するときのセンサ52の位置を計測できる。このとき、各区間74c、74d、74eに位置するセンサ52について、1〜3地点ずつセンサ52の位置を計測する。最後に、測量器56を区間74fの中間付近の地点80cに設置する。測量器56を地点80cに設置すると、区間74fに位置するときのセンサ52の位置を計測できる。このとき、終点78を含む2〜3地点のセンサ52の位置を計測する。このように計測することによって、各区間74a〜74fについてのセンサ計測情報を取得できると共に、作業者による作業負担の増大を抑制することができる。
上記の変形例では、倉庫70内において、例えば、センサ52によって合計1000箇所以上の地点から環境情報を計測すると共に、測量器56によって約10〜20箇所のセンサ52の位置を計測する。センサ52によって多くの地点から環境情報を計測することによって、倉庫70内の環境情報を多く取得することができる。また、測量器56によるセンサ52の位置の計測地点を最小限まで減らすことによって、作業者による作業負担の増大を抑制できる。上記の変形例においても、センサ52が計測した環境情報及び算出されたセンサ推定位置情報に基づいて生成された第1のグラフ構造データ28に、測量器56が計測したセンサ52の位置から算出されるセンサ52の真位置を取り込むことによって、環境地図の精度を高くすることができる。したがって、倉庫70等のような見通しの悪い領域内であっても、精度の高い環境地図を作成することができる。
本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。例えば、上記の実施例では、ステップS16において、センサ計測位置情報と測量器56の設置位置情報に基づいて、センサ真位置を算出しているが、このような構成に限定されない。ステップS16を省略してもよく、この場合には、ステップS18において、測量器56によって計測されたセンサ計測位置をセンサ52の真位置として第1のグラフ構造データ28に追加してもよい。また、上記の実施例では、ステップS22において、ループクローズエッジ49を追加して第1のグラフ構造データ28をさらに最適化しているが、このような構成に限定されない。例えば、ステップS20において最適化された第1のグラフ構造データ28を構成するセンサノード30に生じるずれが小さい場合には、ステップS22を省略してもよい。この場合には、ステップS20において最適化された第1のグラフ構造データ28に基づいて環境地図を作成してもよい。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。