播磨の山々

兵庫県姫路市周辺の山歩きと山道具の紹介をしています。2019年5月、Yahoo!ブログから引っ越してきました。

ご存じですか?山歩きで使っているGPSのしくみ

はじめに

スマホの普及により、知らない人はいないといっても過言ではない「GPS」。
しかし、その本来の意味や仕組みを知っている人は、あまり多くないような気がします。

雨続きで山歩きができませんし、面白そうなイベントもないので、今週はGPSの仕組みを大ざっぱに紹介する記事を載せることにしました。

当ブログ管理人は測量士補の資格をもっているので、GPS(GNSS)についても最低限の勉強はしているのですが、遠い昔のことですっかり忘れています。

そのため、説明が「大ざっぱ」にならざるを得ません。
詳しい方からの細かい部分へのツッコミはご勘弁を。

GPS(GNSS)について

GPSGlobal Positioning System(全地球測位システム)の略で、アメリカ空軍(第50宇宙航空団)が運用している人工衛星を利用した測位システムの名称です。

同様の仕組みとして、ロシア(ロシア宇宙軍)のGLONASS(グロナス)、ヨーロッパ(欧州委員会)のGalileo(ガリレオ)、日本(宇宙開発戦略推進事務局)の準天頂衛星システム(衛星の名前は「みちびき」)などがあり、これらはまとめてGNSSGlobal Navigation Satellite System:全地球航法衛星システム)と呼ばれています。

f:id:dfm92431:20200429220154j:plain

▲GPS(GNSS)衛星の配置が分かるアプリを起動すると、様々な測位用の衛星が上空を飛んでいることがわかる(iPhone用アプリ「GNSS View」の画面)

実は、スマホや登山用GPS受信機は、GPS以外(「GLONASS」や「みちびき」)の人工衛星からの電波も受信して現在地を割り出しています。

そのため、GPS以外の人工衛星も利用して位置を知る仕組みを「GPS」と呼ぶのは適切ではなく、本来はGNSSと表現するべきなのですが、GPSの知名度がダントツなので、この記事ではGNSSとは表記せず、「GPS(GNSS)」と併記することにしました。

GPS(GNSS)の仕組み

GPS(GNSS)は、電波の速さが常に一定であることを利用して受信機の位置を計算し、現在地を割り出す仕組みです。

具体的にその原理を見てみましょう。

地球の上空およそ2万kmを周回しているGPS(GNSS)衛星と地球の模式図を用意しました。

実際の衛星は上のアプリの画像の通りもっと多いですが、簡単な説明用の図なので、3つだけ描いています。

f:id:dfm92431:20200429220231p:plain

▲地球とGPS(GNSS)衛星3基の模式図

GPS(GNSS)衛星は、それぞれ自分の名前、軌道、時刻などを電波に乗せて発信しています(「航法メッセージ」といいます)。

GPS(GNSS)受信機(以下「受信機」)はそれを受信したときに、地上での正確な時刻とGPS(GNSS)衛星の電波に含まれている時刻を使って引き算を行い、電波が衛星から地上に届くまでに要した時間を計算します*1

電波の速度は秒速およそ30万kmと決まっていますから、距離=速度×時間という小学校で習う公式から、衛星と受信機(自分)との距離が分かるわけです。

例えば、衛星Aから電波を受信した際の時間差(電波が衛星から発射されてからGPS受信機で受け取るまでの時間)から求められた距離を「a」とします。
すると、受信機の位置は「衛星Aを中心とした半径aの球の表面上のどこか」にあることが分かります。

GPS(GNSS)衛星から受信した信号には、衛星の軌道に関する情報も含まれているので、衛星の正確な位置は分かっています

その結果、自分の位置は下の図の赤い円(実際は球)の輪郭(実際は球の表面)のどこかということになります。

f:id:dfm92431:20200429220302p:plain

▲自分の位置は「衛星Aを中心とした半径aの球の表面上のどこか」ということがわかる

これを衛星Bについても行い、衛星Bとの距離が計算の結果「b」だと分かったとします。

すると、自分の位置は「衛星Aを中心とした半径aの球と、衛星Bを中心とした半径bの球が交わる場所のどこか」ということが分かります。

f:id:dfm92431:20200429220317p:plain

