こんにちは。
GPS/GNSS測位計算について説明します。
基本前提
以下に基づき、方程式を立て、解(=GPS/GNSS受信機の信号受信時刻および受信機座標)を求める。
- 受信機はGPS/GNSS衛星(複数)から発信された信号を受信する。受信時刻は全ての衛星に対し同一。
- 各々の衛星の発信時刻および座標は、受信機内の測定から求められ、方程式の中で既知値として扱われる。ただし各種誤差を被る。
- 受信時刻および受信機座標は未知数(合計個数は4つ)。
- 慣性系を仮定し、方程式の形は、真空中の光の伝播時間(=受信時刻ー発信時刻)に光速度を掛けて距離を表す。
図示例
光(電磁波)の伝播は時空間内の光円錐として表現でき、衛星の発信時刻および座標は光円錐の頂点に位置します(緑点)。解である受信機の受信時刻および座標は光円錐1の交点に位置します(橙点)。
4次元時空間における式
4つの光円錐の交点の解 $\boldsymbol{w} = \left(x, y, z, t\right)^\textrm{T}$ は下記の方程式を満たします。$\left(x_i , y_i , z_i , t_i\right)^\textrm{T}$ は円錐の頂点座標です。なお $c = 1$ とします。
\sqrt{(x - x_i)^2 + (y - y_i)^2 + (z - z_i)^2} - (t - t_i) = 0, \quad (i = 1,2,3,4)
これを展開した形は、
\begin{align}
&s -2 A_i \boldsymbol{w} + s_i = 0, \quad (i = 1,2,3,4),\\
s &\triangleq x^2 + y^2 + z^2 - t^2, \\
s_i &\triangleq x_i^2 + y_i^2 + z_i^2 - t_i^2, \\
A &\triangleq \begin{pmatrix}
x_1 & y_1 & z_1 & -t_1 \\
x_2 & y_2 & z_2 & -t_2 \\
x_3 & y_3 & z_3 & -t_3 \\
x_4 & y_4 & z_4 & -t_4
\end{pmatrix}
\end{align}
解
解 $\boldsymbol{w}$ は下記の関係式から計算できます。
\begin{align}
2 \boldsymbol{w} &= s \boldsymbol{u} + \boldsymbol{v}, \\
\boldsymbol{u} &\triangleq A^{-1} \left(1, 1, 1, 1\right)^\textrm{T}, \\
\boldsymbol{v} &\triangleq A^{-1} \left(s_1, s_2, s_3, s_4\right)^\textrm{T}, \\
\langle\boldsymbol{u},\boldsymbol{v}\rangle &\triangleq u_1 v_1 + u_2 v_2 + u_3 v_3 - u_4 v_4, \\
0 &= \langle\boldsymbol{u},\boldsymbol{u}\rangle\, s^2 + 2\left(\langle\boldsymbol{u},\boldsymbol{v}\rangle - 2\right) s + \langle\boldsymbol{v},\boldsymbol{v}\rangle
\end{align}
$s$ は二次方程式(最終行)を解いて求めます2。また実際に計算する際には $x , y , z , t$ の絶対値が大きくなりすぎないように、適切に原点を移動してください(特に $t$)。
注意点(実用精度)
地球大気中では伝播遅延が生じますので、実用精度の点では無視できないです。
詳細
詳細については、下記が良いようです。