GN⁺: 원시 GPS 데이터를 이용한 위치 계산 (2017)
(telesens.co)원시 GPS 데이터를 이용한 위치 계산
GPS 시스템의 중요성
- GPS는 글로벌 포지셔닝 시스템으로, 구글 지도에서 길 찾기부터 차량 호출 앱까지 다양한 응용 프로그램에서 사용됨
- GPS는 매우 정확하여 판 구조론과 대륙 이동을 측정하는 데도 사용됨
- GPS는 미국 정부 소유로, 지정학적 이유로 다른 국가에 대한 접근이 제한될 수 있음
- 이에 따라 러시아의 GLONASS, 유럽 연합의 Galileo, 중국의 BeiDou와 같은 다른 국가의 GPS 유사 시스템이 개발됨
좌표 시스템
- 위치를 표현하기 위해 다양한 좌표 시스템이 사용됨
- 일반적으로 사용되는 위도/경도는 수학적 계산에 적합하지 않음
- ECEF (Earth Centered, Earth Fixed) 좌표 시스템은 지구 중심을 원점으로 하여 위치를 표현함
- WGS 1984 시스템은 가장 일반적으로 사용되는 ECEF 좌표 시스템임
높이 정의
- 높이를 정의할 때 기준이 되는 표면을 정의해야 함
- 참조 타원체와 지오이드 모델이 사용됨
- 참조 타원체는 물리적 의미가 없으며, 지오이드는 동일한 중력 잠재력을 가진 점들의 집합으로 정의됨
위도와 경도
- 지오데틱 위도는 타원체 표면에서 수직선과 적도 평면 사이의 각도임
- 지오데틱 경도는 기준 자오선과 특정 자오선 사이의 각도임
- 지오데틱 높이는 타원체를 통해 측정된 높이임
지오데틱 좌표와 카르테시안 좌표 변환
- 지오데틱 좌표를 카르테시안 좌표로 변환하는 것은 간단함
- 카르테시안 좌표를 지오데틱 좌표로 변환하는 것은 반복적인 절차를 필요로 함
지역 좌표 시스템
- 지역 좌표 시스템은 사용자의 위치를 중심으로 하는 ENU (East-North-Up) 시스템임
- ECEF 좌표를 ENU 좌표로 변환하는 방법이 있음
GPS를 이용한 사용자 위치 계산
위성 위치 결정
- 위성의 궤도는 타원형으로, 6개의 케플러 매개변수로 완전히 지정됨
- 위성의 위치는 GPS 인터페이스 사양 문서에 따라 계산됨
사용자와 위성 간 거리 계산
- GPS 수신기는 위성 신호의 타임스탬프를 사용하여 위성까지의 거리를 계산함
- 이 거리는 의사거리(pseudorange)라고 불림
- 사용자와 위성의 시계 오프셋 및 대기 지연을 모델링하여 정확한 위치를 계산해야 함
사용자 시계 오프셋 추정
- 사용자 시계 오프셋은 사용자 위치와 함께 추정됨
사용자 위치 및 시계 오프셋 추정 알고리즘
- 초기 사용자 위치와 시계 오프셋을 설정하고 반복적으로 수정함
- 각 위성에 대해 의사거리를 수정하고, 신호 전송 시간을 계산하며, 위성 위치를 계산함
- 선형 대수 기법을 사용하여 최소 제곱 솔루션을 찾음
Matlab 코드에 대한 주의 사항
- 일부 방정식은 솔버를 호출해야 함
- 예를 들어, 평균 이상(M)에서 편심 이상(E)을 계산하는 것은 솔버를 필요로 함
실험 설정
- 원시 GPS 데이터를 수집하기 위해 특수 GPS 유닛이 필요함
- u-blox의 NEO-M8T 및 6T 칩이 적합함
- RTKLib의 STRSVR 유틸리티를 사용하여 원시 GPS 신호를 수신하고 저장함
원시 GPS 데이터 처리
- STRSVR는 원시 GPS 데이터를 RTCM3 형식으로 저장함
- Matlab 라이브러리 goGPS를 사용하여 RTCM 데이터를 디코딩하고 Matlab 데이터 구조로 변환함
결과 분석
- 위치와 시계 오프셋의 변화를 분석함
- 위치의 동서/북/상향(E/N/U) 구성 요소의 변동을 분석함
- 시계 오프셋의 변동을 시간에 따라 분석함
위성 방위각/고도 계산
- 사용자 중심 ENU 프레임에서 위성의 방위각과 고도를 계산함
GN⁺의 정리
- 이 글은 GPS 시스템의 작동 원리와 위치 계산 방법을 설명함
- GPS 데이터의 정확성을 높이기 위해 다양한 보정 방법이 사용됨
- Matlab 코드를 통해 실제 데이터를 처리하고 분석하는 방법을 제공함
- GPS 시스템의 기술적 인프라를 이해하는 데 유용함
- 유사한 기능을 가진 프로젝트로는 RTKLib와 goGPS가 있음
Hacker News 의견
-
Android는 이미 캐리어 위상 접근을 제공하고 있으며, 이를 통해 같은 지역 내의 장치 간 상대 위치를 매우 정밀하게 측정할 수 있음
- 가속도계와 자이로스코프를 추가하면 실시간으로 위치를 측정할 수 있으며, GNSS 의사 거리 측정의 변화가 예측 가능하기 때문에 정확도가 크게 떨어지지 않음
- 이를 통해 모델 비행기를 트럭 침대에 자동 착륙시키는 등의 흥미로운 기능을 구현할 수 있음
- 전력 소모가 크게 중요하지 않다면, 꽤 좋은 GNSS 수신기를 저렴하게 제작할 수 있음
-
GPS 수신기를 직접 만들고 싶은 사람들을 위한 오픈 소스 프로젝트가 있음
-
GPS 관련 댓글에 자주 올라오는 링크지만, 좋은 이유가 있음
-
더 상호작용적인 설명을 제공하는 대안 링크도 있음
-
수면에 드물게 잠깐씩 올라오는 수생 생물의 GPS 데이터를 수집하는 연구자를 만난 적이 있음
- 원시 데이터를 기록하고 후처리하여 전력 소모와 위성 신호 노출 시간을 크게 줄일 수 있음 (노출 시간은 1초 미만)
-
다음 단계는 PPP 또는 RTK임
- GNSS는 다양한 가능성을 제공하는 흥미로운 분야임
-
또 다른 좋은 오픈 소스 구현이 있음
-
사용자-소스 기하학이 사용자 위치의 불확실성에 미치는 영향을 보여주는 그림이 있음
- 휴대폰의 지도 애플리케이션에서 위치 불확실성의 형태를 원에서 호 교차 형태로 변경할 수 있는 설정이 있었으면 좋겠음
-
GPS는 일상 생활에서 상대성 효과를 고려해야 하는 몇 안 되는 응용 프로그램 중 하나라고 들었음
- 생성된 데이터는 이미 이러한 상대성 효과를 제외한 것임
-
평평한 지구론자들을 위한 연습 문제: 위성이 구형 지구를 공전하지 않는다면 휴대폰의 GPS 맵핑이 어떻게 작동하는지 설명하시오