2011年3月9日水曜日

GPSを使ってみよう その1

最近あちこちでGPSレシーバーを見かけるようになった。世間では「今どこ」を知ることが小さなブームになっているようだ。というわけで当ブログでも、オフロードやアウトドア活動を前提としたGPSネタを紹介していこうと思う。GPSの仕組みや歴史はWikiなどで勉強できると思うので、当ブログでは実用に関わる知識にフォーカスして話をしたい。

私は誰?、今何時?
GPSレシーバーを使い始めると、誰しも精度が気になるわけで、まず第1回はそのお話から。GPSの精度は、どのようにして位置を特定するのか?という仕組みと関係が深い。レシーバーはGPS衛星からの信号を受信して自分の位置を計算する。で、その信号の主な内容は、見出しに書いた「私は誰?今何時?」という情報なのだ。GPS衛星は、この電波を発しているのはどの衛星なのかということと、信号を発するごとに、搭載されている精密な時計の示す標準時刻(正確には同期信号)を送出している。
*テーマにフォーカスするため、ここでは話を省いていますが、GPS衛星からは「衛星の軌道情報」も同時に送信されています。詳しい仕組みを知りたい方はWikiなどをご参考に。
良く勘違いされるが、GPSレシーバーは複数衛星からの電波の「方向」を検知して三角測量するわけではない。それは旧来のコンパスを使ったクロスベアリングで位置を求める方法だ。GPSレシーバーの場合は、自分の居場所と衛星の間の「距離」を計って三角測量するのだ。3つの衛星からの距離が判れば、3角錐の頂点を求める計算によって自分の位置が判るという仕組み。この距離を測るために、衛星の識別と精密な時刻が使われる。
衛星からの信号の時刻とレシーバー内の時計を照合
なぜ時刻から距離が判るのか?それは国際電話で遠隔地と会話するとき相手の声が遅れて聞こえるという「距離が遠くなるほど信号到達が遅延する」という原理。衛星からの信号に載せられた時刻と、レシーバー内蔵の時計の時刻を照合して「どのくらい電波の到達に時間が掛かったか」を計算して、その結果から衛星との距離を導くわけだ。
衛星の位置と精度の関係
ものすごく厳密に距離が判るのならレシーバーは正確な位置を表示できるのだが、それには色々な障害がある。これは信号電波のやってくる道筋に、電離層や水蒸気、さらには大気自体などの信号を遅延させる不確定要素があるため。衛星の高度(見かけの角度)が低い場合には影響が大きくなる。また衛星搭載の時計は超精密な原子時計だが、レシーバー内の時計はそんなに精密じゃないので、両者の照合から計算された電波の到達時間もまた精密さに限度がある。その結果レシーバーが表示できるのはピンポイントの位置でなく、「およそこの辺り」という範囲の円になる。
レシーバーの場所と衛星の位置関係によっても精度は左右される。三角測量に使う衛星からの距離データを、カメラの三脚をイメージして考えてみよう。距離が正確でない状態というのは三脚の足が僅かに伸び縮みしてしまうことを想像して欲しい。
三脚の足がすぼまった状態だと、足が僅かに伸び縮みするだけで雲台は大きくグラグラ動いてしまう。足が充分開いているときは、同じだけ伸び縮みしても雲台の動きは小さい。また三脚の足が均等に開いていない(長さが違う状態)ときには、足の長さの変化によって雲台は特定の方向へ動きやすくなる。このことから判るように、レシーバーに捉える衛星の位置関係によって測位精度は大きく変わってしまうのだ。
パラレル(マルチチャンネル)受信
衛星からの信号の受け方に精度が左右されるのなら、どのようにして精度を高めているのだろうか。それには受信の多重化と衛星の取捨選択という方法が使われる。GPSレシーバーは同時に多くの衛星からの信号を受信できる。だから先ほど書いた3つの衛星だけでなく、もっと多くの衛星を測位に活用できる。
多重化とはどういうことか。例えば3つの衛星では三角測量によって1つの測位結果しか得られないが、ひとつ利用できる衛星が増えて4つの衛星の信号を使えるなら、いきなり4つの測位結果を得られる。つまり3個の衛星とレシーバーの関係では1個の三角錐で計算するしかないが、4個の衛星とレシーバーの関係なら一気に4個の三角錐を測位に利用できるからだ。この結果、一度に4つの測位結果(アキュラシーサークル、測位円)が得られ、その円が重なる部分にレシーバーの位置がある、と計算できるわけだ。
この多重化を可能にするのが、同時に複数の衛星を捉えるパラレル(マルチチャンネル)受信。余談だが、多重化(と平均)によって精度を高める手法は、最低限の3個しか衛星を捕捉できない時にも使われる。レシーバーが静止しているときには、連続した複数の測位結果を利用することで精度を高めるのだ。えっ、レシーバーは自分が静止してるかどうかというのを、どうやって判断してるの?と思う人もいるだろう。それは後述します。
逆にレシーバーがたくさんの衛星を捉えている状況では、取捨選択も行われる。同時にできるだけ多くの衛星を使って、沢山の測位結果を平均するのが基本だが、先ほどの三脚の例えでいうと、平均値を求める際に、「良い位置にあって強い信号を出してる」衛星から得られる測位結果にウエイトを置き、「悪い位置にあって計測誤差が大きい」衛星を使った測位結果のウエイトを軽くするわけだ。
GPSレシーバーは「移動」を検出する能力に長けている
GPSレシーバーの第一の役目は「いまどこにいる?」を知らせることだが、もうひとつ重要なことは「どこに向かっている?」を検出すること。実はGPSレシーバーというものは、このレシーバー(ユーザー)の移動方向を検出する能力が極めて高い。レシーバーの移動は方向と速度(さらには加速度も)を持ったベクトルなのだが、最新のGPSレシーバーでは、僅か秒速数10cm程度の動きさえ検出できるのだ。先ほど後述と書いた「レシーバーが静止状態を知ることが出来る」というのは、このGPSレシーバーの小さな動きも検出する優れた機能のおかげ。
ではなぜ、測位精度が最良でも数メートル、悪条件では100メートル以上にもなってしまうGPSレシーバーが、なぜ秒速数10cmの動きを見逃さない精度を持つのか?それは測位は絶対値を求める作業であるのに対し、レシーバーの動き(速度ベクトル)を検知するのは相対値を求める演算だから。演算処理としては「どこ」よりも「どっち」の方が正しい結果を導きやすい。
またGPSレシーバーは測位の際に信号データだけで演算するのでなく、信号の周波数そのものもチェックしている。これは近づいてくる衛星からの電波は周波数が高まり、遠ざかっていく場合には周波数が下がるドップラー効果を利用した仕組み。GPSレシーバーはそれぞれの衛星の軌道情報を受信して計算に利用しているので、その軌道から予想されるドップラー効果による周波数変化と、受信時の周波数変化を比べて演算を助ける。
各GPS衛星はそれぞれ異なる軌道を周回しているので、そこからレシーバーに届く各衛星電波の周波数変化はそれぞれ違う。その差を見て、レシーバーは衛星軌道に対してどの方向に移動しているのかを知ることができる、というのも利用している。
GPSレシーバーはこの「どっち」が正確であるおかげで、少々測位精度が低下しても比較的正しいトラックデータを残すことができるようになっている。なお、話の流れから想像がつくと思うが、レシーバーが移動している状態でないと、「どっち」の精度は上がらない。だからGPSを使ったオリエンテーリングなどでは、ポイントに向かうとき、必ず動きながら方向を確認するという方法が使われるわけだ。
*精度の話はGPSを活用する上で欠かせない話なので、次回もう少し説明しようと思います。
*本項で使用している画像はWikimedia commonsで再使用が許可されているものを利用させていただきました。

0 件のコメント:

コメントを投稿