GNSS測位のアルゴリズム解説【GNSS】


こんにちは、でんがく博士です。
今回は、皆さんが気になる実際にGNSS受信機がどういった計算で測位しているかという件について、本記事で解説します。

【この記事で分かること】

  • GNSS受信機の単独測位の方法

【1つの衛星との計算式】

単独測位の原理は、まとめると、衛星の座標は既に分かっていて、衛星との相対的な距離から自分の位置を特定する。という技術になります。以下で一つの衛星との相対距離について数式を見ていきましょう。
いきなり複数の衛星について考えるのは難しいので、1つの衛星について考えます。

まず、衛星との相対的な距離を観測します。衛星から出た信号には時刻が付与されていて、受信機に到達するまでの時間差に光速cをかけると距離が出ます。これを疑似距離(シュードレンジ)と呼びます。
$$R_1=c*\left(t_1-t_u \right)$$

次に、理想的な相対距離について考えます。
自分(受信機)の座標を\( \left(x_u,y_u,z_u \right) \) とします。
次に、1つ目の衛星の座標を\( \left(x_1,y_1,z_1 \right) \) とします。
そうすると、衛星との理想の相対距離は以下になりますよね。
$$\sqrt{\left(x_1-x_u\right)^2 + \left(y_1-y_u\right)^2 +\left(z_1-z_u\right)^2} $$

受信機側の時計の精度は、衛星の時計と比較して精度が悪いため、受信機側の時計のずれ(クロックバイアス)を補正する必要があります。これを考慮すると、以下のような式になります。
$$R_1=\sqrt{\left(x_1-x_u\right)^2 + \left(y_1-y_u\right)^2 +\left(z_1-z_u\right)^2}+c*\delta t \tag{1}$$
これで、1つの衛星の観測値について式にすることができました。

【複数衛星を考慮した行列計算】

知りたいのは、受信機の \( x,y,z,\delta t \)なので、4つの変数を知りたいわけです。この変数を求めるには4次方程式以上の式を求めれば良く、つまり4衛星以上を使った方程式を解けば良いということになります。
4次方程式を解く方法は色々な計算方法がありますが、ここではよく用いられる逐次計算法という計算方法を紹介します。

逐次計算法は、変数を初期値と修正値との和(たとえば、\( x=x_0 + \Delta x\) )として置き、修正値が十分小さくなるまで反復して計算する手法です。

実際にやっていきましょう。(1)の式を線形化すると以下のような式になります。クロックバイアスの項を簡単化するために\( \Delta S \)としました。
$$\Delta R_1=\frac{\partial R_1}{\partial x} \Delta x+\frac{\partial R_1}{\partial y} \Delta y+\frac{\partial R_1}{\partial z} \Delta z+\Delta s \tag{2}$$

偏微分の項は、(1)から、以下のようになります。この式の各項は、受信機から衛星の正規化された視線ベクトルを表しています。
$$\frac{\partial R_1}{\partial x} =\frac{-(x_1-x_0)}{R}$$
$$\frac{\partial R_1}{\partial y} =\frac{-(y_1-y_0)}{R}$$
$$\frac{\partial R_1}{\partial z} =\frac{-(z_1-z_0)}{R}$$
$$R=\sqrt{\left(x_1-x_0\right)^2 + \left(y_1-y_0\right)^2 +\left(z_1-z_0\right)^2}$$

また、\( \Delta R_1 \)は観測値と理想の初期値との差分ですので、以下の式で表されます。
$$ \Delta R_1 = R_1-R \tag{3} $$

正規化した視線ベクトルを\((e_{1x},e_{1y},e_{1z}) \)として、複数の衛星について行列にまとめると以下のようになります。
$$
\left[ \begin{array}{rrr}
\Delta R_1
\\ \Delta R_2
\\ \Delta R_3
\\ \Delta R_4
\\ …
\end{array} \right] 
=\left[ \begin{array}{rrr}
e_{1x} & e_{1y} & e_{1z}& 1
\\ e_{2x} & e_{2y} & e_{2z}& 1
\\ e_{3x} & e_{3y} & e_{3z}& 1
\\ e_{4x} & e_{4y} & e_{4z}& 1
\\ …&…&…&…
\end{array} \right]
*\left[ \begin{array}{rrr}
\Delta x
\\ \Delta y
\\ \Delta z
\\ \Delta s
\end{array} \right] 
$$

【まとめ】

  • GNSSは、最小2乗法により測位計算する。

コメント

タイトルとURLをコピーしました