# GNSS 수신기 설계 및 기술

#### GNSS 수신기 구성 요소

GNSS 수신기는 위성에서 전송된 신호를 수신하고, 이를 처리하여 위치, 속도, 시간 정보를 산출하는 장치이다. 기본적으로 GNSS 수신기는 다음과 같은 주요 구성 요소로 이루어져 있다:

1. **안테나**
   * GNSS 신호를 수신하는 부분으로, 신호의 강도를 극대화하기 위해 설계된다. 다양한 환경에서의 신호 수신을 고려하여 다중 경로(Multipath)를 줄이고, 잡음 대비 신호비(Signal-to-Noise Ratio, SNR)를 높이는 역할을 한다.
2. **RF 전처리기**
   * 위성에서 수신한 고주파(RF) 신호를 저주파로 변환하고, 필터링하여 유효 신호를 추출하는 역할을 한다. 일반적으로 대역통과 필터와 증폭기를 포함하고 있으며, 수신된 신호에서 잡음을 제거하는 것이 중요하다.
3. **신호 처리부**
   * 수신된 신호는 디지털 신호로 변환된 후 다양한 신호 처리 과정을 거친다. 이 과정에서는 주로 코드 및 반송파 동기화, 획득, 추적 과정이 포함된다. 수학적으로 GNSS 신호는 아래와 같은 식으로 표현된다:

$$
\mathbf{r}(t) = \mathbf{s}(t) + \mathbf{n}(t)
$$

여기서 $\mathbf{r}(t)$는 수신된 신호, $\mathbf{s}(t)$는 위성으로부터의 신호, 그리고 $\mathbf{n}(t)$는 잡음 신호이다. GNSS 수신기는 이 잡음 성분을 제거하여 신호 $\mathbf{s}(t)$를 정확하게 추출하는 과정을 거친다.

4. **베이스밴드 처리기**
   * 디지털 신호로 변환된 GNSS 신호를 기반으로, 각 위성의 의사난수(PRN) 코드를 비교하여 신호를 동기화하는 과정이다. 이는 수신된 신호에서 시간 지연 및 도플러 주파수 이동을 계산하는 데 중요한 과정이다.
5. **측위 알고리즘**
   * 수신된 신호를 바탕으로 위성으로부터의 거리 정보를 계산하고, 이를 이용하여 위치를 추정한다. 기본적으로 삼각측량 기법이 적용되며, 위치 계산은 아래와 같은 방정식을 풀어야 한다:

$$
\mathbf{d}\_i = \sqrt{(x - x\_i)^2 + (y - y\_i)^2 + (z - z\_i)^2} + c \cdot \delta t
$$

여기서 $\mathbf{d}\_i$는 $i$-번째 위성으로부터의 거리, $(x\_i, y\_i, z\_i)$는 $i$-번째 위성의 좌표, $(x, y, z)$는 수신기의 위치, $c$는 빛의 속도, 그리고 $\delta t$는 수신기의 시계 오차이다.

#### 안테나 설계

GNSS 수신기의 성능은 안테나 설계에 크게 의존한다. GNSS 안테나는 위성에서 수신된 미약한 신호를 최대한 효율적으로 수집해야 하므로, 다음과 같은 사항을 고려하여 설계된다.

1. **이득**
   * 안테나의 이득은 특정 방향에서 신호를 얼마나 효율적으로 수신할 수 있는지를 나타내는 지표이다. GNSS 수신기의 경우, 모든 방향에서 신호를 수신할 수 있도록 전방위성(Omni-directional) 이득이 필요하다. 하지만, 동시에 고층 건물이나 다른 물체로 인해 발생하는 다중 경로 신호를 억제해야 하기 때문에, 다중 경로 저감 특성을 가진 안테나 설계가 필요하다.
2. **편파**
   * GNSS 신호는 원형 편파(Circular Polarization)로 전송되므로, 수신 안테나도 이에 맞춰 원형 편파 안테나가 필요하다. 일반적으로 우회전 원형 편파(Right-Hand Circular Polarization, RHCP)를 사용하여 위성 신호를 수신한다.
3. **다중 경로 억제**
   * 도시 환경에서는 빌딩이나 다른 구조물에 반사된 신호가 수신기에 들어오는 다중 경로(Multipath) 현상이 발생한다. 이로 인해 위치 계산에 오차가 생길 수 있기 때문에, 이를 줄이기 위한 안테나 설계가 필요하다. 예를 들어, 고정밀 GNSS 수신기에서는 고이득 빔 안테나를 사용하여 다중 경로 신호를 억제하고, 정확도를 높인다.

