### 0.0.1 `GPS_UBX_DYNMODEL` 파라미터를 통한 비행체 동역학 모델(Portable, Airborne 1G, 4G 등)별 U-Blox 내부 칼만 필터 게인(Gain) 조정 원리

### 0.0.1 GPS_UBX_DYNMODEL 파라미터를 통한 비행체 동역학 모델(Portable, Airborne 1G, 4G 등)별 U-Blox 내부 칼만 필터 게인(Gain) 조정 원리

드론 비행 제어기(FC) 내부의 EKF2만 칼만 필터(Kalman Filter)를 돌리고 있는 것이 아니다. 우리가 흔히 사용하는 U-blox M8/F9 시리즈 GPS 수신기 칩셋 내부에도 위성에서 날아오는 원시 원자시계 신호(Pseudorange)를 위도/경도로 환산하기 위한 자체적인 초소형 칼만 필터가 맹렬히 돌아가고 있다.

PX4의 GPS_UBX_DYNMODEL 파라미터는 바로 이 U-blox 칩셋 내부의 칼만 필터 세팅을 기체 특성에 맞게 원격으로 조작(Override)하는 매우 강력한 백도어(Backdoor) 엔드포인트다.

0.1 동역학 모델(Dynamic Model)이란 무엇인가?

U-blox 수신기는 자신이 자동차에 달려 있는지, 사람 손에 쥐어져 있는지, 아니면 전투기에 매달려 있는지 알 길이 없다. 따라서 수신기는 “내가 타고 있는 물체가 물리적으로 얼마나 빨리 방향을 바꿀 수 있는가?“에 대한 사전 가정(Assumption)을 필요로 한다. 이를 동역학 모델(Dynamic Model) 이라 부른다.

이 모델 설정에 따라 U-blox 내부 필터는 관측치(위성 신호)와 예측치(이전 속도 기반) 사이의 가중치, 즉 칼만 게인(Kalman Gain) 을 극단적으로 조절한다.

0.2 주요 DYNMODEL 설정값과 내부 필터 반응

PX4에서 GPS_UBX_DYNMODEL 파라미터를 통해 U-blox에 주입할 수 있는 대표적인 헥스(Hex) 코드 모델들은 다음과 같다.

  • 0: Portable (보행자 모델): 사람이 걸어 다니는 속도와 가속도를 가정한 세팅이다. 가속도 예측 허용치가 매우 낮기 때문에 위치가 튀는 것을 강하게 억제한다. 드론에 이 세팅을 넣고 빠르게 비행하면 GPS 칩셋이 “이렇게 빠른 이동은 물리적으로 불가능하다“고 판단해 위치 업데이트를 의도적으로 무시해 버리는(Lagging) 치명적인 딜레이가 발생한다.
  • 6: Airborne < 1G (기본 멀티로터 모델): 1G(9.8m/s^2) 이하의 수직/수평 가속도를 가지는 일반적인 멀티로터나 상업용 고정익 드론을 위한 표준(Default) 권장 모델이다. PX4는 특별한 설정이 없으면 부팅 시 U-blox 칩셋에 이 6번 모델을 강제로 덮어씌운다(Config block). 촬영용 드론의 부드러운 선회 비행에서는 이노베이션(오차) 처리가 가장 깔끔하다.
  • 7: Airborne < 2G (고성능/VTOL 모델): 급격한 전환(Transition) 비행을 수행하는 수직이착륙기(VTOL)나, 바람에 강하게 맞서는 중형 농업용 드론에 적합하다. 1G 모델보다 조금 더 급격한 속도 벡터 변화를 내부 필터가 수용(Accept)하도록 게인을 열어둔다.
  • 8: Airborne < 4G (레이싱/Acro 모델): FPV 레이싱 드론이나 3D 곡예비행 기체를 위한 극한의 세팅이다. 기체가 4G에 달하는 중력 가속도로 급상승이나 급선회를 하더라도, U-blox 칩셋은 위성 신호가 요동치는 것을 위치 튐(Jump) 에러로 기각(Reject)하지 않고 곧이곧대로 좌표계 변환에 반영한다.

0.3 실무 비행에서의 치명적인 트러블슈팅

현장에서 가장 흔히 겪는 “GPS는 20개나 잡히는데 고속 주행 시 기체가 멈칫거린다(Toilet-bowling)” 현상의 주범이 바로 이 파라미터 세팅 오류다.

  • 만약 부팅 시 PX4와 GPS 모듈 간의 시리얼 통신(Rx) 라인 불량으로 인해 PX4가 6번(Airborne < 1G) 설정 패킷을 U-blox 칩셋에 성공적으로 밀어 넣지 못했다면, U-blox 칩셋은 공장 출고 시 기본값인 보행자(Portable, 0) 또는 차량(Automotive, 4) 모델로 구동된다.
  • 이 상태로 드론이 15m/s 이상으로 급가속하면, U-blox 내부 필터는 드론의 궤적을 ’비정상적인 치명적 에러’로 처리하여 EKF2로 보내는 위치 데이터의 지연(Latency)을 급격히 늘리거나 심지어 업데이트를 멈춰버린다. EKF2는 갑자기 들어오지 않는 GPS 데이터 때문에 IMU 적분값만 믿고 날뛰게 되며 결국 기체는 발산(Divergence)하고 만다.

따라서 튜닝 엔지니어는 자신이 설계한 기체의 최고 가속도와 기동 특성을 정확히 파악하여 GPS_UBX_DYNMODEL을 6, 7, 8 중에서 정밀하게 선택해야 하며, 이 설정값이 매 부팅 시 정상적으로 수신기의 램(RAM) 영역에 기록(Ack)되었는지 부트 로그(Boot Log)를 통해 확인하는 습관을 가져야 한다.