計算の裏側

GPSはどうやって現在地を求めるのか、衛星が4機要るわけ

How GPS finds where you are, and why it needs four satellites

衛星は居場所を知らない。手元の時計誤差ごと4本の式で解く。

スマホは自分の位置と手元の時計誤差を、4機の衛星の式で同時に解く。引き算で解ける理由、衛星の時計を相対論で直す理由、衛星が空に偏ると誤差が伸びる理由が、動く模型と計算で分かる。

公式
3 本
人物
ニール・アシュビー、スティーブン・バンクロフト
作成日
更新日
執筆・監修
佐々木 航
場面

衛星は居場所を知らない

GPSの衛星は、手元のスマートフォンがどこにあるのかを知っているのだろうか。

知らない。衛星は自分の位置と時刻を電波で送り続けるだけで、受け取ったスマートフォンのほうが、電波が届くまでの時間から衛星までの距離を出し、4機以上の衛星の式を連立させて、自分の位置と手元の時計誤差を一度に解く。

GPS.govの説明でも、衛星が送るのは一方向の信号で、3次元の位置と時刻を計算するのは受信機の側だ。衛星は高さ約20,200 kmを回っていて、電波は真上の衛星からでも約67ミリ秒、地平線近くの衛星からは約86ミリ秒かかって届く。

時計が1マイクロ秒ずれれば、距離にして約300 mの狂い。

それなのに、受信機の時計はふつう原子時計ではなく、水晶の発振器だ。GPSと相対論をまとめたニール・アシュビーの総説も、受信機の時計を自由に走る発振器として扱い、「大きくずれていることがある」と書いている。では、時計の合っていない受信機が、なぜ水平10 mを切る範囲で位置を出せるのか。そして、受信機の時計誤差まで解いてしまうのなら、衛星時計を相対論で直しておく必要はどこにあるのか。

考え方

ずれた時計で測ると円が合わない

受信機が測るのは、本当の距離ではない。衛星時計が刻んだ送信時刻と、受信機の時計で読んだ受信時刻との差に光速を掛けた値で、擬似距離と呼ばれる。内閣府がみちびきの公式サイトに置く用語集では、「誤差情報も含んだ距離」。

受信機の時計がだけ進んでいれば、同じ瞬間に測ったどの衛星の擬似距離も、本当の距離よりだけ長くなる。ずれは衛星ごとにばらばらではなく、全部の衛星に同じ量だけ乗るのだ。衛星の位置を、受信機の位置をとすると、擬似距離は三平方の定理を3次元に広げた距離にを足した形になる。

未知数は、、、の4つ。式が4本、つまり衛星が4機要る。アシュビーも、4機の測定が要る理由として、この受信機の時計誤差を挙げている。

平面に落とすと、この理屈はもっと見やすい。未知数は横と縦との3つになり、衛星は3機で足りる。衛星を中心に擬似距離を半径とする円を描くと、どの円もだけ膨らんでいて、3つの円は1点で交わらない。全部の円を同じ量だけ縮めていき、3つが1点に集まったところが受信機の位置で、縮めた量がである。

平面の模型。実線の円は測った擬似距離ρを半径にしていて、どれも時計誤差bだけ膨らんでいるので、受信機の近くで3通りに交わる(白丸)。bだけ縮めた破線の円は、受信機の1点で交わる。
式

引き算で2乗を消す

円を縮める量は、式の引き算で求まる。衛星の位置をまとめてと書く。

  1. を左辺から右辺へ移して、両辺を2乗する。

  2. 展開する。とおくと、未知数の2乗とは、どの衛星の式にも同じ形で現れる。

  3. 衛星の式から衛星1の式を引くと、2乗の項が消え、未知数の1次式が残る。

  4. 衛星が4機なら、1次式が3本できる。を決まった数とみて解けば、位置はの1次式で表せる。

  5. これを衛星1の式に戻すと、の2次方程式が1つ残る。解は2つある。

平面の例なら、紙と鉛筆で最後まで追える。長さの単位を1,000 kmとし、受信機を原点に置く。衛星はS1、S2、S3で、本当の距離は13、20、17だ。受信機の時計は、距離に直して、時間にして約13ミリ秒進んでいるとする。擬似距離は17、24、21。

  1. 手順3の引き算を2回して、両辺を2で割る。

  2. とについて解くと、どちらもの1次式になる。

  3. S1の式に入れて整理する。

1つ目の解で、位置は原点に戻る。もう1つの解も方程式は満たすが、このとき擬似距離からを引いた値は3機とも負になる。2乗したときに紛れ込んだ解で、距離としては意味を持たない。

