# 궤도 정보(Almanac, Ephemeris)의 활용

#### 개요

GNSS 위성에서 제공되는 궤도 정보는 크게 Almanac과 Ephemeris로 구분된다. 사용자 단말은 이 궤도 정보를 참조하여 위성의 예상 위치 및 궤도 이동 특성을 파악하고, 이를 통해 정확한 위치측정을 수행한다. 일반적으로 Almanac은 오차 허용 범위가 큰 대략적인 궤도 정보를, Ephemeris는 매우 정밀한 실시간 궤도 정보를 제공한다.

#### Almanac의 특징과 활용

* **개념**: Almanac은 모든 GNSS 위성에 대한 저해상도 궤도 정보를 담고 있는 데이터 세트로서, 수 시간에서 수 일 정도의 유효기간을 가지며 비교적 크기가 작다.
* **전달 경로**: 시스템 측면에서 Almanac은 매 메시지 주기마다 반복적으로 브로드캐스팅되어 모든 GNSS 수신기가 해당 정보를 얻을 수 있도록 한다.
* **활용 목적**: 사용자 단말이 초기 검색(Cold Start)을 수행할 때, 어떤 위성이 관측 가능한 범위 내에 있는지를 판단하기 위해 사용된다. 즉, 첫 획득 과정에서 유효 궤도 정보를 빠르게 로드함으로써 검색 시간을 단축시키는 데 도움을 준다.
* **정확도 제한**: Almanac은 시간에 대한 오차 보정값과 세밀한 궤도 매개변수가 충분하지 않으므로, 실시간 고정밀 측위를 위해서는 Ephemeris가 필수적이다.

#### Ephemeris의 특징과 활용

* **개념**: Ephemeris는 GNSS 위성 1기당 매우 정밀하게 계산된 궤도 파라미터로서, 일반적으로 2시간에서 4시간 정도의 유효기간을 갖는다.
* **데이터 구성**: 각 위성에 대해 위성 궤도력학 모델이 반영된 캘린더 시각(Epoch), 편심(eccentricity), 준지구 반경(semi-major axis), 기울기(inclination), 승교점 적경(right ascension of ascending node) 등 다양한 궤도 요소를 포함한다.
* 활용 목적:
  1. **정밀 위치 계산**: Ephemeris 정보를 이용하여 위성의 정확한 위치 $\mathbf{r}\_s(t)$를 구한다.
  2. **실시간 오차 보정**: 전리층·대류권 지연과 같은 효과를 보정하기 위한 보정 파라미터들도 Ephemeris에 함께 포함되는 경우가 많다.
* **수신 방식**: 위성 신호에 포함된 네비게이션 메시지를 일정 시간 이상 수신함으로써 Ephemeris를 획득하게 된다.

#### Almanac과 Ephemeris의 관계

Almanac은 모든 위성에 대한 대략적인 궤도 정보를, Ephemeris는 특정 위성 1기에 대한 정밀 궤도 정보를 제공한다. 초기 위성 획득 시에는 상대적으로 간략한 Almanac을 참고해 어떤 위성이 관측 가능할지 유추하고, 이후 각 위성으로부터 Ephemeris를 수신하여 실제 측위를 진행한다.

#### 위성 궤도 벡터 표현

Ephemeris의 각 매개변수를 이용해 특정 시각 $t$에 대한 위성의 3차원 좌표 $\mathbf{r}\_s(t)$를 계산할 수 있다. 예를 들어, 각 위성 궤도 파라미터를 통해 얻은 위성의 궤도 좌표계를 지구 중심 좌표계(ECEF)로 변환하면, 아래와 같은 형식으로 표현된다.

$$
\mathbf{r}\_s(t)  =  \begin{bmatrix} x\_s(t) \ y\_s(t) \ z\_s(t) \end{bmatrix}
$$

이때 $x\_s(t), y\_s(t), z\_s(t)$는 시각 $t$에서 위성의 지구 중심 기준 좌표이며, Ephemeris에 포함된 천문력학 인자들과 지구 중력 계수 등을 종합적으로 계산해 산출한다.

