GNSS(GPS)の測位原理の簡単な解説

GPSの測位原理について知っていますか？
今回は、測位原理について解説したいと思います。
（相対論については詳しくは触れません。ごめんなさい）

## 1. 測位原理

### 1.1. 簡単な測位原理

測位は1つのGPS衛星ではできません。
最低何個のGPS衛星を利用すると測位できるか考えてみましょう。

$i$番目のGPS衛星の位置: $(x_i, y_i, z_i)$【<font color="Red">算出値</font>】
受信者の位置: $(X, Y, Z)$【<font color="Red">未知数</font>】
$i$番目のGPS衛星と受信者間の距離を$r_i$とすると、

$$r_i^2 = (x_i-X)^2 + (y_i-Y)^2 + (z_i-Z)^2 \tag{1}$$
が成り立ちます。

続いて、
$i$番目のGPS衛星が信号を送信した時刻: $t_i$【<font color="Red">計測値</font>】
受信者が$i$番目のGPS衛星が信号を受信した時刻: $T_i$【<font color="Red">計測値</font>】
とすると、

$$r_i = c(T_i - t_i) \tag{2}$$
が成り立ちます。

そして、(1),(2)より$r_i$を消去すると

$$c^2(T_i - t_i)^2 = (x_i-X)^2 + (y_i-Y)^2 + (z_i-Z)^2 \tag{3}$$

未知数は$(X, Y, Z)$の3個であるので、3本の方程式があれば求めることができます。

以上より、3個のGPS衛星があれば、$(X, Y, Z)$が求められそうだとわかります。
ですが、 **実際は3個のGPS衛星だけでは求めることができません。**

![3つの衛星.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712093/2ea8e5cf-a5ae-b33a-31e6-5e8d5e5b5e60.png)

### 1.2. GPSに求められる時刻精度と補正係数

$t_i$と$T_i$について考えます。

衛星に搭載している時計:$t_i$は原子時計であるため、誤差は$1\times10^{-12}$程度です。
対して、受信者側の時計:$T_i$は一般的には水晶振動子が利用されており誤差は$1\times10^{-5}$程度です。

ここで、GPSに求められる時刻精度について考えてみます。

時刻の誤差を$\Delta t$, 位置の誤差を$\Delta x$とすると、

$$\Delta x = \Delta t \cdot c \tag{4}$$

測位精度誤差を3m未満にすると、

$$\Delta t < \frac{\Delta x}  {c} = \frac{3}{3\times 10^8} = 1 \times 10^{-8}  \tag{5}$$

よって、受信者側の時計の時刻: $T_i$の誤差が **大きすぎる** とわかります。
そのため、$T_i$を補正する必要があります。
補正係数を$\delta$【<font color="Red">未知数</font>】とすると、補正後の受信者側の時計の時刻は$T_i+ \delta$と書き直すことができます。
よって、式(3)は

$$c^2(T_i + \delta - t_i)^2 = (x_i-X)^2 + (y_i-Y)^2 + (z_i-Z)^2 \tag{6}$$

となり、未知数が4つに増えたため、最低でも **GPS衛星は4個必要** であることがわかります。

![4つの衛星.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/712093/bdae9983-1917-2077-1e87-4834cfc558a4.png)

### 1.3. 相対論の効果

GPS衛星では相対論の効果により、時間の進み方が地表とは異なるため時刻合わせが必要となります。

詳細は以下を御覧ください。

http://maya.phys.kyushu-u.ac.jp/~knomura/museum/GPS.pdf

## 2. 衛星信号

GPS衛星からは、**航法メッセージ**を**C/Aコード**に乗せ、更にそれを搬送波に乗せた信号が送信されています。
また、衛星信号は、-130dBm程度と微弱です。（1km先のWiFiよりも微弱）
そのため、室内では受信に時間が掛かります。

### 2.1.　航法メッセージ 
航法メッセージには測位準備のための情報が含まれ、**エフェメリス**と**アルマナック**の2種類の情報を持っています。

**エフェメリス**
衛星時刻や、衛星自身の詳細な軌道情報を示します。
30秒周期で送信されます。
情報の有効期間は4時間です。

**アルマナック**
各種補正情報、UTCパラメータ、全ての衛星の大まかな軌道情報を放送しています。
750秒周期で放送されます。
情報の有効期間は6日です。

また、アルマナックとエフェメリスが受信機に残っている状態で起動することを**ホットスタート**、アルマナックのみが残っている状態で起動することを**ウォームスタート**、どちらもない状態で起動することを **コールドスタート**といいます。

コールドスタートの場合、アルマナックが750秒周期であるため測位開始まで最大750秒要します。

:::note info
スマートフォンなどは、電話回線やネットワーク回線などを介しサーバから航法メッセージをダウンロードするため、測位開始までの時間を短縮することができます。
この機能をアシストGPS(A-GPS)といいます。
:::

### 2.2.　C/Aコード

C/Aコードは、1023bitの疑似乱数列であり、この情報を基に遅延時間を測定し、衛星との距離を求めます。
1ms周期で送信されます。

## 3. Spresenseによる測定実験

spresenseを用いてGPS信号の受信実験をしてみます。
gps受信サンプルが用意されているので利用します。

### 3.1. 測定結果
室内で測定を行いました。
（後で書く）

### 3.2. 参考値 
ドキュメントに記載されている測定開始までに掛かる時間を示します。

| **モード**  | **初期位置算出時間** |
|:--------:|:-------------:|
| コールドスタート | > 45 sec      |
| ウォームスタート  | > 20 sec      |
| ホットスタート  | >= 1 sec      |


## 参考文献

https://www.jaxa.jp/countdown/f18/overview/gps_j.html

https://www.denshi.e.kaiyodai.ac.jp/wp-content/uploads/pdf/investigation/030812.pdf

https://www.furuno.com/jp/gnss/technical/glossary

https://note.com/tonnkkn/n/n545bbb0bb70e

https://gnss-learning.org/wp-content/uploads/2023/12/GNSS%E5%8F%97%E4%BF%A1%E6%A9%9F%E3%81%AE%E6%A6%82%E8%A6%81%E3%80%80%EF%BC%88%E3%80%80I%E3%80%80%E3%82%A2%E3%83%B3%E3%83%86%E3%83%8A%E4%BF%A1%E5%8F%B7%E5%85%A5%E5%8A%9B%E3%81%8B%E3%82%89%E3%80%81%E6%93%AC%E4%BC%BC%E8%B7%9D%E9%9B%A2%E5%87%BA%E5%8A%9B%E3%81%BE%E3%81%A7%EF%BC%89.pdf