3次元でも、2次方程式の解は2つ出る。筆者が東京の上空に4機を置いて計算すると、もう1つの解は地球の中心から約1万km、受信機から約1万7000 km離れた点で、やはりが負になった。欧州宇宙機関(ESA)の解説サイトNavipediaも、もう一方の解は地表から遠く離れると書いている。

衛星が5機以上あるときや、測った値に誤差があるときは、別の解き方もよく使われる。Navipediaの解説では、見当をつけた位置のまわりで距離の式を1次式に置き換え、最小二乗で解いて見当を改める。これを繰り返すのだ。地球の中心から始めても、数回で収まるという。筆者が東京の例で時計誤差を1ミリ秒にして試すと、4回目で位置の誤差は1 mmを切った。

シミュレーション

円をそろって縮める

初めはの分だけ円が膨らんでいて、「解く」を押すと円がそろって縮み、手順4の1次式が描く点線の上を点が動いて、本当の位置の近くで止まる。点の雲は測定誤差を入れて何度も解いたときの散らばりで、「解く」を押すたびに誤差を引き直すため、求めた位置は雲のどこかに落ちる。配置を「一方に集める」に替えると雲は斜めに伸び、HDOPは0.78から4.66へ6倍になる。衛星を3機のままドラッグすると、がどれも正の解が2つ残る配置もあり、模型は地面の近くにあるほうを選んで、もう一方を白丸で示す。

考え方

半日で地球を1周する高さ

GPS.govによれば、衛星は1日に2回地球を回る。基準の24機は、6つの軌道面に4機ずつ。地球のほぼどこからでも4機以上が見える配置だ。

周期を恒星日のちょうど半分、約11時間58分とおくと、ケプラーの第三法則から軌道の大きさが決まる。地球の重力定数を使って筆者が計算すると、軌道長半径は約26,560 km、赤道半径を引いた高さは約20,180 kmで、GPS.govの約20,200 kmとの差は20 kmほどしかない。GPSのインターフェース仕様書IS-GPS-200が基準に使う長半径も、26,559.71 kmである。

周期が恒星日のちょうど半分なら、衛星は地球が1回自転するあいだに2周して、空の同じ場所へ戻る。ふだんの1日は恒星日より約3分56秒長いので、計算の上では、同じ配置が毎日約4分ずつ早く巡ってくる。

この高さでは、衛星時計は地上の時計より速い。重力が弱いぶん進み、秒速約3.87 kmで動くぶん遅れ、差し引きで1日に約38.5マイクロ秒進む。進みと遅れの大きさは、アインシュタイン方程式の応用の章で式から追える。IS-GPS-200は、地上から見て10.23 MHzになるよう、衛星時計の周波数をだけ下げ、10.2299999954326 MHzにすると定めている。地球の自転と形の効果まで入れたこの値は、1日に約38.6マイクロ秒の進みにあたる。

38.6マイクロ秒は、光の速さで約11.6 km。

では、直さなければ、位置が1日に11.6 kmずつずれていくのだろうか。

考え方

受信機の時計が引き受けられないずれ

11.6 kmがそのまま乗るのは、位置ではなく擬似距離のほうだ。衛星時計が進めば、その衛星の擬似距離は1日に11.6 kmずつ短く測られていく。

ここで、受信機の時計誤差を思い出したい。は、全部の衛星に同じ量だけ乗るずれを、まとめて引き受ける未知数だった。全部の衛星時計が同じ瞬間に同じだけ進んでいたら、そのずれはに入り、位置の式からは消える。狂うのは、受信機が出す時刻のほうだ1。

ところが、衛星時計は同じだけずれてはくれない。アシュビーは、時計の周波数のドリフトや環境の変化、狙いどおりの長半径に衛星を乗せきれないことなどから、小さな周波数のずれが別に生じると書いている。同じ総説によれば、ルビジウム時計は打ち上げのときに周波数が予測できない跳び方をするため、前もって周波数を下げず、軌道に乗ってから測った補正を航法メッセージの補正式に入れるのが慣例になった。受信機は、衛星ごとに送られてくる係数で、その衛星の時計誤差を直す。

最後のが、受信機が自分で計算する相対論の項である。IS-GPS-200は、係数からには相対論の効果が入っていないので、利用者の機器が補正しなければならない、としている。

は軌道の離心率、は長半径、は軌道上の位置を表す離心近点角、は地球の重力定数だ。円からわずかにつぶれた軌道では、衛星が地球に近づくと、重力が強いぶんと速く動くぶんの両方で時計が遅れる。遠ざかると逆になり、このずれが約12時間の周期で行き来する。アシュビーの計算では、離心率0.01の衛星で最大約23ナノ秒。距離にして約7 mだ。仕様書が示す離心率の範囲は0から0.03で、0.03なら筆者の計算で約69ナノ秒、約21 mになる。

衛星ごとに離心率も、地球に最も近づく時刻も違う。だから、このずれはにまとめて入れられない。