#### RF 전처리기 설계

RF 전처리기는 수신된 고주파 신호를 저주파로 변환하고, 필요한 신호만을 남겨두기 위한 필터링 및 증폭 작업을 수행한다. 이 과정에서 고려해야 할 주요 사항은 다음과 같다:

1. **저잡음 증폭기 (Low Noise Amplifier, LNA)**
   * GNSS 신호는 매우 미약하기 때문에 수신기에서 신호를 증폭해야 한다. 하지만 잡음까지 함께 증폭되지 않도록 저잡음 증폭기를 사용하는 것이 중요하다. LNA의 이득 및 잡음 지수는 신호 품질에 직접적인 영향을 미치며, 수신기의 성능을 결정짓는 중요한 요소이다.
2. **믹서 (Mixer)**
   * 수신된 고주파 신호를 저주파로 변환하기 위해 믹서를 사용한다. 믹서는 두 개의 주파수를 곱하여 새로운 주파수 성분을 생성하며, 이는 아래와 같은 수식으로 표현할 수 있다:

$$
\mathbf{f}*{\text{IF}} = \mathbf{f}*{\text{RF}} - \mathbf{f}\_{\text{LO}}
$$

여기서 $\mathbf{f}*{\text{IF}}$는 중간 주파수(IF), $\mathbf{f}*{\text{RF}}$는 수신된 RF 주파수, $\mathbf{f}\_{\text{LO}}$는 로컬 오실레이터(LO)의 주파수이다. 믹서 설계에서는 변환 손실과 혼합의 비선형성을 최소화하는 것이 중요하다.

3. **필터링**
   * 수신된 신호에는 GNSS 신호 외에도 다양한 잡음 및 간섭 신호가 포함될 수 있다. 이러한 잡음 신호를 제거하기 위해 대역통과 필터를 사용하여 유효한 주파수 대역의 신호만을 통과시킨다. GNSS 수신기의 경우, L1, L2, L5 등의 다양한 주파수 대역을 지원하기 때문에 필터 설계가 매우 중요하다.

#### 신호 처리부 설계

GNSS 수신기에서 신호 처리부는 수신된 신호를 분석하고, 필요한 데이터를 추출하는 중요한 단계이다. 신호 처리부 설계는 특히 다음과 같은 요소들을 고려해야 한다:

1. **코드 획득 (Code Acquisition)**\
   GNSS 수신기는 위성 신호를 수신한 후, 수신된 신호와 각 위성의 의사 난수(PRN) 코드를 비교하여 해당 위성의 신호를 획득한다. 코드 획득 과정에서는 신호와 PRN 코드의 상관성을 최대화하는 것이 중요하다. 획득 과정은 주로 상관 함수 $R(\tau)$를 계산하여 이루어지며, 이는 다음과 같이 표현된다:

$$
R(\tau) = \int\_0^T \mathbf{s}(t) \cdot \mathbf{c}(t - \tau) , dt
$$

여기서 $\mathbf{s}(t)$는 수신된 신호, $\mathbf{c}(t)$는 PRN 코드, $\tau$는 시간 지연, $T$는 상관 함수 계산 시간이다. 최대 상관성을 가지는 $\tau$ 값을 찾으면, 해당 위성의 신호를 정확하게 획득할 수 있다.

2. **코드 및 반송파 추적 (Code and Carrier Tracking)**\
   코드 획득 이후에는 해당 위성 신호를 지속적으로 추적해야 한다. 이를 위해 코드와 반송파의 동기화가 필요하며, 다음과 같은 신호 모델을 사용하여 추적을 수행한다:

$$
\mathbf{r}(t) = \mathbf{A} \cos\left( 2 \pi \mathbf{f}\_c t + \theta \right) \cdot \mathbf{c}(t - \tau)
$$

여기서 $\mathbf{A}$는 신호의 진폭, $\mathbf{f}\_c$는 반송파 주파수, $\theta$는 위상, $\mathbf{c}(t)$는 의사 난수 코드이다. 반송파 추적을 위해 위상 동기 루프(PLL: Phase Locked Loop)와 주파수 동기 루프(FLL: Frequency Locked Loop)를 사용하여, 반송파의 주파수와 위상을 추적한다.

3. **도플러 주파수 보정**\
   위성과 수신기 사이의 상대적인 움직임에 의해 발생하는 도플러 효과를 보정해야 한다. 도플러 효과는 위성의 속도 $\mathbf{v}\_s$와 수신기의 속도 $\mathbf{v}\_r$에 의해 결정되며, 도플러 주파수는 다음과 같은 식으로 계산된다:

$$
\mathbf{f}\_{\text{Doppler}} = \frac{1}{\lambda} \left( \mathbf{v}\_r - \mathbf{v}\_s \right) \cdot \hat{\mathbf{d}}
$$

여기서 $\lambda$는 신호의 파장, $\hat{\mathbf{d}}$는 위성에서 수신기로 향하는 단위 벡터이다. 이 보정이 정확하지 않으면, 추적 과정에서 큰 오차가 발생할 수 있다.

4. **다중 경로 문제**\
   도시 환경이나 실내에서는 신호가 건물이나 물체에 반사되어 다중 경로가 발생할 수 있다. 이는 수신 신호에 추가적인 지연을 발생시키며, 위치 계산에 오차를 일으킨다. 다중 경로 문제를 해결하기 위해 GNSS 수신기는 다중 경로 신호를 억제하는 다양한 필터링 및 신호 처리 기법을 사용한다.

#### 베이스밴드 처리기 설계

베이스밴드 처리기는 디지털 신호로 변환된 GNSS 신호에서 시간을 정확하게 동기화하는 중요한 단계이다. 이를 위해 위성 신호의 PRN 코드를 기반으로 신호를 추적하고, 각 위성으로부터 수신된 신호의 도착 시간을 계산한다.

1. **코드 동기화**\
   위성 신호는 의사 난수(PRN) 코드로 변조되어 전송되므로, 수신기에서는 수신된 신호와 PRN 코드를 동기화해야 한다. 이는 다음과 같은 상관식으로 표현된다:

$$
\mathbf{R}(\tau) = \sum\_{n=0}^{N-1} \mathbf{r}(n) \cdot \mathbf{c}(n - \tau)
$$

여기서 $N$은 샘플 수, $\mathbf{r}(n)$은 수신된 신호 샘플, $\mathbf{c}(n)$은 PRN 코드이다. 이 상관식을 통해 동기화된 신호의 도착 시간을 계산할 수 있다.

2. **반송파 동기화**\
   PRN 코드 동기화 후에는 반송파 신호를 동기화하여 위성 신호의 주파수 및 위상을 정확하게 추적해야 한다. 이를 위해 수신기는 주로 PLL과 FLL을 사용하여 반송파 신호를 추적하며, 정확한 신호 처리에 필요한 시간 정보를 추출한다.
3. **지연 고정 루프 (Delay Lock Loop, DLL)**\
   지연 고정 루프는 PRN 코드의 동기화를 지속적으로 유지하기 위해 사용된다. 수신된 신호와 내부적으로 생성한 PRN 코드의 상관성을 비교하여 미세한 시간 차이를 보정한다. DLL은 다음과 같은 식으로 표현될 수 있다:

$$
\mathbf{E} = \frac{1}{T} \int\_0^T \left( \mathbf{r}(t) \cdot \mathbf{c}(t - \tau + \Delta) - \mathbf{r}(t) \cdot \mathbf{c}(t - \tau - \Delta) \right) dt
$$

여기서 $\Delta$는 지연된 신호와 앞서간 신호 사이의 시간 차이, $\mathbf{E}$는 이 두 신호의 상관 값 차이이다. 이 값을 최소화하는 방향으로 PRN 코드를 조정하여 정확한 시간 동기화를 유지한다.

#### 측위 알고리즘 설계

GNSS 수신기의 측위 알고리즘은 수신된 신호를 바탕으로 위성과의 거리를 계산하고, 이를 통해 수신기의 위치를 추정하는 중요한 과정이다. 이 과정은 다음과 같은 단계로 이루어진다:

1. **삼각측량 (Trilateration)**\
   수신기가 최소 4개의 GNSS 위성으로부터 신호를 수신하여, 각 위성으로부터의 거리를 계산한다. 각 위성으로부터의 거리는 다음과 같은 식으로 표현된다:

$$
\mathbf{d}\_i = \sqrt{(x - x\_i)^2 + (y - y\_i)^2 + (z - z\_i)^2} + c \cdot \delta t
$$

여기서:

* $\mathbf{d}\_i$: $i$-번째 위성으로부터의 거리
* $(x, y, z)$: 수신기의 위치
* $(x\_i, y\_i, z\_i)$: $i$-번째 위성의 위치
* $c$: 빛의 속도
* $\delta t$: 수신기의 시계 오차

이 방정식들을 풀어 수신기의 위치 $(x, y, z)$와 시계 오차 $\delta t$를 추정한다. 수학적으로, 이 방정식들은 비선형이기 때문에, 적절한 수치 해법을 통해 해결해야 한다.

