先に作成した
「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度に設定すると、以後上記の状態をできるだけ回避する処理が行われ、位置誤差の増大を
抑えるようになっています。