4機の衛星時計の誤差を距離に直して並べた模式図。破線の高さまでは全機に同じ量で、受信機の時計誤差bに吸収されて位置の式から消える。点の部分は破線から上下にずれた分で、衛星ごとに違うので、位置の誤差として残る。

受信機の時計誤差を4つ目の未知数にする仕組みは、そろったずれには強く、ばらばらのずれには手が出ない。衛星時計を直す仕事が地上の管制と受信機に分けて残っているのは、そのためである。

歴史

1977年の20日間

軌道上の時計に相対論の補正が要ることは、最初のセシウム原子時計を打ち上げた時点で分かっていた。ただ、その大きさにも、進むのか遅れるのかにも、確信はなかった。

アシュビーの総説によれば、1977年6月23日に打ち上げられた衛星NTS-2には、軌道に上がった初めてのセシウム原子時計が積まれていた。当時は「相対論的な効果が、組み込まなければならない真実だということを疑う人さえいた」という。そこで時計には周波数シンセサイザーが組み込まれ、軌道での進み方が一般相対性理論の予言どおりなら、あとからシンセサイザーを入れて周波数を合わせられるようにしてあった。

時計を動かしてから約20日間、シンセサイザーを入れないまま進み方を測った。結果は地上の時計に比べて分の442.5速く、一般相対性理論の予言は446.5だった。差は時計の精度で見分けられない範囲に収まり、地球の中心から地球半径の4.2倍離れた軌道で、重力と速さによる効果を合わせて約1%の精度で確かめたことになる。

話はそれで終わらなかった。最初に配備した衛星では、周波数の補正が少しだけ間違っていた。自転による遠心力ポテンシャルを、計算の途中で落としていたのだ。アシュビーによれば、管理者は1980年代の初めにこの誤りを知らされたが、仕様が正しい計算に改められるまでに8年かかった。

受信機に任された離心率の項も、軌道上で測られたことがある。海面の高さを測る衛星TOPEX/POSEIDONは6チャンネルのGPS受信機を積んでいて、5つのチャンネルで自分の時計誤差を決め、残る1つでGPS衛星の離心率による効果を測れた。離心率0.01486の衛星SV13では効果の最大が10.2 mで、理論とのずれは二乗平均平方根で22 cmだった。もっとも、この補正を受信機に任せたのは、初期の衛星に積めた計算能力が小さかったためで、GLONASSは送る前に直しているようだ、とアシュビーは書いている。

1985年1月には、スティーブン・バンクロフトが4ページの論文「GPSの方程式の代数的な解」を発表した。Navipediaは、ローレンツの内積を使って4本の式を1つの2次方程式にまとめる解き方を「バンクロフト法」として解説し、受信機の位置に見当がなくても、位置と時計誤差が直接求まるとしている。2次方程式が1つ残り、解が2つ出るところは、手順1から5の引き算と変わらない。

式

誤差が伸びる向きを行列で読む

擬似距離には、時計のほかにも誤差が乗る。同じ大きさの誤差でも、位置への響き方は衛星の並びしだいだ。その倍率がDOPで、みちびきの用語集が挙げる別名は「測位精度劣化係数」。

  1. 見当をつけた位置のまわりで、距離の式を1次式に直す。は受信機から衛星へ向かう長さ1のベクトルである。

  2. 衛星の数だけ並べて行列で書く。の各行はで、衛星の向きだけで決まる。

  3. 最小二乗で解く。

  4. 擬似距離の誤差が互いに独立で、どれも標準偏差なら、解の共分散行列は次の形になる。

  5. 東、北、上の向きに取り直したの対角成分から、DOPを読む。位置の3成分ならPDOP、水平ならHDOP、上下ならVDOP、時計ならTDOPと呼ぶ。

GPSの標準測位サービス性能基準も、擬似距離の誤差にDOPを掛けて位置精度を見積もる式を基本にしている。

筆者が4機で計算してみた。1機を真上、3機を仰角5°に120°おきに置くと、PDOPは1.72、HDOPは1.16、VDOPは1.26。同じ4機を天頂のまわり20°以内に寄せ、3機を仰角70°にすると、PDOPは19.4まで跳ね上がった。崩れたのは水平より上下のほうで、VDOPは19.1、HDOPは3.4にとどまる。

衛星がどれも真上に近いと、受信機が1 m上がれば、どの擬似距離もほぼ1 m縮む。時計が1 m分進めば、どれも1 m延びる。2つの未知数が全部の衛星に同じように効くので、見分けがつきにくいのだ。4機をちょうど同じ仰角に並べると、の上下の列が1の列に比例し、の逆行列が存在しなくなる。仰角45°に90°おきに並べた例では、計算そのものが止まった。

