GPS測位の仕組み(三点測量)
距離を半径とする円(球)の交点を求めるだけで、地上の位置が一点に定まる幾何学
- 1
- GPSは、複数の衛星から受信機までの距離(電波の到達時間 × 光速)を測定し、各衛星を中心とする「距離circle」の交点として受信機の位置を求める(トリラテレーション、三点測量)
- 2
- 平面(2次元)上で位置を一意に決めるには、距離の情報だけでは円の交点が2つ生じてしまうため、最低3つの衛星(3つの円)からの距離情報が必要になる
- 3
- 実際のGPSは3次元空間+時刻のずれ(受信機の時計誤差)という4つの未知数を持つため、通常4機以上の衛星からの信号を使って連立方程式を解いている
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
GPSは、複数の衛星から受信機までの距離(電波の到達時間 × 光速)を測定し、各衛星を中心とする「距離circle」の交点として受信機の位置を求める(トリラテレーション、三点測量)
身につく武器・思考力
平面(2次元)上で位置を一意に決めるには、距離の情報だけでは円の交点が2つ生じてしまうため、最低3つの衛星(3つの円)からの距離情報が必要になる
実社会・ITでの活躍現場
- •GPS受信機における2次元トリラテレーション(三点測量)の位置計算
- •ITシステム・アルゴリズム実装における論理設計
- •データ分析やシミュレーションにおける数理モデリング
Layer 1 — 直感・シミュレーター
3つの「衛星」の点をドラッグして自由に配置し、それぞれの半径(測定距離)もスライダーで調整してみよう。各衛星を中心とする円が描かれ、3つの円が重なる1点(受信機の推定位置、緑の点)がリアルタイムに計算・表示される。衛星を2個だけに減らすモードに切り替えると、円の交点が2つ残ってしまい位置が一意に定まらない様子も確認できる。
3つの円の連立方程式 を解いて、緑の点として一意に求まっています。
↑ GPSは衛星からの距離を半径とする円(実際は3次元の球)の交点を求めるトリラテレーション(三点測量)で位置を計算します。平面上で一意に位置を決めるには最低3つの距離情報が必要です。
平面(2次元)上で、GPS受信機の位置をただ一点に絞り込むために、原理的に最低何個の衛星(距離情報)が必要か?
Layer 2 — 定義・受験・証明
定義
衛星 の位置を 、その衛星から受信機 までの測定距離を とすると、三平方の定理(距離公式)より次の関係が成り立つ。
これは中心 、半径 の円の方程式であり、受信機の位置 はこの円周上のどこかにある。複数の衛星から得られる円の方程式を連立させ、共通の交点を求める処理が「トリラテレーション(三点測量)」である。
公式・数理モデル
証明・導出
非線形の連立方程式を線形化して解く導出: 3つの円の方程式は
このままでは の項を含む非線形の連立方程式だが、式(2)から式(1)を引くと、 の項が完全に相殺される。
展開すると、
これは に関する「線形」な直線の方程式である(幾何学的には、2つの円の交点を結ぶ直線=根軸に対応する)。同様に式(3)から式(1)を引くともう1本の線形な直線の方程式が得られる。 この2本の連立一次方程式を行列表示すると上記の公式のようになり、逆行列(またはクラメルの公式)を用いて を一意に解くことができる。
【なぜ2個の円では一意に決まらないか】 円1個の情報だけでは、条件を満たす点は円周上の無限個。円2個(式(1)(2))を連立させると、上記の引き算により得られる1本の直線と、元の円1個との交点を求めることになり、直線と円は一般に2点で交わる(2次方程式の解が2つ)。この2つの交点のどちらが正しい受信機位置かを絞り込むために、3個目の円(衛星)の情報が必要になる。
押さえておきたいポイント
- GPSでは実際には距離ではなく電波の「到達時間」を測定するため、光速 を用いて と変換している
- 受信機の時計は衛星の原子時計ほど正確ではないため、時刻のずれ という4つ目の未知数が加わり、3次元位置 と合わせて未知数は4つになる。そのため実運用では4機以上の衛星が必要
- この「複数の距離(円・球)の交点から位置を求める」手法はトリラテレーション(trilateration)と呼ばれ、角度を使う三角測量(triangulation)とは区別される
- Wi-Fi測位やインドアの音波・電波を使った位置推定(UWB測位など)にも同じトリラテレーションの数学が応用されている
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
GPS受信機における2次元トリラテレーション(三点測量)の位置計算
3つの衛星(基準点)の座標と、それぞれから受信機までの測定距離をもとに、円の方程式の差分をとって線形連立方程式に帰着させ、受信機の推定位置を計算する簡略化されたトリラテレーション実装。
1type Point = { x: number; y: number };23// 3つの衛星の位置と、そこから受信機までの測定距離からトリラテレーションで位置を推定4function trilaterate(5 p1: Point, d1: number,6 p2: Point, d2: number,7 p3: Point, d3: number8): Point {9 // 円の方程式の差分をとり、線形連立方程式 A * [x, y]^T = b に帰着10 const A11 = 2 * (p2.x - p1.x);11 const A12 = 2 * (p2.y - p1.y);12 const A21 = 2 * (p3.x - p1.x);13 const A22 = 2 * (p3.y - p1.y);1415 const b1 =16 d1 ** 2 - d2 ** 2 - p1.x ** 2 + p2.x ** 2 - p1.y ** 2 + p2.y ** 2;17 const b2 =18 d1 ** 2 - d3 ** 2 - p1.x ** 2 + p3.x ** 2 - p1.y ** 2 + p3.y ** 2;1920 // クラメルの公式で2元連立一次方程式を解く21 const det = A11 * A22 - A12 * A21;22 if (Math.abs(det) < 1e-9) {23 throw new Error("衛星が一直線上にあり、位置を一意に決定できません");24 }2526 const x = (b1 * A22 - b2 * A12) / det;27 const y = (A11 * b2 - A21 * b1) / det;28 return { x, y };29}3031// 例: 3つの衛星(基準局)の座標と測定距離32const satelliteA: Point = { x: 0, y: 0 };33const satelliteB: Point = { x: 10, y: 0 };34const satelliteC: Point = { x: 5, y: 10 };3536const receiverPosition = trilaterate(37 satelliteA, 7.07,38 satelliteB, 7.07,39 satelliteC, 7.0740);4142console.log(`推定受信機位置: (${receiverPosition.x.toFixed(2)}, ${receiverPosition.y.toFixed(2)})`);
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元