▲衛星Bについても同様に距離を計算する

しかし、まだ現在地を一箇所に絞れません。さらに別の衛星からの情報も必要です。
そこで、衛星Cからの電波も受信します。

その結果、衛星Cとの距離が「c」だと分かれば、「3つの衛星それぞれを中心とした球が交わる場所」が現在地だと分かります。

f:id:dfm92431:20200429220334p:plain

▲衛星Cからの距離も分かれば、現在地が分かる

上の図では円で示しているため、3つの円の交点は1つになっています。

しかし、実際に交わっているのは球であり、複数の球が交わる場所は1点にはならないのですが、地球の表面にもっとも近い場所が現在地と見なされます。

GPS(GNSS)で位置を求めるための基本の数式

原理としては上の説明の通りですが、これを計算で行うには「球面の方程式」が利用されます。

以下のような方程式を、高校の数学で習ったことがありませんか?

f:id:dfm92431:20200712084913p:plain

▲球の中心の座標を(a,b,c)とした場合の球面の方程式(「r」は球の半径)

受信機の座標(受信機のx,y,z)を中心として、GPS(GNSS)衛星の座標をそれぞれ「衛星Aのx,y,z」、「衛星Bのx,y,z」、「衛星Cのx,y,z」にした場合、以下の3つの方程式ができあがります。

f:id:dfm92431:20200712084945p:plain

▲GPS(GNSS)で現在地を求めるための連立方程式。衛星A~Cの座標は軌道の情報から分かっており、それぞれの衛星から受信機までの距離は、電波の到達時間から分かっている。

これらを連立させて解いたら、受信機の座標(つまり現在地)が分かるというわけです。

しかし実際はそううまく行かず、別の未知数も求める必要があるのですが、それは次の項目で説明します。

位置を求めるには何基のGPS(GNSS)衛星が必要?

GPS(GNSS)により求められる位置情報は、緯度、経度、高さの三次元の座標値(x,y,z)です。

x、y、zの3つの未知数を導き出せば位置が求まるので、3基の衛星からの電波を受信して前述の連立方程式を解けば良いことになります*2

しかし、実際には最低でも4基の衛星の電波を受信しないと、受信機で位置を求めることができません。

それは、4つめの未知数である「時刻」を求める必要があるから

「なぜ時刻が未知数なんだ?時計はあるじゃないか。」と不思議に思われるかも知れません。

位置を正確に求めるには、GPS(GNSS)衛星が発信した電波が地球上で受信されるまでの時間差を正確に計算する必要があるわけですが、電波の速度は毎秒およそ30万kmというすさまじい速さ

わずか1万分の1秒の時計のズレが、距離にして30kmの誤差を生み出します。

1,000万分の1秒の時計の誤差で距離が30m、1億分の1秒の誤差で3mですから、本来は誤差がほとんどない精密な時計が受信機には必要なのです*3

しかし、そんな高精度な時計は個人で所有できませんし、所有していたとしても持ち歩けません。

そこで、GPS(GNSS)衛星から受信した電波を元に、位置を示す3次元座標の値(x,y,z)に加えて、地上の正確な時刻も未知数として計算するのです。

具体的にどのような計算が行われているのか興味のある方は、検索してみてください。詳しい解説が色々と見つかります。

ともかく、GPS(GNSS)受信機はとんでもなくややこしい計算を軽々とこなして自分と衛星との距離を割り出し、私達に正確な現在地を教えてくれています。

谷間ではGPS(GNSS)の精度が低い?

山歩きでGPS(GNSS)の位置情報を利用していると、谷間で位置の精度が低下しがちなのはご存じの通り。

では、なぜそうなるのでしょうか。

谷間では空が開けていないため、下の図のように自分の真上にあるGPS(GNSS)衛星からの電波しか届かないので、それぞれの衛星を中心とした球の表面が交わる範囲が分かりにくくなるのです(わずかな誤差で位置が大きくずれる)。

GPS(GNSS)で正確な位置を求めるには、電波を利用する衛星が広範囲に散らばっている必要があるというわけ。

f:id:dfm92431:20200429220457p:plain

▲谷間や市街地では真上にある衛星からの電波しか受信できない

谷間や市街地でGPS(GNSS)の精度が低くなるもう一つの理由に、「マルチパス」があります。