平面で、2機の衛星までの距離にそれぞれ同じ幅の誤差があるとき、受信機がいる範囲は2本の帯の重なりになる。左のように衛星が90°離れていれば重なりは小さな正方形だが、右のように20°しか離れていないと、細長いひし形に伸びる。時計誤差は除いて描いた。

地平線より下の衛星は使えないので、上下の向きはいつも片側からしか測れず、VDOPはHDOPより大きくなりやすい。性能基準の数字にも、その差が出ている。地球全体の平均で、95%の確率で水平8 m以内、垂直13 m以内。ただし、この基準は電離層と対流圏の遅れを補正した残りやマルチパス、受信機の雑音など、衛星と地上の管制では手の届かない誤差を数えていない。配置については、PDOPが6以下になる時間を地球全体で98%以上と定めている。

使いどころ

ビルの谷間で位置が飛ぶわけ

ビルに囲まれた通りでは、見える衛星が減るうえに、残る衛星が空の一部に偏り、スマートフォンの位置が飛びやすくなる。低い衛星から先に建物に隠れ、残るのは天頂のまわりの衛星になりやすい。DOPを計算した、仰角70°に寄せた4機に近い形である。内閣府によれば、測位は4機以上でできるが、安定した位置を得るにはもっと多くの衛星が見えたほうがよい。都市部や山間部では、ビルや樹木に電波が遮られて見える衛星が減り、位置が安定して得られないことがあったという。準天頂衛星システム「みちびき」はGPSと一体で使えるので、見える衛星の数を増やせる。

スマートフォンの位置は、GPSだけで決まるとも限らない。AndroidのアプリがGoogle Play開発者サービスから使える位置情報のAPIに、Fused Location Providerがある。Googleの開発者向け文書によれば、GPSやWi-Fiなどの位置の技術をこのAPIがまとめて扱い、アプリは欲しい精度を指定するだけでよい。

手元の端末で、衛星の生の測定値を見ることも難しくない。Androidの文書によれば、Android 10以降の端末はGNSSの生の測定値を返す機能が必須になっている。ただし、擬似距離などの一部の欄が出るかどうかは、チップしだいだ。記録には、Googleが公開しているアプリGnssLoggerが使える。

次の順に手を動かすと、式が自分の位置につながる。

  1. このページのシミュレーションで「一方に集める」を選び、HDOPとVDOPが「空に散らす」の何倍になるかを読む。
  2. 表計算に平面の模型を作り、衛星3機の座標とから擬似距離を出して、手順6と7の引き算で位置を解き直す。
  3. Androidの端末なら、GnssLoggerで開けた場所とビルのそばの記録を取り、記録に残った衛星の数を比べる。
  4. 擬似距離の組み立てとDOPの計算は、Navipediaの「Code Based Positioning (SPS)」と「Positioning Error」で、式の続きから追える。

衛星は今日も、自分の位置と時刻を一方的に送り続けている。居場所の答えを出すのは、時計の合っていない手元の受信機と、4本の式のほうだ。

参考文献

  1. N. Ashby, "Relativity in the Global Positioning System", Living Reviews in Relativity 6 (2003), 1. DOI 10.12942/lrr-2003-1(書誌はCrossref。本文はEurope PMCの全文PMC5253894で確認)
  2. S. Bancroft, "An Algebraic Solution of the GPS Equations", IEEE Transactions on Aerospace and Electronic Systems AES-21(1) (1985), 56-59. DOI 10.1109/TAES.1985.310538(書誌はCrossref。解き方はNavipediaの解説と筆者の計算で確認)
  3. IS-GPS-200N, "NAVSTAR GPS Space Segment/Navigation User Segment Interfaces"(2022年8月1日)3.3.1.1節、20.3.3.3.3.1節、CNAVの長半径の基準値
  4. U.S. Department of Defense, "Global Positioning System Standard Positioning Service Performance Standard", 5th Edition(2020年4月)2.4.5節、表3.8-1、表3.8-3、付録B
  5. GPS.gov「GPS」、「Space Segment」
  6. J. Sanz Subirana, J. M. Juan Zornoza, M. Hernández-Pajares, Navipedia(ESA, 2011)「Bancroft Method」、「Code Based Positioning (SPS)」、「Positioning Error」
  7. 内閣府 みちびき(準天頂衛星システム)「みちびきとは何か」、「用語集」
  8. Android Developers「Raw GNSS measurements」、Google for Developers「Fused Location Provider API」

注

  1. 衛星の位置も時刻の関数として計算するので、時刻がずれると衛星の位置もずれる。ただ、38.6マイクロ秒のあいだに衛星が進むのは約15 cmで、視線の向きの成分はさらに小さい(筆者の計算)。 ↩

姉妹サイト

株式会社Game が運営するメディアです。