以下、作業機械がその位置を安定して算出し、制御するための処理について説明する。以下の実施形態では、作業機械の一つとして特にショベルを例に挙げて説明する。
図1に本実施形態の代表的な構成例を示す。本実施形態では、GNSS(Global Navigation Satellite System)衛星101からの衛星電波を受信する第1アンテナ111および第2アンテナ112の二つのアンテナを用いて、位置および車体の向きを計測することができる測位装置113が車体121に搭載されている作業機械を例に挙げる。
作業機械であるショベル1は、大きく分けると掘削などをする作業機122と、移動のための走行や旋回をする車体121とで構成される。車体121は、移動をするための下部走行体124と、移動を伴わずに下部走行体124の上側で旋回のみをする上部旋回体123の二つで構成される。
地球のはるか上空に存在する複数のGNSS衛星101から電波を受信し、補正信号を生成して当該補正信号を無線通信にて配信する基準局102が、ショベル1とは別に存在する。基準局102は、その正規位置が既知となっており、基準局102の正規の位置座標とGNSS衛星101から得られた位置座標との差分データを含めて補正信号を生成する。
ショベル1の車体121に備えられている補正信号受信装置114は、基準局102で生成された補正信号を受信する無線受信装置である。またショベル1の車体121に備えられている測位装置113は、補正信号受信装置114および第1アンテナ111、第2アンテナ112と繋がっている装置であり、受信機に相当する。測位装置113は、GNSS衛星101からの電波および補正信号に基づき、ショベル1の現在位置を特定する。
ショベル1は、下部走行体124に対する上部旋回体123の旋回角度を検出するセンサや傾斜角度センサなど、車体姿勢を計測するセンサ群である車体姿勢計測装置115を備えている。以後、「車体姿勢」とは、上部旋回体123の方向および重力方向(高さ方向)に対する傾きを表わすこととする。またショベル1には、作業機122の上げ下げなどを操作する作業機操作装置116、車体121および作業機122の動作を制御する制御コントローラ117がある。作業機操作装置116は、オペレータが作業機122を操作するための操作レバーでもよく、制御コントローラ117からの制御信号を入力して作業機122の動作を自律的に制御する機器であってもよい。
作業機122には、作業機122の姿勢を計測するセンサ群である作業機姿勢計測装置118がある。作業機姿勢計測装置118は、後述する図11で例示するブーム、アーム、バケットなど、作業機122を構成する各部位の回転角度を計測する。作業機姿勢計測装置118により、例えば、車体121に対するブームの回転角度、ブームに対するアームの回転角度、アームに対するバケットの回転角度などを得ることができる。
測位装置113と各計測装置とは、車載ネットワーク(CAN)などでデータ通信が可能であるものとする。
次に、本実施形態における位置精度を維持するための処理の流れについて、図2を使って説明する。尚、測位装置113は、後述の図16に示すとおり、演算処理装置、主記憶装置、補助記憶装置、センサからの計測値を入力するインターフェイス端子を含み、これらが通信バスで接続されているコンピュータ構成となっている。図2に示す測位装置113内部の各ブロックは、補助記憶装置に事前に記憶されているプログラムが、演算処理装置により主記憶装置に展開され、実行されることで機能する機能ブロックである。尚、一部の機能や全ての機能をASIC(Application Specific Integrated Circuit)などの集積回路で実装してもよい。
(前提技術の説明)
ここで、まずは前提技術を用いた処理の流れについて説明する。前提技術における測位装置113は、第1アンテナ111の位置を算出する位置算出部201を有する。また前提技術における測位装置113は、上部旋回体123の方向を算出するため、第1アンテナ111と第2アンテナ112との基線ベクトルを算出する基線ベクトル算出部202を有する。以下では、例として位置算出部201が位置算出を終了した後に、基線ベクトル算出部202が基線ベクトルの算出を実施する場合について説明する。この実施順が逆になったとしても大きな差はない。
補正信号受信装置114は、基準局102から送信される補正信号を受信し、これを測位装置113の位置算出部201に出力する。また第1アンテナ111は、GNSS衛星101からの信号を受信して、位置算出部201へ出力する。位置算出部201では、以下の既知の技術を用いて第1アンテナ111の位置を算出する。
まず、第1アンテナ111で観測できる第i衛星301の搬送波位相について、以下の方程式が成り立つ。
ここで、φ
1_iは第1アンテナ111で観測できる第i衛星301の搬送波位相、λは搬送波の波長、r
1_iは第i衛星301から第1アンテナ111までの幾何学距離、cは光速、δt
1はGNSS受信機である測位装置113の時計誤差、δt
iは第i衛星301の時計誤差、N
1_iは第i衛星301から第1アンテナ111までにおける搬送波位相バイアス(第1搬送波位相バイアス)、ε
φ1_iは観測誤差である。
一方で、基準局102にて観測できる第i衛星301の搬送波位相をφ
B_iとして、以下の方程式も同様に成り立つ。
ここで、λは搬送波の波長、r
B_iは第i衛星301から基準局102までの幾何学距離、cは光速、δt
Bは基準局102のGNSS受信機時計誤差、δt
iは第i衛星301の時計誤差、N
B_iは第i衛星301から基準局102までにおける搬送波位相バイアス(基準局搬送波位相バイアス)、ε
φB_iは観測誤差である。
上の2つの式の差分をとると、以下のように表わすことができる。
上式の意味するところを、図3を用いて説明する。基準局102と第1アンテナ111との距離に対して、十分に遠いところに存在する第i衛星301からの電波は、基準局102および第1アンテナ111では平行に届くと近似できる。このとき、第i衛星301から第1アンテナ111までの距離と、第i衛星301から基準局102までの距離の差311は、上式(3)の搬送波位相の差分で表わされる。
この搬送波位相の差分については、搬送波の波数のある整数倍と残りの部分の足し算で表される。観測される搬送波位相φB_iは、この残りの部分の値で有り、整数倍の部分を足し合わせることが必要である。この整数が搬送波位相バイアスであり、この搬送波位相バイアスは各アンテナで受信した搬送波の波数と言い換えてもよい。
上式(3)と同様に第j衛星も第1アンテナ111および基準局102にて観測できていたとすれば、以下の方程式が成り立つ。
第i衛星と第j衛星がともに観測できているのであれば、式(3)と式(4)との差分をとることで、以下の方程式が成り立つ。
ここで、第1アンテナ111と基準局102が衛星までの距離に対して十分に近く、また基準局102に対する第1アンテナ111の相対位置をL=(l
x,l
y,l
z)と表わすと、r
1_iおよびr
B_iの関係は以下のように近似できる。
ただし、第i衛星301と基準局102とを結ぶベクトルを(x
B_i,y
B_i,z
B_i)と表わした。第j衛星も同様に以下のように表わされる。
よって、上式(5)は以下のようになる。
上式(8)の左辺に、第1アンテナ111および基準局102で観測できた搬送波位相の値を代入し、右辺には第i衛星から基準局102までの距離および第j衛星から基準局102までの距離を計算し、代入する。また、アンテナ位置には、適切な初期位置を設定するとともに、基準局102に対する第1アンテナ111の相対位置と、搬送波位相バイアスとを推定対象の変数として、観測可能な多数の衛星数分の方程式を用いて、最尤推定もしくはカルマンフィルタなどを構築する。これにより、推定対象の変数である、基準局102に対する第1アンテナ111の相対位置L(=(lx,ly,lz))を算出することができる。この相対位置を算出する際に、他方の推定対象の変数である各搬送波位相バイアスも導出される。また最尤推定やカルマンフィルタの処理においては、誤差分散値が算出される。
相対位置Lが算出されれば、基準局102の位置が既知であるため、第1アンテナ111の位置を容易に求めることができる。
次に、前提技術として、位置とは別に、第1アンテナ111および第2アンテナ112を用いて車体121の方向を算出する基線ベクトル算出部202について説明する。第1アンテナ111は、受信したGNSS衛星101からの信号を測位装置113の基線ベクトル算出部202へ出力し、第2アンテナ112も同様に、受信したGNSS衛星101からの信号を基線ベクトル算出部202へ出力する。基線ベクトル算出部202は、第1アンテナ111に対する第2アンテナ112の相対位置を以下の既知の技術を用いて算出し、この相対位置から車体121の方向を計算する。
まず、第1アンテナ111で観測できた第i衛星301の搬送波位相をφ
1_iとして、以下の方程式が成り立つ(上記の式(1)と同様の式)。
ここで、λは搬送波の波長、r
1_iは第i衛星301から第1アンテナ111までの幾何学距離、cは光速、δt
1はGNSS受信機である測位装置113の時計誤差、δt
iは第i衛星301の時計誤差、N
1_iは第i衛星から第1アンテナ111までにおける搬送波位相バイアス、ε
φ1_iは観測誤差である。
次に、第2アンテナ112にて観測できる第i衛星301の搬送波位相をφ
2_iとして、以下の方程式も同様に成り立つ。
ここで、λは搬送波の波長、r
2_iは第i衛星301から第2アンテナ112までの幾何学距離、cは光速、δt
iは第i衛星301の時計誤差、N
2_iは第i衛星301から第2アンテナ112までにおける搬送波位相バイアス(第2搬送波位相バイアス)、ε
φ2_iは観測誤差である。尚、第1アンテナ111および第2アンテナ112は同じ測位装置113に繋がっているため、第2アンテナ112のGNSS受信機時計誤差は、第1アンテナ111と同じδt
1である。
上の2つの式の差分をとると、以下のように表わすことができる。
上式の意味するところを、図4を用いて説明する。第1アンテナ111から第2アンテナ112までの距離に対して、十分に遠いところに存在する第i衛星301からの電波は、第1アンテナ111および第2アンテナ112では平行に届くと近似できる。このとき、第i衛星301と第1アンテナ111、第i衛星301と第2アンテナ112との距離の差411は、上式(11)の搬送波位相の差分で表わされる。
この搬送波位相の差分については、搬送波の波数のある整数倍と残りの部分の足し算で表される。観測される搬送波位相φ1_iは、この残りの部分の値で有り、整数倍の部分を足し合わせることが必要である。この整数が搬送波位相バイアスである。搬送波位相バイアスは各アンテナで受信した搬送波の波数と言い換えてもよい。
第j衛星も第1アンテナ111および第2アンテナ112にて観測できていたとすれば、上式(11)と同様に以下の方程式が成り立つ。
ここで、第1アンテナ111と第2アンテナ112が衛星までの距離に対して十分に近く、相対位置をL=(l
x,l
y,l
z)と表わせば、r
1_iおよびr
2_iの関係は以下のように近似できる。
ただし、第i衛星と第1アンテナ111とを結ぶベクトルを(x
1_i,y
1_i,z
1_i)と表わした。
よって、上式は以下のようになる。
この式(14)の左辺に、第1アンテナ111および第2アンテナ112で観測できた搬送波位相の値を代入し、右辺には第i衛星301から第1アンテナ111までの距離を計算し、代入する。また、アンテナ位置には、適切な初期位置を設定するとともに、第1アンテナ111に対する第2アンテナ112の相対位置と搬送波位相バイアスとを推定対象の変数として、観測可能な衛星数分の方程式を用いて、最尤推定もしくはカルマンフィルタなどを構築する。これにより推定対象の変数である、第1アンテナ111に対する第2アンテナ112の相対位置L(=(l
x,l
y,l
z))を算出することができる。このときの相対位置Lは、第1アンテナ111を原点とした第2アンテナ112への方向を示しており、車体121に取り付けられているアンテナ位置から車体121の方向を容易に求めることができる。また、この相対位置を算出する際に、各搬送波位相バイアスも導出され、最尤推定やカルマンフィルタの処理では誤差分散値が算出される。
また、基線ベクトル算出部202により算出された車体方向は、制御コントローラ117へ出力され、作業機122のコントロールに用いられる。
以上のように、前提技術における位置の算出は、第1アンテナ111で計測されたGNSS衛星101の情報を用いて実施している。
ここで、図5に第1アンテナ111からの作業機122方向の視線の一例を示す。図5に示すように、ショベル1の作業機122の操作によっては、ショベル1の作業機122によって遮蔽されるGNSS衛星501が存在する可能性がある。このような場合、遮蔽されたGNSS衛星501からの搬送波位相に誤差が生じ、結果、測位精度が低下する可能性がある。
そこで本実施形態では、測位装置113に各アンテナで計測される衛星を選択し補完する機能を追加し、測位精度の劣化を防ぐ。
(測位装置の全体動作)
本実施形態における測位装置113の処理の流れを図6に示す。尚、測位装置113は、測位タイミング毎に図6の処理を繰り返し実行する。
まず測位装置113は、第1アンテナ111、第2アンテナ112、および車体姿勢計測装置115や作業機姿勢計測装置118などの各計測装置からの出力を、一定タイミングで取得する(ステップS601)。
次に測位装置113の位置算出部201は、上記の前提技術と同手法により、第1アンテナ111の位置および位置の誤差分散値を算出する(ステップS602)。また、この際に算出した、測位計算に使用した衛星の搬送波位相バイアスを一時記憶部203へ記録する。
一時記憶部203では、図7に示すような基準局102と第1アンテナ111間の搬送波位相バイアス(基準局102の搬送波位相バイアスと第1アンテナ111の搬送波位相バイアスとの差分バイアス)のテーブルを持つ。この基準局102と第1アンテナ111間の搬送波位相バイアステーブルには、存在しえる全ての衛星を列挙した列701と、それぞれの衛星に対する最新の搬送波位相バイアスの値がセットされた列702と、それぞれの衛星に対する最後に補完位置算出部215(補完位置算出部215の処理については後述)にて使用した時の搬送波位相バイアスの値がセットされた列703が存在する。また図7に示すテーブルには、それぞれの衛星に対する最後に補完位置算出部215にて使用した時と最新の搬送波位相バイアスが算出された時刻までの経過時間がセットされた列704も存在する。ただし、列702について、測位計算に使用しなかった衛星の項目は空となるか、もしくはデータが存在しないことを示す値がセットされている。
次に測位装置113の基線ベクトル算出部202は、上記前提技術と同手法で第1アンテナ111および第2アンテナ112の基線ベクトルを算出する(ステップS603)。また基線ベクトル算出部202は、この際に算出する、第1アンテナ111および第2アンテナ112の間での搬送波位相バイアスを一時記憶部203へ記録する。
一時記憶部203では、図8に示すような第1アンテナ111と第2アンテナ112との間の搬送波位相バイアス(第1アンテナ111の搬送波位相バイアスと第2アンテナ112の搬送波位相バイアスとの差分バイアス)のテーブルを持つ。この第1アンテナ111と第2アンテナ112との間の搬送波位相バイアステーブルには、存在しうる全ての衛星を列挙した列801と、それぞれの衛星に対する最新の搬送波位相バイアスの値が入力された列802と、それぞれの衛星に対する最後に補完位置算出部215にて使用した時の搬送波位相バイアスの値が入力された列803が存在する。また図8のテーブルには、それぞれの衛星に対する最後に補完位置算出部215にて使用した時と最新の搬送波位相バイアスが算出された時刻までの経過時間がセットされた列804も存在する。ただし、データが存在しない項目は空となるか、もしくはデータが存在しないことを示す値が入力されている。
次に測位装置113の電波遮蔽判定部211は、車体121や作業機122がGNSS衛星101からの電波を第1アンテナ111に届くまでの間で遮っているか否かを判定する(ステップS604)。この電波遮蔽判定部211の処理の詳細は後述する。電波遮蔽判定部211は、車体姿勢計測装置115から得られる上部旋回体123の方向および重力方向に対する傾き、および作業機姿勢計測装置118から得られる作業機122の仰角などの姿勢データを受信し、これらにより車体121や作業機122による遮蔽範囲を算出する。そして電波遮蔽判定部211は、第1アンテナ111や第2アンテナ112から見て、その遮蔽範囲に存在するGNSS衛星101に対して、電波遮蔽フラグを設定する。電波遮蔽判定部211は、存在しうる全ての衛星について遮蔽フラグをセットした遮蔽フラグテーブルを作成し、一時記憶部203へ記録する。
遮蔽フラグテーブルは図9のような構造を持っており、存在しうる全ての衛星に対して、GNSSアンテナごとに遮蔽されているか否かの判定結果が登録されている。図9の例では、それぞれのGNSSアンテナから見た衛星の位置において、遮蔽される場合は「遮蔽(1)」、遮蔽されていない場合は「遮蔽なし(0)」として登録される。
次に測位装置113では、第一の共通衛星選択部212が第一の共通衛星を選択する(ステップS605)。第一の共通衛星とは、位置算出部201が用いる第1アンテナ111において電波を受信した衛星と、基準局102が送信する補正信号に含まれる衛星との、共通の衛星のうち、電波遮蔽判定部211で第1アンテナ111にて電波が遮蔽されていないと判定された衛星のことである。この判定は、一時記憶部203へ記録された遮蔽フラグテーブルにより行われる。つまり、第一の共通衛星選択部212は、各衛星番号の遮蔽フラグが基準局102および第1アンテナ111において両方とも「遮蔽なし(図9では「0」)」が設定されている衛星を選択する。
次に測位装置113では、第二の共通衛星選択部213が第二の共通衛星を選択する(ステップS606)。第二の共通衛星とは、基線ベクトル算出部202における第1アンテナ111と第2アンテナ112とで電波を受信した衛星と、第1アンテナ111にて電波を受信した衛星と第2アンテナ112にて電波を受信した衛星との共通の衛星のうち、電波遮蔽判定部211で第1アンテナ111にて電波が遮蔽されており、かつ第2アンテナ112で電波が遮蔽されていないと判定された衛星のことである。つまり、一時記憶部203に保存されている遮蔽フラグテーブルにて、各衛星の遮蔽フラグが第1アンテナ111において「遮蔽(図9では「1」)」かつ第2アンテナ112において「遮蔽なし(図9では「0」)」が設定されている衛星を選択する。
次に測位装置113では、補完搬送波位相バイアス決定部214が、ステップS602にて位置算出部201の測位計算(第1アンテナ111の位置算出)に用いられた衛星の全てが、ステップS604で遮蔽されていないと判定されているかを判定する(ステップS607)。測位計算に用いられた全ての衛星が遮蔽されていない場合(ステップS607:Yes)、後段の補完位置算出部215にて精度の高い状態で補完搬送波位相バイアスを計算することが可能として、ステップS608へ進む。遮蔽された衛星が存在する場合(ステップS607:No)、既に計算された補完搬送波位相バイアス(図6のフローチャートを1サイクル前に実行した際に算出された補完搬送波位相バイアス)を用いて、補間位置を計算するため、ステップS609へ進む。
測位計算に用いる全ての衛星が遮蔽されていない場合、つまり位置算出部201の出力が高精度であると扱うことができる場合(S607:Yes)、測位装置113の補完搬送波位相バイアス決定部214は、補完搬送波位相バイアスを計算する(ステップS608)。この計算方法については後述する。補完搬送波位相バイアス決定部214は、本実施形態では、観測可能な各衛星に関して基準局102と第2アンテナ112間の搬送波位相バイアスを計算するための係数を算出する。基準局102と第2アンテナ112間の搬送波位相バイアスは、上記の従来技術や前提技術では求められていない。補完搬送波位相バイアス決定部214は、これらの係数を補完搬送波位相バイアステーブルに設定し、一時記憶部203に保存する。この補完搬送波位相バイアステーブルへの登録についても、計算方法とともに後に詳細を述べる。
またステップS608において、補完搬送波位相バイアス決定部214は、基準局102と第1アンテナ111間の搬送波位相バイアステーブル(図7参照)に対し、以下の操作を行う。すなわち補完搬送波位相バイアス決定部214は、最新の搬送波位相バイアスを保持する列702に値がセットされている項目を、補完用搬送波位相バイアスを保持する列703へコピーする。また補完搬送波位相バイアス決定部214は、コピーした項目に対応する列704(経過時間を保持する列)の値をゼロに設定する。ただし、列702に空欄やデータ無しを示す値がセットされている項目については、列703にコピーせずに、列704の経過時間を1サンプル時間増やす。
補完搬送波位相バイアス決定部214は、第1アンテナ111と第2アンテナ112間の搬送波位相バイアステーブル(図8参照)に対しても同様に、列802に値がセットされている項目を、列803へコピーし、コピーした項目に対応する列804の値をゼロに設定する。この場合においても補完搬送波位相バイアス決定部214は、最新の値が入力されている列802に空欄やデータ無しを示す値がセットされている項目については、列803にコピーせずに、列804の経過時間を1サンプル時間増やす。
尚、このステップS608で求められる補完搬送波位相バイアスを求める係数は、後述のステップS610で、補完位置算出部215により用いられる。
ステップS607にて、位置算出部201が測位計算に用いた衛星に遮蔽がされた衛星があると判定された場合(ステップS607:No)、測位装置113の補完搬送波位相バイアス決定部214は、補完搬送波位相バイアスを使用する衛星番号を補完位置算出部215へ出力する(ステップS609)。出力する補完搬送波位相バイアスを使用する衛星番号は、ステップS606で選択された第二の共通衛星の衛星番号である。
次に測位装置113の補完位置算出部215は、補完搬送波位相バイアスを用いて、第1アンテナ111の位置、およびその誤差分散値を算出する(ステップS610)。この算出の詳細は後述する。補完位置算出部215は、位置算出部201で算出した基準局102と第1アンテナ111間の搬送波位相バイアスと、基線ベクトル算出部202で算出した第1アンテナ111と第2アンテナ112間の搬送波位相バイアスを用いて、第1アンテナ111で遮蔽されたと判定された衛星の信号を第2アンテナ112で計測した信号を用いて補完することで、第1アンテナ111における測位計算を補強することができる。
次に測位装置113の位置出力部216は、算出精度が比較するため、位置算出部201にて算出された第1アンテナ111の位置の誤差分散値と、補完位置算出部215で算出された第1アンテナ111の位置の誤差分散値とを比較する(ステップS611)。位置出力部216は、誤差分散値が小さい方を出力位置として選択する。つまり、補完位置算出部215の出力する誤差分散値が位置算出部201の出力する位置の誤差分散値より小さい場合(ステップS611:Yes)、処理はステップS612に移行し、位置出力部216は、現在位置に補完位置算出部215の算出した位置を設定する(ステップS612)。補完位置算出部215の出力する誤差分散値が位置算出部201の出力する位置の誤差分散値以上となる場合(ステップS611:No)、処理はステップS613に移行し、位置出力部216は、位置算出部201が算出した位置を現在位置として設定する(ステップS613)。
最後に位置出力部216は、前ステップで設定した第1アンテナ111の現在位置、第2アンテナ112の現在位置、基線ベクトルを示す値を含めて、制御コントローラ117へ出力し(ステップS614)、測位装置113の一連の処理を終了する。尚、制御コントローラ117は、測位装置113から得られた各アンテナの位置に基づき、車体121および作業機122の動作を制御する。この制御の一例としては、ショベル1の目的地までの自律走行制御や、作業機122を用いた自律作業の制御であったりする。また、制御コントローラ117が表示装置を制御してショベル1の現在位置をマップ上に表示させ、オペレータに通知することも可能である。
このような測位装置113の処理により、第1アンテナ111で作業機122の動作によって死角となり、遮蔽された衛星からの電波のうち、第2アンテナ112で遮蔽されずに受信した電波を用いて測位演算を行うことが可能となり、作業機122の姿勢や動作に起因する精度劣化を可能な限り防ぐことができる。
以降、測位装置113の各部の機能の詳細について述べる。
(電波遮蔽判定部)
ステップS604での電波遮蔽判定部211の動作について説明する。電波遮蔽判定部211は、車体姿勢計測装置115の計測結果である車体121の車体姿勢と、作業機操作装置116からの指令信号に従い作業機122が動作した際の、作業機姿勢計測装置118で計測された作業機の姿勢、および第1アンテナ111と第2アンテナ112とで観測される衛星情報から、衛星ごとに電波の遮蔽の有無を判定し、遮蔽フラグテーブルにその結果を書き込む。
図10に電波遮蔽判定部211の処理の流れを示す。電波遮蔽判定部211は、まず車体121の車体姿勢を示す値(上部旋回体123の向きや傾きの値)を車体姿勢計測装置115から入力し、作業機122の作業機姿勢を示す値を作業機姿勢計測装置118から入力する。そして電波遮蔽判定部211は、これらを各値を用いて遮蔽範囲を計算する(ステップS1001)。遮蔽範囲は、水平方向に対し直行する重力方向(高さ方向)での作業機122の最も高い位置xh、作業機122の幅ww、作業機122の向きφwで表わされるものとする。作業機122の幅wwは、パラメータとして事前に設定されており、作業機122の向きφwは車体姿勢計測装置115から取得できる。また、作業機122において最も高くなる位置xhは以下の様に算出される。
作業機122は、図11のように三つのパーツに大きく分けることができる。これらは、車体121に接続されているパーツから順に、ブーム1111、アーム1121、バケット1131と呼ばれる。ブーム1111の長さをL1とし、水平に対してθ1だけ傾いているとすると、ブーム1111とアーム1121の接続点1112は、車体121との接続点1113に対して、車体前方方向、高さ方向それぞれに(L1cosθ1,L1sinθ1)だけ遷移した位置に存在する。
アーム1121は、接続点1112を中心に回転する。このとき、電波遮蔽判定部211は、アーム1121の第一の端点1122、第二の端点1123、およびバケット1131との接続点1124の各点の高さを求める。アーム1121の第一の端点1122もしくは第二の端点1123の方がバケット1131との接続点1124よりも高い場合は、第一の端点1122、第二の端点1123のいずれかの端点が作業機122で最も高い点となり、バケット1131との接続点1124の方が高い場合は、バケット1131との接続点1124もしくはバケットの底部1132、もしくはバケット1131のつめ先1133のいずれかが、作業機122で最も高い位置となる。
以下に、各位置についての接続点1113からの位置を示す。
アームの第一の端点1122・・・(L1cosθ1 + L2b1cosθ2b1 , L1sinθ1 + L2b1sinθ2b1)
アームの第二の端点1123・・・(L1cosθ1 + L2b2cosθ2b2 , L1sinθ1 + L2b2sinθ2b2)
バケットとの接続点1124・・・(L1cosθ1 + L2fcosθ2f , L1sinθ1 + L2fsinθ2f)
バケットの底部1132・・・(L1cosθ1 + L2fcosθ2f + L3bcosθ3b , L1sinθ1 + L2fsinθ2f + L3bsinθ3b)
バケットのつめ先1133・・・(L1cosθ1 + L2fcosθ2f + L3tcosθ3t , L1sinθ1 + L2fsinθ2f + L3tsinθ3t)
それぞれのパラメータは以下とする。尚、長さは形状などに依拠した規定値であり、角度は作業機姿勢計測装置118から作業機操作装置116での操作信号に従い取得することができる。
L1:接続点1113から接続点1112までの長さ
L2b1:接続点1112から第一の端点1122までの長さ
L2b2:接続点1112から第二の端点1123までの長さ
L2f:接続点1112から接続点1124までの長さ
L3b:接続点1124からバケットの底部1132までの長さ
L3t:接続点1124からバケットのつめ先1133までの長さ
θ1:車体との接続点1113からアームとの接続点1112までのベクトルの水平に対する傾き
θ2b1:接続点1112から第一の端点1122までのベクトルの水平に対する傾き
θ2b2:接続点1112から第二の端点1123までのベクトルの水平に対する傾き
θ2f:接続点1112から接続点1124までのベクトルの水平に対する傾き
θ3b:接続点1124からバケットの底部1132までのベクトルの水平に対する傾き
θ3t:接続点1124からバケットのつめ先1133までのベクトルの水平に対する傾き
ただし、水平に対する傾きにはプラスマイナスがあり、水平に対して重力方向への傾きは負、重力と反対方向への傾きは正とする。この定義は座標系の定義によって変更してもよい。また、作業機122の形状によって上記の高さを求める位置が増減してもよい。
上記4点から最も高い点をxhとして、次のステップS1002に移行する。
次に電波遮蔽判定部211は、第1アンテナ111および第2アンテナ112で計測された衛星の衛星配置を取得する(ステップS1002)。電波遮蔽判定部211は、ステップS602において位置算出部201が既に計算している第1アンテナ111で計測される各衛星の位置、およびステップS603において基線ベクトル算出部202が既に計算している第2アンテナ112で計測される各衛星の位置を、衛星配置として取得する。
電波遮蔽判定部211は、第1アンテナ111および第2アンテナ112それぞれにおいて取得した各衛星を選択し(ステップS1003)、第1アンテナ111および第2アンテナ112で計測される全ての衛星について、以降の処理を繰り返す。
電波遮蔽判定部211は、対象となる衛星の位置と作業機122の遮蔽範囲とを比較する(ステップS1004)。この比較について図12、図13を用いて説明する。図12はショベル1を横から見た図、図13はショベル1を上方向から見た図である。また各符号の下2桁以外は図番号を示している。
まず、対象となる第i衛星1201の位置とアンテナA1202の位置から衛星への視線方向を結ぶベクトル(xAi,yAi,zAi)を計算する。例えば、アンテナA1202が第1アンテナ111の場合、位置算出部201もしくは基線ベクトル算出部202で計算した第1アンテナ111からの視線方向1203(=(x1i,y1i,z1i))が取得される。一方、アンテナA1202が第2アンテナ112の場合、視線方向1203は、車体姿勢計測装置115で計測された車体121の方向と、事前に設定されている第1アンテナ111と第2アンテナ112の車体上の取り付け位置から、第2アンテナ112の位置を算出することで、対象とする衛星までの視線方向1203(=(x2i,y2i,z2i))が取得される。
次に、計算したアンテナA1202からの視線方向1203(=(xAi,yAi,zAi))により、第i衛星1201の仰角1204(ψAi)、方向1301(φAi)を計算する。
次に電波遮蔽判定部211は、アンテナA1202から作業機122の最も高い点1205(xh)の仰角1207(ψAx)を計算し、衛星の仰角1204(ψAi)と仰角1207(ψAx)とを比較する。衛星の仰角1204の方が大きい(高い)場合(ステップS1005:No)、電波遮蔽判定部211は遮蔽なしと判定し、ステップS1007へ処理を進める。一方、衛星の仰角1204の方が小さい(低い)場合、下記の処理を行う。
次に作業機122の方向と衛星の仰角1204(ψAi)から、以下のように対象となる第i衛星1201が作業機122によって遮蔽される角度1302(βA_i)を求める。
アンテナA1202と作業機122による第i衛星1201の遮蔽点1206との距離L
A_iにより、遮蔽される角度1302(β
A_i)は以下のように算出できる。
ただし、それぞれの変数は以下で計算される。
作業機122の幅1303(w
w(ψ,σ))は角度ψおよび作業機122の姿勢σの関数もしくはテーブルにより規定された値であり、プラスマイナスの2つの値を持つこともある。またx
hx、x
hy、x
hzは、作業機122の最も高い点1205の位置を表し、x
Ax、x
Azは、アンテナA1202の位置を表し、x
bx、x
byは作業機122による衛星の遮蔽点1206の位置を表している。
次に電波遮蔽判定部211は、作業機122の向きφwと遮蔽される角度βA_iから求まる範囲内に、第i衛星の方向φAiが含まれるかを判定する(ステップS1005)。
遮蔽される角度β
A_iが一つの場合かつ遮蔽される角度β
A_iが正の場合において、
を満たす場合、電波遮蔽判定部211は遮蔽されていると判定し(ステップS1005:Yes)、当該衛星の遮蔽フラグを「1」に設定する(ステップS1006)。尚、φ
wはアンテナA1202と作業機122の最も高い点1205とを結んだベクトルの方向を示しており、幾何学的に算出することができる。満たさない場合、電波遮蔽判定部211は遮蔽がないと判定し(ステップS1005:No)、当該衛星の遮蔽フラグを「0」とする。尚、遮蔽フラグは初期値として「0」が入力されているものとする(以降の説明においても同様)。
遮蔽される角度β
Aiが一つの場合かつ遮蔽される角度β
Aiが負の場合において、
を満たす場合、電波遮蔽判定部211は遮蔽されていると判定し(ステップS1005:Yes)、当該衛星の遮蔽フラグを「1」に設定し(ステップS1006)、満たさない場合、電波遮蔽判定部211は遮蔽がないと判定し(ステップS1005:No)、遮蔽フラグを「0」とする。
遮蔽される角度β
Aiがプラスマイナスの2つの値がある場合、正の値をβ
Ai、負の値をβ’
Aiと表わすとして、
を満たす場合、電波遮蔽判定部211は遮蔽されていると判定し(ステップS1005:Yes)、当該衛星の遮蔽フラグを「1」に設定し(ステップS1006)、満たさない場合は遮蔽がないと判定し(ステップS1005:No)、当該衛星の遮蔽フラグを「0」とする。
上記のとおり、これらの電波遮蔽フラグは、該当する衛星およびアンテナの組み合わせのテーブルに設定され、一時記憶部203に保存される。
該当するアンテナの全衛星について、この処理を実施する(ステップS1007:Noのループ)。すなわち他衛星が存在すれば、ステップS1003へ戻り、ステップS1004からステップS1006を繰り返す。
また、該当するアンテナで観測できる全衛星で遮蔽フラグが設定完了した場合、電波遮蔽判定部211は、他に遮蔽フラグが設定されていないアンテナがあるかを判定する(ステップS1008)。他のアンテナがある場合は、ステップS1003へ戻り、ステップS1004からステップS1007を繰り返す(ステップS1008:Noのループ)。他のアンテナがない場合(ステップS1008:Yes)、全ての遮蔽フラグが設定されたことになるため、電波遮蔽判定部211は、当該処理を終了する。
(補完搬送波位相バイアス決定部)
ステップS608において、補完搬送波位相バイアス決定部214は、基準局102と第2アンテナ112との間の搬送波位相バイアスを決定し、一時記憶部203の補完搬送波位相バイアステーブルに保存する。搬送波位相バイアスは、衛星から基準局102までの航路と、衛星から第1アンテナ111までの航路との差(航路差)における波の数を表わしていた。本実施形態では、第1アンテナ111で観測される全ての衛星において電波の遮蔽が無いときに、基準局102と第2アンテナ112との間の補完搬送波位相バイアスを決定する(図6のステップS607:Yesの後にステップS608が実行される)。そして本実施形態では、第1アンテナ111で観測される衛星の中で電波の遮蔽が発生している場合に、ステップS610で、第1アンテナ111で衛星からの電波が遮蔽されており、かつ第2アンテナ112で衛星からの電波が遮蔽されていない衛星について、基準局102と第2アンテナ112との衛星からの航路差(すなわち補完搬送波位相バイアス)を用いて測位計算をする。これにより、測位計算の高精度化を図ることができる。
以下に、基準局102と第2アンテナ112との間の補完搬送波位相バイアスを決定する原理を示す。
これまでの議論から、第i衛星に関する以下の式が成り立つ。
第i衛星について、第1アンテナ111では遮蔽されているとの判定結果を得た場合、上記第1アンテナ111の搬送波位相φ
1_iは使用しないようにする。そこで、第2アンテナ112の搬送波位相φ
2_iを用いるために、上式(20)の2つの式を足し合わせると、
となる。
また、第1アンテナ111と第2アンテナ112が衛星までの距離に対して十分に近く、車体座標系における第1アンテナ111と第2アンテナ112との相対位置をLと表わせば、r
1iおよびr
2iの関係は以下のように近似できる。
ただし、R
φは、車体座標系から衛星位置を表す座標系への変換行列であり、車体姿勢計測装置115の結果から算出することができる。よって上式(21)は、
と表わすことができる。
上記の前提技術においては、第2アンテナ112と基準局102との航路差における搬送波位相バイアス(N2_i-NB_i)を求めていないため、搬送波位相バイアスの決定を再度実施する必要があった。しかし、搬送波位相バイアスは一度決定すると、サイクルスリップなどが発生しない限り計算しなおす必要はない。本実施形態ではこのことを踏まえ、以下のように補完搬送波位相バイアスを決定する。
以下、図14を用いて説明する。基準局102と第2アンテナ112との距離に対して、十分に遠いところに存在する第i衛星1401からの電波は、基準局102および第2アンテナ112では平行に届くと近似できる。よって、第i衛星1401と第2アンテナ112、第i衛星1401と基準局102との距離の差は、上式(23)の搬送波位相の差分で表わされる。基準局102と第1アンテナ111および第2アンテナ112を含む平面1402から第i衛星1401までの視線の成す角度1404をψ
~i、基準局102の位置をP
B、第1アンテナ111の位置をP
1、第2アンテナ112の位置をP
2とすると、基準局102と第2アンテナ112の航路差、基準局102と第1アンテナ111との航路差、第1アンテナ111と第2アンテナ112の航路差の関係は以下の様に表わすことができる。
上式(24)より、基準局102と第2アンテナ112の航路差に関連する搬送波位相バイアスは、第1アンテナ111と基準局102との航路差に生じる搬送波位相バイアス(N
1_i-N
B_i)と、第2アンテナ112と第1アンテナ111との航路差に生じる搬送波位相バイアス(N
2_i-N
1_i)のそれぞれに、係数C
B1_iおよびC
12_iをかけることで表わすことができ、これらの係数は以下のように表わすことができる。
ここで、ξは基準局102から第1アンテナ111へのベクトルと、第1アンテナ111から第2アンテナ112へのベクトルが成す角度1403である。
ただし、基準局102から第1アンテナ111へのベクトルは、ステップS602で求めた位置と基準局102から算出する。この実装例以外にも、以下に示すような方法で、第1アンテナ111の位置を算出し、基準局102とのベクトルを算出しても同様の効果を得ることができる。
・慣性航法装置を取り付け、第1アンテナ111の位置を1サンプル前から補完する。
・制御コントローラ117からの入力から移動量を予測し、1サンプル前の位置から補完する。
・外部の計測手段から第1アンテナ111を計測し代入する。
また、第1アンテナ111から第2アンテナ112へのベクトルはステップS603で算出されたベクトルをそのまま使用する。
以上により算出された基準局102と第2アンテナ112の航路差に関連する搬送波位相バイアスの係数は、一時記憶部203の第i衛星1401の補完搬送波位相バイアステーブル(後述の図15)へ記憶される。
また、GNSSアンテナが3つ以上有る場合でも、基準局102と任意の2つのアンテナを選び、それらが含まれる平面上のベクトルに対して上式(25)と同様の計算を実施することで求めることができる。
補完搬送波位相バイアステーブルは、図15に示すような構造を持っている。補完搬送波位相バイアステーブルは衛星ごとに存在する。例えば、第i衛星における各アンテナを結ぶベクトルの始点が列挙されている列1501に対して、ベクトルの終点となるアンテナが列挙されている行1502があり、それぞれの組に対する係数がテーブルに記載されている。ただし、基準局102がアンテナの組の終点となることは無いので、ベクトルの行方向(行1502)には存在しない。また始点と終点が同じアンテナとなることも、本実施形態では想定しない。
この補完搬送波位相バイアステーブルに記憶された値は、補完位置算出部215にて補完位置を算出するための搬送波位相バイアスを算出するために用いる。このように、搬送波位相バイアスが一度決定すれば、サイクルスリップなどが発生しなければ計算しなおす必要がないことを活かし、衛星が観測できている際に基準局102と第2アンテナ112との間の搬送波位相バイアスを簡略に求めることで計算量を抑え、かつ精度の高い測位演算が可能となる。
(補完位置算出部)
ステップS610では、補完位置算出部215にて補完搬送波位相バイアス決定部214で算出された補完搬送波位相バイアスを用いて、再度測位計算を実施する。以下に詳細な計算方法を述べる。
位置算出部201において、第1アンテナ111において遮蔽がないと判定された第j衛星について以下の方程式が成り立つ。
また、第j衛星と同様に第k衛星も第1アンテナ111にて遮蔽がないと判定されているとすれば、以下の方程式が成り立つ。
第j衛星と第k衛星がともに遮蔽がないので、上の2つの式の差分をとることで、以下の方程式が成り立つ。
ここで、補完搬送波位相バイアス決定部214で説明した様に、第1アンテナ111で電波が遮蔽されており、かつ第2アンテナ112で電波が遮蔽されていない衛星として、第i衛星が存在していた場合、第i衛星については以下の方程式が成り立つ。
よって、第i衛星と第j衛星とでは、それぞれの差分をとることで以下の方程式が成り立つことになる。
位置算出部201と同様に、第1アンテナ111と基準局102が衛星までの距離に対して十分に近く、相対位置を(l
x,l
y,l
z)と表わせば、r
1_iおよびr
B_iの関係は以下のように近似できる。
ただし、第i衛星と基準局102とを結ぶベクトルを(x
B_i,y
B_i,z
B_i)と表わした。第j衛星、第k衛星も同様に以下のように表わされる。
よって、第1アンテナ111において差分をとる二つの衛星が共に遮蔽されていない場合、つまりステップS605において第一の共通衛星として選択された衛星の組み合わせに対しては以下の方程式を用いる。
また、第1アンテナ111において差分をとる二つの衛星のうち、片方が遮蔽されている場合、つまりステップS606において第二の共通衛星として選択された衛星の組み合わせに対しては以下の方程式を用いる。
ただし、遮蔽されていると判定されている第i衛星を差分の原点側におく場合、以下のようになる。
補完位置算出部215は、式(34)(式(35)を用いる場合は式(35))の方程式の左辺に、第1アンテナ111、第2アンテナ112、基準局102で観測できた搬送波位相の値を代入する。右辺に関しては、遮蔽されていないと判定された第j衛星、第k衛星の組み合わせについては、搬送波位相バイアステーブルの列703から第1アンテナ111と基準局102との搬送波位相バイアスを代入する。
また右辺において、遮蔽されていると判定された第i衛星との組み合わせについては、第2アンテナ112と基準局102との間の補完搬送波位相バイアス(N2-NB)を、上記の通り、補完搬送波位相バイアステーブルの係数CB1、C12を用いて計算する。すなわち、式(24)に示したように、係数CB1、C12を列703および列803の値にそれぞれかけて足し合わせることで計算する。
また補完位置算出部215は、このとき、それぞれの搬送波位相バイアステーブルの列704および列804の経過時間がある閾値よりも大きい場合、は、補完搬送波位相バイアスは用いず、その衛星を用いる方程式は使わない。すなわち補完位置算出部215は、一定時間以上、電波遮蔽判定部211で遮蔽されていると判定された衛星の搬送波位相を除外して、補完搬送波位相バイアスを計算し、当該補完搬送波位相バイアスを用いた観測方程式を用いて測位演算する。
アンテナ位置には適切な初期位置を設定することで、第1アンテナ111の位置と基準局102との相対位置および搬送波位相バイアスを推定する変数として、第一の共通衛星で選択された衛星および第二の共通衛星で選択された衛星の全ての独立な衛星の組み合わせ分の方程式により最尤推定もしくはカルマンフィルタなどを構築することで求めることで、第1アンテナ111の位置と基準局102の相対位置を算出することができる。
相対位置が算出されれば、基準局102の位置が既知であれば、基準局102の位置から第1アンテナ111の位置を容易に求めることができる。
尚、最尤推定やカルマンフィルタでは相対位置を算出する際に、誤差分散値が同時に算出される。この誤差分散値は、上式の雑音項であるεφ2B_i、εφ1B_i、εφ12B_ijなどから算出する。遮蔽されているアンテナについては、その誤差分散を搬送波の1~2波長分長くするなどの方法で、搬送波位相バイアスの決定方法の違いによる誤差を推定結果に反映することができる。すなわち、補完位置算出部215は、図6のステップS610において、電波遮蔽判定部211で遮蔽されていると判定された衛星の搬送波位相を搬送波の1~2波長分長くし、誤差を大きく設定する。そして位置出力部216は、ステップS611において、このように誤差を含めた状態で、位置算出部201にて算出された第1アンテナ111の位置の誤差分散値と、補完位置算出部215で算出された第1アンテナ111の位置の誤差分散値とを比較することで、算出精度を比較する。尚、この比較結果は、位置算出部201にて算出された誤差分散値の方が大きくなる傾向となり(ステップS611:Yes)、補完位置算出部215で算出されたアンテナ位置の方を採用する傾向となる(ステップS612)。
(測位装置のハードウェア構成)
最後に、測位装置113のハードウェア構成の一例を図16を参照しつつ説明する。測位装置113は、コンピュータ構成と同様の構成を有している。
CPU1601(CPU:Central Processing Unit)は、ROM1603(ROM:Read Only Memory)やストレージ1604に記憶されているプログラムを、RAM1602(RAM:Random Access Memory)に展開して演算実行する処理装置である。CPU1601は、プログラムを演算実行することで、測位装置113の内部の各ハードウェアを統括的に制御する。RAM1602は揮発性メモリであり、CPU1601との間で直接的にデータの入出力を行うワークメモリである。RAM1602は、CPU1601がプログラムを演算実行している間、必要なデータを一時的に記憶する。
ROM1603は不揮発性メモリであり、CPU1601で実行されるファームウェアを記憶している。ストレージ1604は、フラッシュメモリ、SSD(Solid State Drive)、ハードディスクドライブなどの補助記憶装置である。ストレージ1604は、CPU1601が演算実行するプログラムや、パラメータなどの制御データを不揮発的に記憶する。
汎用I/F1605は、第1アンテナ111、第2アンテナ112、補正信号受信装置114、車体姿勢計測装置115、作業機姿勢計測装置118、制御コントローラ117などと接続するためのインターフェイスである。汎用I/F1605は、車載ネットワーク(CAN)などでデータ通信を行うためのインターフェイスとするが、例えばUSB(Universal Serial Bus)規格に準拠したシリアルバス端子や、GPIO(General Purpose Input/Output)インターフェイスなど、好適なインターフェイスが採用されてもよい。
測位装置113は、上記のような構成を有しているが、一部もしくは全てを、例えばASICなどの集積回路で実装してもよい。尚、一部もしくは全てが集積回路などで実装されている場合においても、当該構成はコンピュータの一形態とみなされる。また制御コントローラ117も、測位装置113と同様にCPUなどの演算処理装置、RAMやROM、ストレージなどの記憶装置、外部装置と通信を行うインターフェイスを有しているものとする。
以上に詳説したように、本実施形態によって、作業機の姿勢による精度劣化を防ぎ、制御やガイダンスを停止せずに滑らかに動作が可能になる。
尚、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。