【文献】
山田大地他,『高所特徴による自己位置推定を用いた明示的な動作計画に基づく屋外自律ナビゲーション』,日本ロボット学会誌30巻3号,日本,日本ロボット学会,2012年,30巻3号,pp.253-261
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、本発明の実施形態を図面に基づいて説明する。
図1に示す位置推定システム10は、車両1に搭載されており、周辺監視センサ11、11、無線通信部12、地図管理部13、衛星測位部14、車両状態センサ15、位置推定処理部16を備える。
【0015】
周辺監視センサ11は、車両1の周辺に存在する物体を検出するセンサであり、請求項の測定部に相当する。
図1では、2つの周辺監視センサ11が車両1に搭載されており、一方の周辺監視センサ11が車両1の前方を向いており、他方の周辺監視センサ11が車両1の後方を向いている。
【0016】
これら2つの周辺監視センサ11、11による車両上下方向軸周りの物体検出範囲は車両1の周囲360度である。なお、1つのセンサでこの物体検出範囲に存在する物体を検出できる場合には周辺監視センサは1つでもよいし、また、3つ以上のセンサで、この物体検出範囲に存在する物体を検出するようにしてもよい。
【0017】
周辺監視センサ11は、以下では、三次元LIDARセンサとする。ただし、周辺監視センサ11として、マイクロ波、ミリ波など、光以外の送信波を放射するセンサを用いてもよい。周辺監視センサ11は、物体検出範囲に存在する物体上の点の座標を逐次検出する。以下では、周辺監視センサ11が座標を検出した点の集合を観測点群という。観測点群は観測データに相当する。
【0018】
無線通信部12は、図示しない基地局を介してサーバ20との間で無線通信を行い、サーバ20が備えている地図データベース21に格納されている地図データのうち、必要な部分をサーバ20から受信する。地図データは、具体的には、環境地図点群と、道路表面地図点群である。
【0019】
環境地図点群は、道路やその周辺の物体の位置を多数の点群により表した三次元地図データであり、道路表面地図点群は、環境地図点群のうち、道路表面部分のみを抽出した地図データである。
図2に環境地図点群の一例を示し、
図3に、
図2に示した環境地図点群に対応する道路表面地図点群を示す。なお、これら環境地図点群、道路表面地図点群は、高精度GPSと複数のレーザスキャナを有する計測車両により予め測定された点群である。
【0020】
地図管理部13は、書き込み可能な記憶媒体を備えており、この記憶媒体に、無線通信部12を介してサーバ20から取得した環境地図点群と、道路表面地図点群を保存する。
【0021】
衛星測位部14は、測位用衛星30からの電波に基づいて自装置の位置を検出するGNSS(Global Navigation Satellite System)で用いられるGNSS受信機を備えている。このGNSS受信機が受信した信号に基づいて、現在位置を検出する。
【0022】
車両状態センサ15は、具体的には、車速センサとヨーレートセンサであり、車両状態として車速とヨーレートを逐次検出する。車両状態センサ15と位置推定処理部16とは、車内LAN18により接続されている。
【0023】
位置推定処理部16は、請求項の位置推定装置に相当しており、車両1の現在位置を逐次推定する。この位置推定処理部16が推定する現在位置は、衛星測位部14が検出する現在位置よりも高精度である。以下では、位置推定処理部16が推定した現在位置を、高精度推定位置という。位置推定処理部16は、本実施形態では、CPU、ROM、RAM等を備えたコンピュータと、このコンピュータが位置推定処理部16として機能するための位置推定プログラムとを備えた構成である。位置推定プログラムは、ROMに記憶されていてもよいし、ROMとは別に、記憶媒体を備え、この記憶媒体に記憶されていてもよい。なお、位置推定処理部16を、一つあるいは複数のIC等によりハードウェア的に構成してもよい。
【0024】
位置推定処理部16は、周辺監視センサ11が検出した観測点群を示すデータ、地図管理部13が記憶している地図データ、衛星測位部14が検出した現在位置、車両状態センサ15が検出した車速、ヨーレートを用いて、高精度推定位置を逐次決定する。
【0025】
次に、位置推定処理部16が実行する処理を詳しく説明する。位置推定処理部16は、
図4に示す処理を周期的に実行する。この
図4に示す処理は、位置推定方法に相当する。
【0026】
ステップS1では、初期位置および初期ヨー角θ
0を設定する。これら、初期位置および初期ヨー角θ
0は、衛星測位部14から取得する。初期ヨー角θ
0は、たとえば、衛星測位部14が逐次測位した位置の変化から決定される。なお、このステップS1は、後述するステップS13を実行して高精度推定位置P
tを更新した後は実行しない。
【0027】
ステップS2では、車速v
t、ヨーレートを車両状態センサ15から取得し、これら車速、ヨーレートを用いてオドメトリを行い、座標変換行列ΔM
tを計算する。このステップS2の処理は、請求項の移動量計算部に相当する処理である。
【0028】
座標変換行列ΔM
tは同次座標変換行列であり、式(1)より計算する。式(1)において、R
zはz軸周りの回転行列、T
xはx軸方向の並進ベクトルであり、tは観測時刻、Δtは観測周期、Iは単位行列である。I
3の場合、3行×3列の単位行列を意味する。また、x軸は車両1の前後方向、y軸は車両1の左右方向、z軸は車両1の上下方向である。
【0029】
式(1)の右辺で定義される座標変換行列ΔM
tは、時刻t−1から時刻tの間における車両1のオドメトリ移動量だけ、座標系を移動させることを意味する。換言すれば、座標変換行列ΔM
tは、時刻t−1から時刻tの間における車両1のオドメトリ移動量を意味するとも言える。
【数1】
【0030】
ステップS3では、周辺監視センサ11から観測点群の座標データを取得し、取得した座標データをRAMなどの所定の記憶部に記憶する。このステップS3の処理は、請求項の測定結果取得部、測定結果取得ステップに相当する処理である。
【0031】
ステップS4では、直近mフレームの観測点群を重ね合わせてローカル地図を作成する。ここでは、mを10とする。各フレームで取得した観測点群を重ね合わせる際には、ステップS2で逐次計算しているΔM
t、ΔM
t−1、・・・ΔM
t−mを用いて、過去に検出した観測点群の座標データを、時刻tにおける車両中心座標系(以下、ローカル座標系)に変換する。そして、時刻tにおけるローカル座標系に変換後の各フレームの観測点群を重ね合わせる。観測点群を重ねあわせて作成した点群を、以下、観測地図点群という。なお、ローカル座標系の原点は、たとえば、衛星測位部14が備えるアンテナの位置である。
図6は、このステップS4で作成した観測地図点群の一例である。
【0032】
ステップS5では、ステップS4で作成した観測地図点群を、ローカル座標系のZ軸(以下、Z
L軸)方向に複数層に分割する。ここでは複数層は、
図7に示すように3層とし、最下層は0.0≦Z
L<1.0、中間層は1.0≦Z
L<2.0、最上層は2.0≦Z
L<3.0とする。
【0033】
ステップS6では、ローカル座標をグローバル座標に変換する座標変換行列M
tLtoGを計算する。なお、グローバル座標とは、緯度経度を意味しており、またZ軸の0点は路面である。また、後に用いるピッチ座標は、グローバル座標をZ
L軸方向およびY
L軸周りに補正した座標であり、アース座標は、ピッチ座標をさらにマッチング処理した後の座標である。本明細書において、添字Lはローカル座標であることを表し、添字Gはグローバル座標であることを表し、添字Pはピッチ座標であることを表し、添字Eはアース座標であることを表す。
【0034】
座標変換行列M
tLtoGは式(2)より計算する。式(2)において、M
t−1PtoEはピッチ座標をアース座標へ変換する変換行列である。また、M
t−1GtoPは、グローバル座標を、ピッチ座標、すなわち、Z
L軸方向およびピッチ角補正した座標へ変換する座標変換行列である。
【0035】
座標変換行列M
tGtoPの前回値M
t−1GtoPは、後述するステップS10で計算している。また、座標変換行列M
tPtoEの前回値M
t−1PtoEは、後述するステップS12で計算している。なお、座標変換行列M
tLtoGの初期値M
0LtoGは式(3)で表される。そして、詳しくは後述するが、座標変換行列M
tGtoPは座標変換行列M
tLtoGから計算でき、座標変換行列M
tPtoEは座標変換行列M
tGtoPから計算できる。したがって、これら座標変換行列M
tGtoP、M
tPtoEの初期値は、座標変換行列M
tLtoGの初期値から計算できる。
【数2】
【数3】
【0036】
式(2)の意味を説明する。ΔM
t−1は、時刻t−1における車両1の移動量をローカル座標系で表している。このΔM
t−1にM
t−1LtoGを乗じると、時刻t−1における車両1の移動量が、グローバル座標で表される。さらに、M
t−1GtoPを乗じると、グローバル座標からピッチ座標系に変換され、さらに、M
t−1GtoPを乗じると、ピッチ座標からアース座標に変換される。すなわち、(2)式は、t時刻において、その1フレーム前の時刻t−1における車両1のローカル座標系での移動量をアース座標で表していることになる。
【0037】
ここで、ローカル座標系での移動量は、移動後のローカル座標を意味する。したがって、ローカル座標系での移動量をアース座標に変換することは、移動後の座標をアース座標に変換することを意味する。そして、アース座標は、車両位置を高い精度で表したグローバル座標を意味する。そこで、式2の右辺の計算を、時刻tにおいて、ローカル座標をグローバル座標に変換する座標変換行列M
tLtoGとするのである。
【0038】
ステップS7では、時刻tにおける車両1のグローバル位置、すなわち、車両1の位置を表すグローバル座標を計算する。この計算は、ステップS6で計算した座標変換行列M
tLtoGと、ステップS2で計算したΔMtを用い、下記式(4)より計算する。
【数4】
【0039】
前述したように、ΔM
tは時刻tにおける車両のローカル座標を表しているので、式(4)より、時刻tにおける車両1のグローバル位置が計算できる。
【0040】
ステップS8では、地図管理部13に記憶されている環境地図点群から、ステップS7で計算したグローバル位置を基準として用いて、車両1の周辺の点群を抽出する。なお、環境地図点群は、グローバル座標で表されている。ステップS8の処理は、請求項の地図データ取得部、地図データ取得ステップに相当する処理である。
【0041】
ステップS9では、ステップS8で抽出した点群を、M
tLtoGの逆行列を用いてローカル座標に変換する。
【0042】
ステップS10では、道路表面に対する車両1の高度偏差Δzおよびピッチ角偏差Δφを補正する補正行列M
tΔZと、グローバル座標をピッチ座標に変換する座標変換行列M
tGtoPを計算する。ステップS10の処理は、請求項の地図補正部に相当する処理である。ステップS10の詳細は、
図8に示す。
【0043】
まず、ステップS101では、地図管理部13に記憶している道路表面地図点群から、ステップS7で計算したグローバル位置を基準として用いて、車両1の周辺の半径r(m)の点群を抽出する。r(m)はたとえば10(m)である。環境地図点群と同様、道路表面地図点群もグローバル座標で表されている。
【0044】
ステップS102では、ステップS101で抽出した点群を、M
tLtoGの逆行列(M
tLtoG)
−1を用いてローカル座標に変換した後、X
L−Z
L平面上に投影する。これにより、
図9に示すように、車両1の真横から道路表面地図点群を見た状態となる。なお、ステップS102において、ステップS9でローカル座標に変換した環境地図点群から、道路表面部分を抽出し、この抽出した道路表面部分をX
L−Z
L平面上に投影してもよい。
【0045】
ステップS103では、ロバスト推定において広く用いられているRANSAC(RANdom SAmple Consensus)により、ステップS102でX
L−Z
L平面上に投影した道路表面地図点群に相当する直線を算出する。これにより、
図9に示す、現在位置を基準とした地面との高度偏差Δz、および、この地面と車両1のピッチ角偏差Δφが得られる。周辺監視センサ11は車両1に搭載されているので、ピッチ角偏差Δφは周辺監視センサ11の姿勢の一要素を表しているとも言える。
【0046】
ステップS104では、これら高度偏差Δz、ピッチ角偏差Δφを補正する、式(5)に示す補正行列M
tΔZを作成する。この式(5)において、Ry()はY軸周りの回転行列、Tz()はZ軸方向の並進ベクトルである。
【数5】
【0047】
ステップS105では、ステップS104で作成した補正行列M
tΔZを用い、グローバル座標をピッチ座標に変換する変換行列M
tGtoPを計算する。この変換行列M
tGtoPは式(6)により計算する。
【数6】
【0048】
式6は、グローバル座標を一旦、ローカル座標に変換し、補正行列M
tΔZにより、高度偏差Δz、ピッチ角偏差Δφを補正した後に、グローバル座標に変換することを意味する。
【0049】
ステップS105を終了したら、ステップS10を終了したことになる。ステップS10を終了したら、
図5に示すステップS11を実行する。
【0050】
ステップS11では、ステップS8で抽出した環境地図点群を、ローカル座標系に変換する。この変換は、環境地図点群を構成する各点に、式(6)の右辺の左2項の逆行列、すなわち、(M
tLtoG M
tΔz)
−1を乗じることで行う。この変換を行うことにより、ステップS8で抽出した環境地図点群を、車両1の高度偏差Δz、ピッチ角偏差Δφを補正した座標系にするのである。
【0051】
ステップS12では、ステップS11でローカル座標系に変換した環境地図点群を、
図7と同様の3層に分割する。そして、分割した環境地図点群およびステップS5で分割した観測地図点群を、高さが同じ層同士、層ごとにマッチング処理を行う。このマッチング処理は、Iterative Closest Pointアルゴリズム(以下、ICPアルゴリズム)を用いて行う。このステップS12およびステップS5が請求項のマッチング処理部に相当する。
【0052】
ステップS12の詳細処理は
図10に示す。なお、
図10の説明において、観測地図点群を構成する点群のうちi層を構成する点群をA={a
j}(|A|=N
A)、ステップS11で分割した環境地図点群のうち観測地図点群のi層と同じ高さの層の点群をB={b
j}(|B|=N
B)とする。
【0053】
まず、ステップS121において、座標変換行列MをIとする。なお、座標変換行列Mは4行4列であるので、Iは具体的にはI
4である。ステップS122では、j=1とする。ステップS123では、M
jにMを代入する。ステップS124では、jがN
Aになったか否かを判断する。ステップS124の判断がNOであればステップS125に進む。
【0054】
ステップS125では、環境地図点群BからM
ja
jに対応する対応点m
jを決定する。この対応点の決定には、ユークリッド距離に基づく最近傍探索を行う。
【0055】
ステップS126では、対応点m
jと入力点M
ja
jとの距離が、d
max以下であるか否かを判断する。この判断がYESであればステップS127に進み、w
jを1とし、NOであればステップS128に進み、w
jを0とする。
【0056】
ステップS129ではjに1を加える。ステップS129を実行後はステップS124に戻る。ステップS124の判断がYESになった場合にはステップS130に進む。ステップS130では、w
j=1の対応点と入力点M
ja
jとの距離を最小化する変換行列を、最小二乗法を用いて計算する。
【0057】
続くステップS131では、終了条件を満たすか否かを判断する。終了条件は、最大繰り返し回数に到達したこと、あるいは、この処理を繰り返し実行したことによる入力点M
ja
jが収束したことのいずれかが成立したことである。終了条件を満たしていない場合には、ステップS122に戻る。ステップS122に戻ると、直近のステップS130で決定した座標変換行列Mで、入力点M
ja
jに対応する対応点m
jの探索が行われる。
【0058】
ステップS131の判断がYESであればステップS132に進む。ステップS132では、最新のMをM
tiとする。
【0059】
続くステップS133では、観測地図点群を構成する点群1点あたりの対応点への平均距離e
tiを式(7)から算出する。このステップS133の処理は、請求項の距離算出部に相当する処理である。
【数7】
【0060】
この
図10に示す処理を観測地図点群を構成する各層について行う。したがって、各層iに対して、グローバル座標系において、観測地図点群を構成する点群を環境地図点群にマッチングさせる座標変換行列M
tiと、観測地図点群を構成する点群1点あたりの対応点への平均距離e
tiが得られる。
【0061】
次に、ステップS13へ進む。ステップS13では、時刻tにおいてピッチ座標をアース座標に変換する座標変換行列M
tPtoEを計算する。この座標変換行列M
tPtoEは、ステップS12で得た座標変換行列M
tiに基づいて計算する。本実施形態では、3層それぞれについて計算した座標変換行列M
tiのうち、平均距離e
tiが最も小さい座標変換行列M
tiをM
ticpとし、下記式(8)により、M
tPtoEを算出する。
【数8】
【0062】
この式(8)は、ピッチ座標を、一旦、グローバル座標に変換し、ICPアルゴリズムによるマッチング処理をした後に、ピッチ座標に戻すことを意味する。アース座標は、ピッチ座標をICPアルゴリズムによるマッチング処理した座標であるが、ICP処理はグローバル座標で行うので、ピッチ座標を、一旦、グローバル座標に変換するのである。
【0063】
ステップS143では、式(9)により、高精度推定位置P
tを更新する。このステップS14の処理は、請求項の位置計算部に相当する処理である。
【数9】
【0064】
式(9)において、ΔM
tはステップS2で計算しており、M
tLtoGはステップS6で計算しており、M
tGtoPはステップS10で計算しており、M
tPtoEはステップS13で計算している。この式(9)は、ローカル移動量を表す座標変換行列ΔM
tを、M
tLtoGによりローカル座標からグローバル座標に変換し、M
tGtoPによりグローバル座標からピッチ座標に変換し、M
tPtoEによりピッチ座標からアース座標に変換することを意味する。また、ローカル移動量は、ローカル座標系における移動後の車両位置を示している。よって、式(9)は、ローカル座標系における車両座標を、アース座標に変換することを意味している。
【0065】
(測位結果)
図11は、本実施形態の位置推定システム10が決定した高精度推定位置の誤差を、従来の車両位置推定システムによる推定位置の誤差と比較して示す図である。誤差を算出するための正解位置には、RTK−GPSにより測位を行う高精度GPSの測位値を用いた。また、ユークリッド距離は、正解位置と高精度推定位置、あるいは、従来システムによる推定位置との距離を意味する。
【0066】
図11から分かるように、本実施形態の位置推定システム10が決定した高精度推定位置は、従来の推定位置よりも高い精度で位置を推定できていることが分かる。
【0067】
(実施形態の効果)
以上、説明したように、本実施形態の位置推定システム10は、この位置推定システム10を搭載した車両1の周辺の点群を観測し、観測点群から作成した観測地図点群と、車両1の周辺の環境地図点群とをマッチングさせるマッチング処理を行う。
【0068】
このマッチング処理は、観測地図点群を高さ方向に複数層に分割して、層ごとに行う。これにより、観測地図点群を構成する点が、環境地図点群を構成する点群のうち、層が異なる点群に含まれる点と対応してしまうことを抑制できる。したがって、観測地図点群を構成する点と、環境地図点群を構成する点との誤対応が減少するので、
図11に示したように、高精度推定位置は、真の現在位置を高い精度で推定できる。
【0069】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、次の変形例も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施できる。
【0070】
<変形例1、2>
たとえば、前述の実施形態では、3層それぞれについて計算した座標変換行列M
tiのうち、平均距離e
tiが最も小さい座標変換行列M
tiをM
ticpとして、高精度推定位置P
tを計算していた(S13、S14)。
【0071】
しかしこれに限られず、3層それぞれについて計算した座標変換行列M
tiを、それぞれM
ticpとして用いて式(8)、式(9)を計算し、3つの推定位置を算出し、その3つの推定位置に基づいて、最終的な高精度推定位置P
tを算出してもよい。
【0072】
これら3つの推定位置から最終的な高精度推定位置P
tを算出する方法は、たとえば、それら3つの推定位置の単純平均である(変形例1)。また、加重平均でもよい(変形例2)。加重平均の際の重みは、たとえば、平均距離e
tiの逆数とする。
【0073】
<変形例3>
前述の実施形態では、道路表面地図点群をローカル座標系のX
L−Z
L平面に投影することで、ピッチ角偏差Δφ、高度偏差Δzを算出していた。しかし、これらピッチ角偏差Δφ、高度偏差Δzを、ピッチ角、高度を検出するセンサの検出値に基づいて計算してもよい。
【0074】
<変形例4>
前述の実施形態では、地図管理部13に道路表面地図点群を記憶していた。しかし、道路表面地図点群は環境地図点群から高さ方向の点群を除去したものであるので、道路表面地図点群を記憶せず、環境地図点群から、都度、道路表面地図点群を作成してもよい。
【0075】
<変形例5−8>
周辺監視センサ11として、カメラを用いてもよい(変形例5)。位置推定システムを車両以外の移動体で搭載してもよい(変形例6)。観測地図点群を分割する層数は3以外の複数でもよい(変形例7)。観測地図点群を分割した各層の高さ方向長さが、互いに異なっていてもよい(変形例8)。
【0076】
<変形例9>
前述の実施形態では、三次元地図データは、道路およびその周囲に存在する物体の三次元位置を、点群により示しているデータであった。また、観測データとして観測点群を取得していた。
【0077】
しかし、三次元地図データ、観測データが点群でなくても、本発明は実施できる。したがって、三次元地図データとして、点に加えて、あるいは点に代えて、線や面により物体の三次元位置を示すデータを取得し、観測点群に代えて、周囲に存在する物体の形状を、点に加えて、あるいは点に代えて、線や面により物体の三次元位置を示す観測データを取得してもよい。