これは電波の多重反射のことで、障害物に当たった電波が反射されて受信機に届くことにより、電波の到達時間に誤差が生じます

これらの問題はGPS(GNSS)の宿命みたいなものですから、解決のしようがありません。

スマホのGPS(GNSS)機能と登山用GPS(GNSS)受信機の違い

登山用のGPS(GNSS)受信機を使ったことのある方なら、「なぜスマホは一瞬で現在地が表示されるのに、登山用の受信機は電源を入れてから位置が表示されるまでに時間がかかるんだ?」と疑問に思われるはず。

受信機が起動してから現在地を割り出すまでにかかる時間は、「初期位置算出時間」の英語訳である「Time To First Fix」の頭文字を取って「TTFF」と呼ばれています。

スマホと登山用受信機の間にはTTFFに大きな差があるわけですが、それは現在地を割り出すための情報を受信(ダウンロード)する方法が異なっているから。

「GPS(GNSS)の仕組み」の中で、GPS(GNSS)衛星が発信する情報の中に「軌道」の情報が含まれることを書きました。

衛星の軌道が分からないと、衛星との距離が分かったところで、現在地は特定できません。

登山用受信機は、起動時にまず航法メッセージを衛星から直接受信しており、それに時間がかかるのです*4

航法メッセージには、「エフェメリス(ephemeris)」「アルマナック(almanac)」の2種類があります。

エフェメリスは、衛星が自分自身の精密な軌道を公開するために送信している情報。

アルマナックもGPS(GNSS)衛星が送信している情報ですが、エフェメリスはそれを送信している衛星だけの情報であるのに対し、アルマナックはその衛星が属する同じシステム(GPS、GLONASSなど)内のすべての衛星の大まかな軌道の情報です。これは、受信機が現在地を求めるために、どの衛星を利用すれば良いか(利用できるか)を判断するのに役立ちます。

衛星から直接受信する場合、エフェメリスのダウンロードには30秒程度、全てのアルマナックのダウンロードには12~13分かかります*5

工場出荷状態の登山用GPS(GNSS)受信機のTTFFが10分以上なのは、これが理由です。

アルマナックは(時間が経つほど精度は下がりますが)有効期間が長いため、時々山歩きでGPS(GNSS)受信機の電源を入れるという場合は、その都度エフェメリスをダウンロードするだけで現在地を割り出せるので、TTFFは数分で済みます。

最後にアルマナックを受信してから長期間電波を拾わせなかった受信機は、位置を求めるためにまた10分以上かけてアルマナックを受信しないといけません。

それに対して、スマホは通信速度が速い携帯電話の通信網を使って衛星の軌道情報をダウンロードするため*6、ダウンロードにかかる時間が短くて済みます。

また、つながっている基地局からあらかじめおおよその現在地が判明しているため、短時間で正しい現在地を割り出せるのです。

スマホが利用しているこの仕組みは、Assisted GNSS(A-GNSS)と呼ばれています。

最後に

GPS(GNSS)は、開けた屋外では素晴らしいサービスを提供してくれますが、巨大な地下街や大きな建物の中などではまったく役に立ちません。

私の場合は、大阪駅周辺の地下街に行く度に迷子になります。

GPS(GNSS)ではどうにもならない(衛星からの電波を受信できない)場所で位置を割り出せる仕組みが、早く登場してくれないかな。

*1:例えば、衛星から受信した電波に含まれている時刻が12時00分00秒で、それを受信した時刻が12時00分01秒であれば、電波は衛星から地上まで1秒かかって移動したことになります。実際は1秒などというおおざっぱな時間ではなく「ナノ秒」単位で時間を計っています。ちなみに、1ナノ秒は10億分の1秒です。

*2:実際は方程式の解が複数になるので、前述の通り地球の表面に近い場所を示す解が採用されます。

*3:GPS(GNSS)衛星には誤差がほとんどない原子時計が搭載されており、頻繁に補正されているため、衛星が発射する電波に乗せられた時刻の情報は極めて正確です。

*4:衛星から受信する際のデータ通信速度はわずか50bps。

*5:電波の受信状態が悪ければ、もっと時間がかかります。

*6:ネットワーク上には、アルマナックなどが保存されたサーバがあります。