先に作成した
「GPS簡易シミュレーションプログラム」
において、色々な時刻での位置検出を試みると時々「誤差過大」が発生することがあります。このプログラムでは誤差(地表からの高さ方向距離)が10kmを超えるとこのメッセージが出力されますが、なぜこのような大きな誤差が発生するのでしょうか。
受信機内蔵の時計の誤差はプログラムの初期設定では3μs(百万分の3秒)に設定されています(画面操作で変更可能)ので、距離にして
凾秩@= 30万km/s x 3μs = 30x104 x 3x-6 = 0.9km
程度の誤差です。3つの衛星を中心とするそれぞれの球面の半径が凾窒セけ増加(あるいは減少)した時に、3球面の交点座標がいくら変化するかを考察してみましょう。

・Pi(Xi, Yi, Zi),i=1,2,3 を各衛星の位置、Po(Xo, Yo, Zo)を受信機の位置とし、衛星と受信機との距離を
Ri(i=1,2,3)とします。
・すると次式が成り立ちます。
Ri2 =(Xi-Xo)2 + (Yi-Yo)2 + (Zi-Zo)2 (i=1,2,3) ・・・(式1)
・半径誤差(距離の誤差)凾窒ノよる交点座標誤差を(凅, 凉, 凛)とすると、(式1)より(微分して)
Ri凾 = (Xo-Xi)凅 + (Yo-Yi)凉 + (Zo-Zi)凛 (i=1,2,3) ・・・(式2)
凾 = ([Xo-Xi)/Ri]凅 + [(Yo-Yi)/Ri]凉 + [(Zo-Zi)/Ri]凛 (i=1,2,3) ・・・(式2’)
右辺は単位ベクトル[Xo-Xi)/Ri, (Yo-Yi)/Ri, (Zo-Zi)/Ri]と誤差ベクトル[凅,凉,凛]の内積ゆえ、
両者のなす角をθi、誤差ベクトルの大きさを册とすると
凾 = 册・cosθi (i=1,2,3) ・・・(式3)
・(式3)で、凾秩A册は各衛星に共通であり、従って角θi も各衛星に共通の値となります。
すなわち、誤差ベクトルは各衛星と受信機を結ぶ3ベクトル(線分)に対して同じ角度となります。
・(式2)の3元連立方程式を解くと(凅, 凉, 凛)が求められます。
R1凾 = (Xo-X1)凅 + (Yo-Y1)凉 + (Zo-Z1)凛
R2凾 = (Xo-X2)凅 + (Yo-Y2)凉 + (Zo-Z2)凛
R3凾 = (Xo-X3)凅 + (Yo-Y3)凉 + (Zo-Z3)凛
すなわち、
|(R1凾) (Yo-Y1) (Zo-Z1)|
|(R1凾) (Yo-Y2) (Zo-Z2)|
|(R1凾) (Yo-Y3) (Zo-Z3)|
凅 = ―――――――――――――― , 凉 = …, 凛 = …(同様)
| (Xo-X1) (Yo-Y1) (Zo-Z1)|
| (Xo-X2) (Yo-Y2) (Zo-Z2)|
| (Xo-X3) (Yo-Y3) (Zo-Z3)|
ここで分母の行列式はベクトル V1(P1Po), V2(P2Po), V3(P3Po)のスカラー3重積 V1・(V2xV3)であり、
V1,V2,V3が同一平面内にあるときは外積(V2xV3)とV1が直交し、分母=0となります。
従って、これら3ベクトルがほぼ同一平面内にあるときは(凅,凉,凛)が非常に大きくなり、交点座標
が本来の位置から大きくずれることになります。
・このことは(式3)からも知ることができます。
3衛星と受信機が同一平面上にある場合を考えます。この時、誤差ベクトルはこの平面に垂直な方向になります。
従ってθi = 90°、cosθi = ∞となって、(式3)より册が極端に大きくなります。これが「誤差過大」の原因です。
・今回のプログラムでは受信可能衛星から実際に位置計算(測位)に使用する衛星を無作為に3個選定していますので、
このような現象がおこります。
(注)実は俯角(β)を90度に設定すると、以後上記の状態をできるだけ回避する処理が行われ、位置誤差の増大を
抑えるようになっています。