#### 궤도 요소로부터 위성 좌표 계산 개념도 (예시)

아래 다이어그램은 Ephemeris를 이용한 위성 좌표 계산 과정을 간단히 나타낸다.

{% @mermaid/diagram content="flowchart TB
A\["Ephemeris<br> (궤도 요소, 시차, 보정 파라미터)"] --> B\["위성 궤도 식<br> (케플러 방정식, 보정항)"]
B --> C\["위성 궤도 좌표 (기본 궤도면)"]
C --> D\["지구 중심 좌표계(ECEF)로 변환"]
D --> E\["최종 위성 위치<br>x\_s(t), y\_s(t), z\_s(t)"]" %}

#### Ephemeris에 포함된 주요 매개변수 예시

* **반장축(semi-major axis, $a$)**: 타원궤도의 크기를 결정한다.
* **편심($e$)**: 궤도의 찌그러짐 정도를 결정한다.
* **참근점이각(argument of perigee, $\omega$)**: 궤도 상에서 근지점을 정의하는 각도.
* **승교점 적경($\Omega$)**: 위성이 궤도면에서 적도면을 북쪽 방향으로 통과할 때의 적경.
* **기울기($i$)**: 궤도면이 적도면에 대해 기울어진 각도.

이들 매개변수를 통해 케플러 궤도 식을 비롯한 오비트 메커니즘을 적용하면, 특정 시각 $t$에 위성의 위치 벡터 $\mathbf{r}\_s(t)$를 결정할 수 있다.

#### Ephemeris 수신과 데이터 포맷

* **수신 방법**: 위성에서 전송되는 내비게이션 메시지에 Ephemeris 파라미터가 포함되어 있으며, 수신기에서 일정 기간(대략 30초\~2분 정도) 신호를 수신하여 이를 추출한다.
* **갱신 간격**: Ephemeris는 일반적으로 2시간에서 4시간 주기로 새롭게 업데이트되어 전송된다. 다만, 그 사이에 위성 궤도 또는 클록(clock) 상태가 급격히 변하지 않는다면, 기존 Ephemeris도 유효하게 사용 가능하다.
* **데이터 필드**: GPS 예시로 보면, Week Number, SV Accuracy, SV Health, IODE (Issue of Data Ephemeris), TOC (Clock Data Reference Time), Clock Correction 계수($a\_f0$, $a\_f1$, $a\_f2$), 궤도 파라미터(반장축, 편심, 기울기, 승교점 적경 등)와 각종 보정항 등을 포함한다.

#### Ephemeris를 이용한 시간 보정

위치 계산 과정에서 위성 시계(clock)와 수신기 시계 사이의 오차를 보정하는 것이 중요하다. 이를 위해 Ephemeris 내에는 다음과 같은 시간 보정 정보가 포함된다.

* **위성 시계 오프셋($a\_{f0}$)**: 위성 시간 기준과 GNSS 시스템 시간(GPS Time 등) 사이의 기본 편차를 나타낸다.
* **위성 시계 드리프트($a\_{f1}$)**: 시간 경과에 따른 위성 시계 주파수 편차를 나타낸다.
* **드리프트 가속도($a\_{f2}$)**: 드리프트의 가속도 성분으로, 일반적으로 매우 작지만 정밀 보정에서는 무시할 수 없는 경우가 있다.

이를 통해 시각 $t$에서의 위성 시계 보정항 $\Delta t\_s(t)$를 아래와 같이 계산한다.

$$
\Delta t\_s(t)  =  a\_{f0}  +  a\_{f1},(t - t\_\text{oc})  +  a\_{f2},(t - t\_\text{oc})^2
$$

여기서 $t\_\text{oc}$는 Ephemeris에서 정의된 기준 시각(TOC)이다.

#### 위성 궤도 전파 모델

Ephemeris에 포함된 케플러 기반 궤도 요소와 보정 인자를 사용하면, 다음과 같은 절차를 통해 특정 시각 $t$에 위성의 위치를 계산한다.

1. **평균 근점 이동량($\dot{n}$) 보정**
   * 기준 궤도 주기, 지구 중력 계수 등을 반영하여 위성의 평균 운동을 결정하고, 궤도 편차를 고려해 보정값을 더한다.
2. **평균 근점이각($M(t)$) 계산**

   * 기준 시간 $t\_0$에서의 평균 근점이각 $M\_0$와 평균 운동량($n$)을 이용해 시각 $t$에 대한 $M(t)$를 구한다.

   $$
   M(t) = M\_0 + n ,(t - t\_0)
   $$

   **편심 이각($E$) 계산**

   * 케플러 방정식인

   $$
   E - e \sin E = M(t)
   $$

   을 수치 기법(예: 반복법)으로 풀어 $E$를 찾는다. 여기서 $e$는 궤도 편심이다.
3. **진근점이각($\nu$) 계산**
   * 편심 이각 $E$를 통해 타원 상의 실제 위성 위치각(진근점이각) $\nu$를 얻는다.

     $$
     \tan \nu  =  \frac{\sqrt{1 - e^2} ,\sin E}{\cos E - e}
     $$
4. **궤도 상 좌표 변환**
   * 위성 궤도의 타원면에서의 위치를 구하고, 궤도면(orbital plane)과 지구 중심 좌표계(ECEF) 간 회전 변환을 거쳐 최종적으로 $\mathbf{r}\_s(t)$를 산출한다.
   * 예시로, 궤도면에서의 위성 위치 $\mathbf{r}*\text{orb}(t)$를 다음과 같이 나타낼 수 있다. $\mathbf{r}*\text{orb}(t) = \begin{bmatrix} r \cos u \ r \sin u \ 0 \end{bmatrix}$ 여기서 $r$은 순간적 위성-지구 중심 거리, $u$는 보정된 궤도상 위상 각(진근점이각과 $\omega$ 등을 합산한 값)이다.
5. **지구 중심 좌표계(ECEF) 변환**
   * 궤도면을 적도면에 정렬하기 위해, 기울기 $i$와 승교점 적경 $\Omega$, 참근점이각 $\omega$ 등을 고려한 3차원 회전행렬을 적용한다.

이 과정을 통해 구해진 $\mathbf{r}\_s(t)$는 측위 연산에 투입되어 사용자 위치 추정을 위한 기저가 된다.

#### Ephemeris의 오차 요인

Ephemeris는 현실적인 여러 오차 소스를 안고 있다.

* **지구 중력장 모델의 불완전성**: 실제 지구는 완벽한 구형이 아니며, 비균질한 질량분포와 자전, 지조 운동 등이 궤도 추정에 오차를 야기한다.
* **태양·달 중력 영향**: GPS 위성 궤도에는 태양과 달의 중력 효과도 무시할 수 없는 수준으로 작용한다.
* **태양 복사압**: 위성 본체가 태양 복사압을 받으면 궤도에 미세한 편차가 발생한다.
* **위성 클록 모델 부정확성**: 위성에 탑재된 원자시계도 장기적으로 보면 조금씩 드리프트가 발생하며, 이로 인해 오차가 누적될 수 있다.

#### Almanac과 Ephemeris 데이터의 관측 가시성 관리

* 초기 획득(Cold Start)에서의 활용:
  * **Almanac**을 통해 대략적인 궤도 정보를 얻으면, 수신기가 현재 시점에서 볼 수 있는 후보 위성 목록을 빠르게 도출할 수 있다.
  * 이후 각 후보 위성으로부터 **Ephemeris**를 수신하여 정밀 측위에 필요한 궤도 파라미터를 획득한다.
* Warm Start:
  * 이미 이전에 수신한 Almanac, Ephemeris 정보를 일부 보유한 상태에서 재시작할 경우, (현재 시점에 비해) 오래되지 않은 Ephemeris가 있다면 이를 우선 활용한다.
  * Ephemeris가 유효 범위를 벗어났더라도, Almanac을 토대로 빠르게 새로운 Ephemeris를 획득할 수 있다.

#### 위성 궤도 예측과 Almanac, Ephemeris의 차이

* Almanac 기반 예측
  * 큰 오차 허용범위 내에서 모든 위성의 거친 궤도 정보를 얻는다.
  * 해당 정보를 통해 미래 일정 시간 범위의 위성 분포(가시성)를 미리 파악할 수 있다.
  * 초기 획득 시간 단축에 효과적이나, 정밀한 레벨의 위치 계산에는 적합하지 않다.
* Ephemeris 기반 예측
  * 특정 위성에 대해 높은 정밀도의 궤도 예측이 가능하다.
  * 측위 알고리즘에서 직접적으로 사용되어 수신기 위치 계산 정확도에 결정적인 영향을 미친다.
  * 데이터 크기가 Almanac에 비해 크고, 수신 시간이 길 수 있으나, 고정밀측위를 위해서는 필수적이다.

#### Almanac 파일형식과 구성요소(예시: RINEX)

* 일반적으로 GNSS 업계에서는 RINEX(Receiver INdependent EXchange format) 형태로 Almanac, Ephemeris 데이터를 저장·교환하는 경우가 많다.
* Almanac RINEX 파일에는 위성별 PRN 번호, 위성 건강 상태, 기본 궤도 파라미터, 주기적 업데이트 시각 등이 수록되며, 이를 통해 GNSS 소프트웨어가 다양한 분석 및 초기 획득 처리를 수행한다.

#### Ephemeris 보정항과 정확도 향상 기법

* Navstar GPS 예시
  * IODE (Issue of Data Ephemeris) 필드를 통해 Ephemeris가 갱신된 버전을 식별
  * Crs, Crc, Cus, Cuc, Cis, Cic 등 보정항을 적용하여 궤도 편심·기울기·기준각 등을 보다 정밀하게 추정
* 글로나스(Glonass), 갈릴레오(Galileo), 북두(BDS) 등
  * GNSS마다 자체적인 Ephemeris 파라미터 구조가 있으며, 공통적으로 궤도 보정항, 시계 보정항, 건강 상태(Health) 등을 전송한다.

#### Ephemeris 활용 시 중요 계산 예

Ephemeris 상의 각 보정 파라미터(예: $\Delta i$, $\Delta \omega$ 등)는 타원궤도 6요소를 미세하게 수정하기 위한 값이다. 이를 통해 실제 계산되는 궤도요소는 기본 요소값(base value) + 보정항(correction term) 형태로 결정된다.

1. **경도 보정**

   $\Omega(t) = \Omega\_0 + \dot{\Omega}(t - t\_0) + \Delta\Omega$

   * $\Omega\_0$: 기준 승교점 적경
   * $\dot{\Omega}$: 승교점 적경 변화율
   * $\Delta\Omega$: Ephemeris에서 주어진 보정항
2. **기울기 보정**

   $i(t) = i\_0 + \dot{i}(t - t\_0) + \Delta i$

   * $i\_0$: 기준 궤도 경사 각
   * $\dot{i}$: 궤도 경사 각 변화율
   * $\Delta i$: 기울기 보정항
3. **참근점이각 보정**

   $\omega'(t) = \omega\_0 + \dot{\omega}(t - t\_0) + \Delta \omega$

   * $\omega\_0$: 기준 참근점이각
   * $\dot{\omega}$: 참근점이각 변화율
   * $\Delta \omega$: 보정항

이러한 보정항들을 적절히 반영하지 않으면, 실제 위성 위치와 수학적 모델 간의 오차가 누적되어 측위 정확도가 떨어진다.

#### Almanac, Ephemeris 수신 실패 시 대처

* **실내 환경** 등에서 위성 신호가 약하여 Almanac, Ephemeris 데이터를 충분히 수신하지 못하는 경우, 위치 설정이 어려워지거나 초기화(Cold Start) 시간이 길어진다.
* 대안:
  * **Assisted-GNSS(A-GNSS)**: 이동통신망 등이 미리 획득한 Almanac, Ephemeris 정보를 단말로 전송해 초기 획득 시간을 단축한다.
  * **무선 인터넷 업데이트**: W-Fi 등을 통해 Almanac, Ephemeris(또는 예측 Ephemeris) 파일을 미리 로드한다.
