### 0.0.1 AshtechGps, EmlidReach, Trimble 등 고정밀 수신기 파서 클래스의 특화 기능 분석
PX4-Autopilot 생태계는 일반적인 취미용 드론 레벨을 넘어, 센티미터(cm) 수준의 절대 오차를 요구하는 측량, 정밀 농업, 군용 매핑(Mapping) 등 전문가용 하드웨어 인프라와 융합되고 있다.
이러한 하이엔드 어플리케이션을 뒷받침하기 위해 src/drivers/gps/devices/src/ 디렉토리에는 U-Blox나 NMEA 같은 범용 프로토콜뿐만 아니라, 극도로 특화된 초정밀(High-precision) RTK 수신기 전용 파서 클래스들이 포진해 있다. 본 절에서는 이들 프리미엄 파서들이 GPSProvider 베이스 클래스를 상속받아 어떻게 자신만의 독창적인 기능을 발휘하는지 해부한다.
0.1 EmlidReach: ERB(Emlid Reach Binary) 프로토콜의 경량화 파싱
Emlid 사의 Reach 라인업은 오픈소스 커뮤니티에서 RTK 시스템의 가격 거품을 걷어낸 혁신적인 하드웨어로 평가받는다. PX4 내부에 이식된 emlid_reach.cpp 드라이버는 이 기기의 독점 프로토콜인 ERB(Emlid Reach Binary) 형식을 전담한다.
- ERB 프로토콜의 철학: ERB는 NMEA의 거추장스러운 ASCII 문자열 텍스트 변환과 U-Blox UBX의 지나치게 복잡한 다중 ID 체계를 절충하여, 오직 무인기 비행 제어에 필요한 핵심 측위 데이터(POS), 속도(VEL), 그리고 RTK 위상 상태(DOP)만을 욱여넣은 극소형 바이너리 패킷이다.
- 클래스 설계의 간결성:
EmlidReach클래스의parse_char()상태 머신은UbxGps의 절반도 안 되는 분기문(Branching)을 가진다.SYNC1('E'),SYNC2('R')매직 넘버를 잡고 나면, 들어오는 페이로드는 즉시[위도, 경도, 고도, RTK Fix Status]등 단일 구조체 덩어리로 맹렬하게 복사되어 파싱의 오버헤드를 극단적으로 낮춘다. 이 극한의 경량화는 저사양 구형 픽스호크(Pixhawk 1/2) 칩셋에서도 14Hz 이상의 고속 RTK 출력을 시스템 부하 없이 거뜬히 소화해 내는 비결이다.
0.2 Trimble GSOF: 지구물리학적 정밀도의 수용
건설 기계나 정밀 농업 트랙터에 주로 쓰이는 수천만 원 대의 Trimble 수신기들은, 단순한 WGS84 좌표계의 3차원 위치를 넘어 지구 자기장, 지오이드(Geoid) 편차, 심지어 모듈 내부의 진동 상태와 클럭 바이어스(Clock Bias)까지 수십 가지의 정밀 파라미터를 뿜어낸다.
- 파서의 비대칭적 역할: PX4의
TrimbleGSOF(General Serial Output Format) 파서 클래스는 이 방대한 데이터 범람 속에서 EKF2 추정기가 소화할 수 있는 핵심 골격 데이터만을 체로 걸러내는 필터(Filter) 역할을 수행한다. - 가상 함수
receive()내부에서는 방대한 GSOF 페이로드를 스와이핑(Swiping)하며0x01(Time),0x02(Position),0x08(Velocity/Heading) 레코드 레지스터만을 선택적으로 딥-카피(Deep-copy)하고, 나머지 지구물리학적 특수 데이터는 과감히 버린다(Drop). 이를 통해 고가의 하이엔드 센서를 PX4 아키텍처에 위화감 없이 단일sensor_gps_suORB 구조체로 구겨 넣어(Squeezing) 마운트하는 호환성의 마법을 부린다.
0.3 AshtechGps: 멀티 헤딩(Multi-Heading)과 구형 군수 인프라 호환
Thales/Ashtech 시절부터 내려오는 Ashtech 드라이버(ashtech.cpp)는 주로 대형 고정익 타겟 드론이나 구형 군수용 플랫폼에 채용된 레거시(Legacy) 센서들과의 통신을 책임진다.
- NMEA 확장자(Extension) 파싱: Ashtech 수신기는 기본적으로 NMEA를 뱉어내지만,
$PASHR로 시작하는 그들만의 독자적인 확장 ASCII 문장을 섞어 쏜다.AshtechGps클래스는 기본적으로NmeaGps파서와 유사한 텍스트 쪼개기(Tokenizing) 상태 머신을 돌리지만, 이$PASHR구문이 들어올 때 특별한 콜백 분기를 탄다. - 자세(Attitude) 추정 지원: 일부 듀얼 안테나 배열을 지원하는 Ashtech 모델은 단순한 이동 궤적이 아니라 자체적인 삼각측량을 통해 기체의 ’Heading(요 각도)’과 ‘Pitch(피치)’ 자세 정보까지 섞어 보낸다. 드라이버는 이 희귀한 방향 데이터(Heading)를 적출해 내어, EKF2가 나침반 장치(Magnetometer/Compass)의 도움 없이도 제자리에서 기수의 방향을 인식할 수 있도록 uORB의
heading필드에 특별히 은밀하게 주입(Inject)한다.
이처럼 PX4의 GPSProvider 다형성 구조 아래 기생하는 특화 파서들은, 벤더마다 제각기 다른 프로토콜의 독성과 뾰족함을 파서 클래스 내부에 온전히 가둬냄(Encapsulation)으로써, 메인 비행 제어 코드를 수정 한 줄 없이 깔끔하게 보존하는 객체 지향의 교과서적 승리를 보여준다.