9.80 GNSS/GPS 좌표계와 지역 좌표계의 변환
1. GNSS와 좌표계의 다양성
GNSS(Global Navigation Satellite System)는 GPS(미국), GLONASS(러시아), Galileo(EU), BeiDou(중국) 등의 위성 항법 시스템을 포함한다. GNSS 수신기는 전 지구적 좌표계에서 위치 정보를 제공하지만, 로봇이 작업하는 지역에서는 보다 직관적인 지역 좌표계가 필요하다. 따라서 GNSS 좌표와 지역 좌표 사이의 변환이 필수적이다.
2. GNSS의 좌표 표현
GNSS는 위치를 다음의 두 가지 주요 형태로 제공한다.
2.1 측지 좌표 (위도-경도-고도)
지구의 모양을 근사한 회전 타원체 모델에서 각도와 거리로 위치를 표현한다.
- 위도(Latitude) \phi: 적도면에서 측정한 위도, -90°에서 +90°
- 경도(Longitude) \lambda: 본초자오선(Prime Meridian)에서 측정한 경도, -180°에서 +180°
- 고도(Altitude) h: 회전 타원체 표면에서의 고도
이 좌표 시스템은 인간이 이해하기 쉽고 지도와 호환된다.
2.2 ECEF (Earth-Centered Earth-Fixed)
지구의 질량 중심을 원점으로 하는 직교 좌표계이다.
- x: 본초자오선과 적도의 교점 방향
- y: 동경 90도와 적도의 교점 방향
- z: 북극 방향
이 좌표 시스템은 직교 좌표이므로 수학적 처리가 단순하다. 지구 자전 축에 고정되어 있다.
3. WGS-84 모델
가장 널리 사용되는 GNSS 좌표 모델은 WGS-84(World Geodetic System 1984)이다. 이는 지구의 모양을 회전 타원체로 근사한 모델이며, 다음의 매개변수를 가진다.
- 준장축(Semi-major axis): a = 6378137.0 m
- 준단축(Semi-minor axis): b = 6356752.314 m
- 편평률(Flattening): f = 1/298.257223563
- 이심률(Eccentricity): e^2 = 2f - f^2 \approx 0.00669437999
GPS와 대부분의 GNSS 수신기는 WGS-84 좌표를 출력한다.
4. 측지 좌표에서 ECEF로의 변환
위도 \phi, 경도 \lambda, 고도 h로부터 ECEF 좌표를 계산한다.
N = \frac{a}{\sqrt{1 - e^2\sin^2\phi}}
x = (N + h)\cos\phi\cos\lambda
y = (N + h)\cos\phi\sin\lambda
z = ((1 - e^2)N + h)\sin\phi
여기서 N은 회전 타원체의 횡곡률 반지름(prime vertical radius of curvature)이다.
5. ECEF에서 측지 좌표로의 변환
ECEF (x, y, z)로부터 측지 좌표를 계산하는 것은 비선형이며 반복적 방법이 필요하다.
5.1 경도
경도는 직접 계산된다.
\lambda = \mathrm{atan2}(y, x)
5.2 위도와 고도
위도와 고도는 다음의 반복으로 계산된다.
p = \sqrt{x^2 + y^2}
초기 추정:
\phi^{(0)} = \mathrm{atan2}(z, p(1 - e^2))
반복:
N^{(k)} = \frac{a}{\sqrt{1 - e^2\sin^2\phi^{(k)}}}
h^{(k)} = \frac{p}{\cos\phi^{(k)}} - N^{(k)}
\phi^{(k+1)} = \mathrm{atan2}(z, p(1 - e^2 \cdot \frac{N^{(k)}}{N^{(k)} + h^{(k)}}))
이 반복은 빠르게 수렴하며, 통상 3-4회 반복이면 충분하다. 비반복 닫힌 형태 공식도 존재한다(Bowring의 공식 등).
6. 지역 좌표계
GNSS의 전 지구 좌표는 큰 영역에서는 유용하지만, 로봇의 작업 영역(보통 수 미터에서 수 킬로미터)에서는 사용하기에 부담스럽다. 지역 좌표계는 작업 영역의 한 점을 원점으로 하여 국소적 평면 좌표를 정의한다.
6.1 ENU (East-North-Up)
가장 일반적인 지역 좌표계이다. 원점에서
- x_E: 동쪽
- y_N: 북쪽
- z_U: 위쪽 (지표면에 수직)
이 좌표계는 작은 영역에서 거의 직교 좌표처럼 동작하며, 사용자가 이해하기 쉽다.
6.2 NED (North-East-Down)
항공 우주 분야에서 자주 사용되는 지역 좌표계이다.
- x_N: 북쪽
- y_E: 동쪽
- z_D: 아래쪽
비행체의 자세 표현(롤-피치-요)이 이 좌표계와 자연스럽게 정합된다.
7. ECEF에서 ENU로의 변환
원점이 측지 좌표 (\phi_0, \lambda_0, h_0)인 ENU 지역 좌표계에서 다른 점 (\phi, \lambda, h)의 ENU 좌표를 계산하는 방법이다.
7.1 단계 1: 두 점의 ECEF 계산
원점 (\phi_0, \lambda_0, h_0)의 ECEF (x_0, y_0, z_0)와 대상점 (\phi, \lambda, h)의 ECEF (x, y, z)를 각각 계산한다.
7.2 단계 2: ECEF 차이 벡터
\Delta\mathbf{p}_{\text{ECEF}} = \begin{bmatrix}x - x_0 \\ y - y_0 \\ z - z_0\end{bmatrix}
7.3 단계 3: ENU 회전 행렬 적용
ECEF에서 ENU로의 회전 행렬은 원점의 위도와 경도에 의해 결정된다.
\mathbf{R}_{ENU \leftarrow ECEF} = \begin{bmatrix} -\sin\lambda_0 & \cos\lambda_0 & 0 \\ -\sin\phi_0\cos\lambda_0 & -\sin\phi_0\sin\lambda_0 & \cos\phi_0 \\ \cos\phi_0\cos\lambda_0 & \cos\phi_0\sin\lambda_0 & \sin\phi_0 \end{bmatrix}
7.4 단계 4: ENU 좌표 계산
\mathbf{p}_{ENU} = \mathbf{R}_{ENU \leftarrow ECEF} \cdot \Delta\mathbf{p}_{ECEF}
이 결과가 원점에서 대상점까지의 동쪽, 북쪽, 위쪽 방향 거리이다.
8. ENU에서 ECEF로의 역변환
ENU 좌표를 ECEF로 변환하는 과정은 위의 역과정이다.
\Delta\mathbf{p}_{ECEF} = \mathbf{R}_{ENU \leftarrow ECEF}^T \cdot \mathbf{p}_{ENU}
\mathbf{p}_{ECEF} = \mathbf{p}_{0,ECEF} + \Delta\mathbf{p}_{ECEF}
이후 ECEF에서 측지 좌표로의 변환을 적용하면 위도, 경도, 고도가 얻어진다.
9. NED 변환
NED는 ENU와 축 순서가 다르므로, 회전 행렬도 다르다.
\mathbf{R}_{NED \leftarrow ECEF} = \begin{bmatrix} -\sin\phi_0\cos\lambda_0 & -\sin\phi_0\sin\lambda_0 & \cos\phi_0 \\ -\sin\lambda_0 & \cos\lambda_0 & 0 \\ -\cos\phi_0\cos\lambda_0 & -\cos\phi_0\sin\lambda_0 & -\sin\phi_0 \end{bmatrix}
ENU와 NED 사이의 변환은 단순한 축 교환이다.
10. 지역 좌표계의 정확도와 유효 범위
지역 좌표계는 평면 근사를 사용하므로, 작업 영역이 클수록 오차가 커진다. 일반적인 유효 범위는 다음과 같다.
| 영역 크기 | 평면 근사 오차 |
|---|---|
| \leq 1 km | 무시 |
| \sim 10 km | 작음 (\leq 1 m) |
| \sim 100 km | 중간 (\sim 100 m) |
| > 1000 km | 큼 (지구 곡률 무시 불가) |
대부분의 로봇 응용은 수 km 이하이므로, 평면 근사가 충분히 정확하다.
11. 변환의 응용
11.1 모바일 로봇과 자율 주행
GNSS는 야외 모바일 로봇과 자율 주행 차량의 핵심 위치 추정 센서이다. GNSS의 측지 좌표를 로봇이 사용하는 지역 좌표계(ENU, NED)로 변환하여 경로 계획과 제어에 활용한다.
11.2 드론과 무인 항공기
UAV의 비행 계획은 보통 ENU 또는 NED 지역 좌표계에서 정의된다. GNSS의 측지 좌표를 지역 좌표로 변환하여 비행 명령을 생성한다.
11.3 농업 로봇
농업 로봇의 작업 영역(밭, 농장)을 지역 좌표계로 정의하고, GNSS로 측정한 위치를 지역 좌표로 변환하여 작업 경로를 생성한다.
11.4 측량과 매핑
토목 측량과 매핑에서 GNSS와 지역 좌표계의 변환이 표준이다. 측량점의 GNSS 좌표를 지역 좌표로 변환하여 도면을 제작한다.
12. RTK GNSS와 정밀 위치
일반 GNSS는 수 미터의 정확도를 가지지만, RTK(Real-Time Kinematic) GNSS는 cm 수준의 정확도를 제공한다. 정밀한 로봇 응용에서는 RTK가 필수이며, 변환 알고리즘은 동일하다.
13. 좌표계 변환의 라이브러리
다양한 라이브러리가 GNSS 좌표 변환을 제공한다.
13.1 GeographicLib
C++ 기반의 정밀한 측지 변환 라이브러리이다.
13.2 PROJ
GIS와 측량 분야에서 표준적으로 사용되는 좌표 변환 라이브러리이다.
13.3 GeoTools
Java 기반의 GIS 라이브러리이다.
13.4 ROS의 geographic_msgs
ROS에서 GNSS 데이터를 다루기 위한 메시지 정의이다.
이러한 라이브러리는 여러 측지 모델(WGS-84 외)과 변환을 지원한다.
14. 시간 의존적 좌표계
ECEF는 지구 자전 축에 고정되어 있지만, 지구 자체가 자전하므로 ECEF는 관성 좌표계가 아니다. 더 고급 응용에서는 ECI(Earth-Centered Inertial) 좌표계도 사용된다. ECI는 우주 공간에 고정되어 있으며, 지구의 자전을 고려하여 변환된다. 위성 궤도 분석 등 우주 응용에서 사용된다.
15. 참고 문헌
- Misra, P., & Enge, P. (2011). Global Positioning System: Signals, Measurements, and Performance (Revised 2nd ed.). Ganga-Jamuna Press.
- Kaplan, E. D., & Hegarty, C. J. (2017). Understanding GPS/GNSS: Principles and Applications (3rd ed.). Artech House.
- Groves, P. D. (2013). Principles of GNSS, Inertial, and Multisensor Integrated Navigation Systems (2nd ed.). Artech House.
- NIMA Technical Report TR8350.2 (2000). “Department of Defense World Geodetic System 1984: Its Definition and Relationships with Local Geodetic Systems.”
- Hofmann-Wellenhof, B., Lichtenegger, H., & Wasle, E. (2008). GNSS – Global Navigation Satellite Systems. Springer.
version: 1.0