2. **확장 칼만 필터 (Extended Kalman Filter, EKF)**\
   GNSS 수신기의 위치 추정 문제는 비선형 문제이므로, 확장 칼만 필터(EKF)를 적용하여 수신기의 상태(위치, 속도, 시계 오차 등)를 추정한다. EKF는 비선형 시스템에 적용되며, 시스템 모델을 선형화한 후 칼만 필터를 적용한다.
   * **상태 벡터 $\mathbf{x}(t)$**:

$$
\mathbf{x}(t) = \begin{bmatrix} x(t) \ y(t) \ z(t) \ v\_x(t) \ v\_y(t) \ v\_z(t) \ \delta t(t) \end{bmatrix}
$$

```
 여기서 $x(t), y(t), z(t)$는 수신기의 위치, $v_x(t), v_y(t), v_z(t)$는 수신기의 속도, $\delta t(t)$는 시계 오차이다.
```

* **상태 방정식**:\
  수신기의 상태는 다음과 같은 상태 방정식으로 표현된다:

$$
\mathbf{x}(t+1) = \mathbf{F}(t) \mathbf{x}(t) + \mathbf{G}(t) \mathbf{u}(t) + \mathbf{w}(t)
$$

```
 여기서 $\mathbf{F}(t)$는 상태 전이 행렬, $\mathbf{G}(t)$는 입력 행렬, $\mathbf{u}(t)$는 시스템 입력, $\mathbf{w}(t)$는 잡음 성분이다.
```

* **관측 방정식**:\
  관측 방정식은 위성으로부터 수신된 거리 정보를 기반으로 하며, 다음과 같이 표현된다:

$$
\mathbf{z}(t) = \mathbf{h}(\mathbf{x}(t)) + \mathbf{v}(t)
$$

```
 여기서 $\mathbf{h}(\mathbf{x}(t))$는 비선형 관측 함수로, 수신기의 위치와 위성으로부터의 거리를 나타내며, $\mathbf{v}(t)$는 관측 잡음이다.
```

EKF의 과정은 예측 단계와 갱신 단계로 나뉘며, 각각 아래와 같은 식을 따른다.

* **예측 단계**:

$$
\hat{\mathbf{x}}(t+1) = \mathbf{F}(t) \hat{\mathbf{x}}(t) + \mathbf{G}(t) \mathbf{u}(t)
$$

$$
\mathbf{P}(t+1) = \mathbf{F}(t) \mathbf{P}(t) \mathbf{F}^T(t) + \mathbf{Q}(t)
$$

```
 여기서 $\mathbf{P}(t)$는 오차 공분산 행렬, $\mathbf{Q}(t)$는 시스템 노이즈 공분산 행렬이다.
```

* **갱신 단계**:

$$
\mathbf{K}(t) = \mathbf{P}(t+1) \mathbf{H}^T(t) \left( \mathbf{H}(t) \mathbf{P}(t+1) \mathbf{H}^T(t) + \mathbf{R}(t) \right)^{-1}
$$

$$
\hat{\mathbf{x}}(t+1) = \hat{\mathbf{x}}(t+1) + \mathbf{K}(t) \left( \mathbf{z}(t) - \mathbf{h}(\hat{\mathbf{x}}(t+1)) \right)
$$

$$
\mathbf{P}(t+1) = \left( \mathbf{I} - \mathbf{K}(t) \mathbf{H}(t) \right) \mathbf{P}(t+1)
$$

```
 여기서 $\mathbf{K}(t)$는 칼만 이득, $\mathbf{R}(t)$는 관측 잡음 공분산 행렬이다.
```

3\. **위치 보정**\
수신된 신호로부터 계산된 위치 정보는 다양한 오차 요인들로 인해 정확도가 떨어질 수 있다. GNSS 수신기에서는 이러한 오차를 보정하기 위해, 시계 오차, 대기권 및 전리층의 영향을 고려하여 위치를 보정한다. 이를 위해 차분 GPS(DGPS)와 같은 보정 기술을 사용할 수 있다.

4. **속도 계산**\
   GNSS 수신기는 위치뿐만 아니라, 위성 신호를 이용하여 수신기의 속도 정보도 추정할 수 있다. 이는 반송파의 도플러 효과를 이용하여 계산되며, 다음과 같은 식으로 표현된다:

$$
v = \frac{f\_{\text{doppler}} \cdot \lambda}{2}
$$

여기서 $v$는 수신기의 속도, $f\_{\text{doppler}}$는 도플러 주파수 변이, $\lambda$는 신호의 파장이다.
