■ GPSによる位置検出の基本原理を体験しよう(JavaScript版)

 GPS(Global Positioning System:全地球測位システム)とはアメリカが軍事用に打ち上げたGPS衛星からの信号をカーナビなどのGPS受信機で受取り、現在位置を知るシステムです。
 24個(+予備の衛星が数個)のGPS衛星は高度約20,200kmの上空を軌道傾斜角(赤道面に対する軌道面の傾き)55度で、およそ12時間で地球を1周しています。各衛星は昇交点経度が60度おきの6種類の軌道面毎に4個が配置されています。

 GPS衛星からはその衛星の位置(Xi, Yi, Zi)と電波の発信時刻Tiの情報が送られてきます。GPS受信機で受信した時刻Toと発信時刻Tiとの差から受信機と衛星間の距離Riがわかります。
  Ri2 =(Xi-Xo)2 + (Yi-Yo)2 + (Zi-Zo)2 = [c(To-Ti)]2 ・・・(式1)
 ここで、(Xo, Yo, Zo): 受信機の位置(未知数)
      c : 光速 (30万km/s)
従って、3個の衛星からの電波を受信すると上式が3個でき、この3元連立方程式を解くことにより未知数(Xo, Yo, Zo)が求められます。ただし、実際にはGPS受信機に搭載の時計の誤差⊿t(未知数)があるため、さらに1つの式が必要となり、4個の衛星からの情報をもとに受信機の位置が決定されます。

 ここでは、GPS衛星の動きとそれによる位置検出(測位)の基本原理を体験するための簡単なシミュレーションプログラムを作成しましたので紹介します。受信機の時計の誤差を無視して3個の衛星からの情報をもとに位置を検出しています。

都市名 緯度 経度 座標(km) テキスト入力
実際地点 P1:
検出地点 P2:  
検出誤差 P2 - P1:  
  都道府県庁所在地表示&入力(マウスによる実際地点入力時)

      周回スピード(表示スピード):

地図の種類: 線の太さ:
受信機の時計の誤差Δt: 仰角マスク:


  ● プログラムの使用方法
・受信機の位置P1(実際地点)を入力します。これは実際には未知ですが、本プログラムではこれをもとに衛星と受信機の距離(すなわち信号の到達時間)を、ある誤差を含めて設定します。
 位置の指定方法には下記があります。
 ・通常は都市名一覧から選択する。
 ・都市名を「任意点入力」にすると、経緯度入力あるいは平面地図上または地球儀上で入力することができます。
  経緯度は度分秒の数値をカンマで区切って入力(東経または北緯はプラスで、西経または南緯はマイナスで)。
 ・「任意点入力」で日本地図が選択されている時に、「都道府県庁所在地表示&入力」をONにすると、
  日本地図上に都道府県庁所在地が表示され、近くをクリックするとその点を入力できます。
・画面上には24個の衛星が地球の周りを周回している様子が表示されています。
・任意の時点で「位置検出」ボタンを押してください。すると、わかり易くするために衛星が停止し、信号が受信できる衛星に青色の外円が表示され、さらに位置検出計算に使用する衛星(3個)が赤の外円で表示されます。
・検出結果は「検出地点(P2)」に経緯度と座標値が、また「検出誤差P2-P1」に誤差が表示されます。
・「step位置検出」ボタンを押すと、6分毎の位置検出ができます(「リスタート」で次へ)。
・平面地図は日本/世界の切り替えができ、また左上メニュー(Z-,O,Z+)により拡大縮小が可能です。
・右側の3D表示画面(地球儀)では地軸周りの回転および前後方向の回転(視点角度=俯角 の変更)ができます。
  右上の3x3のメニュー(L,R,U,D,O)で左右、上下、初期状態復帰。
  このメニューには次の機能もある。
   P1 : クリックでその点が画面中央になるように回転
   # : 経緯線表示On/Off
   B : 地図の明るさの変更

(注1)地球は半径6,370kmの球体と仮定しています。
(注2)GPS衛星の軌道は半径 26,561kmの円軌道と仮定しています。図中の地球の大きさと衛星の軌道半径
    の比は、実際の比に合わせています。
(注3)(式1)は点(Xi, Yi, Zi)を中心とする半径Riの球面を表しています。3元連立方程式を解くことは
    これら3つの球面の交点を求めることになります。交点は通常2個ありますが、地表に近い方を採用します。

    実際のGPSでは次のように4つの式を連立させて解を求めます。
     [(X1-Xo)2 + (Y1-Yo)2 + (Z1-Zo)2]1/2 = c(To1-T1+⊿t) …(式2.1)
     [(X2-Xo)2 + (Y2-Yo)2 + (Z2-Zo)2]1/2 = c(To2-T2+⊿t) …(式2.2)
     [(X3-Xo)2 + (Y3-Yo)2 + (Z3-Zo)2]1/2 = c(To3-T3+⊿t) …(式2.3)
     [(X4-Xo)2 + (Y4-Yo)2 + (Z4-Zo)2]1/2 = c(To4-T4+⊿t) …(式2.4)
   (式2.2~2.4)から(式2.1)を引くと⊿tが消去され、次のような3式が得られます。
     [(X2-Xo)2 + (Y2-Yo)2 + (Z2-Zo)2]1/2 - [(X1-Xo)2 + (Y1-Yo)2 + (Z1-Zo)2]1/2
            = c(To2-T2-To1+T1)
     [(X3-Xo)2 + (Y3-Yo)2 + (Z3-Zo)2]1/2 - [(X1-Xo)2 + (Y1-Yo)2 + (Z1-Zo)2]1/2
            = c(To3-T3-To1+T1)
     [(X4-Xo)2 + (Y4-Yo)2 + (Z4-Zo)2]1/2 - [(X1-Xo)2 + (Y1-Yo)2 + (Z1-Zo)2]1/2
            = c(To4-T4-To1+T1)

    各式は3次元空間上の2点からの距離の差が一定な点の集まりである双曲面を表しています。
    4元連立方程式を解くことはこれら3つの双曲面の交点を求めることになります。
(注4)位置P1の入力はあくまでも衛星と受信機間の距離(すなわち信号の到達時間)を設定するためのものであり、
    検出地点P2の計算はこの距離をもとに3球面の交点として行われます。
(注5)受信機の時計の誤差1μs(百万分の1秒)は距離にして約300mに相当します。
(注6) 地図(特に日本地図)があまり正確でないため、指定点P1の表示位置が少しずれることがあります。
3球面の交点を求める計算式(付:2円の交点)
GPSによる位置検出の基本原理を体験しよう(その2)(受信可能なGPS衛星の数)
GPSによる位置検出の基本原理を体験しよう(その3)(交点座標誤差についての1考察)

ホーム