28.4.3.1. 모드 스위칭 시 발생하는 제어 목표값(Setpoint)의 계단 현상(Step Change) 수학적 억제 기법
비행 모드가 전환되는 순간은 제어 시스템 관점에서 볼 때 목표 궤적 방정식이 완전히 딴판으로 뒤바뀌는 대격변의 시기다.
수학적으로 이 순간 제어 목표값(Setpoint, r(t))에는 불가피하게 불연속적인 물리적 도약, 즉 **계단 현상(Step Change)**이 발생하게 된다. PX4는 이 치명적인 수학적 단차를 억제하기 위해 정밀한 필터링 기법들을 동원한다.
1. Step Change가 유발하는 수학적 재앙 (D-Term Spike)
PID 위치 제어기의 기본 방정식은 오차 e(t) = r(t) - y(t)를 기반으로 작동한다. (r(t)는 목표 궤적값, y(t)는 현재 기체의 센서 추정값)
u(t) = K_p e(t) + K_i \int e(t)dt + K_d \frac{de(t)}{dt}
만약 모드가 전환되는 시간 t=t_{switch}에서 새로운 모드가 이전 궤적과 전혀 상관없는 동떨어진 목표값 r(t)를 갑자기 던지면 어떻게 될까?
오차 e(t)는 그 찰나의 순간 수직으로 상승한다. P-게인 항(K_p e(t))이 널뛰는 것은 물론이고, 더 끔찍한 것은 미분항(K_d \frac{de(t)}{dt})이다. 불연속적인 계단 함수의 미분값은 수학적으로 디랙 델타 함수(Dirac Delta Function), 즉 무한대(\infty)로 솟구치게 된다.
이 무한대의 미분 스파이크(Spike)는 모터 ESC로 고스란히 전달되어 기체를 공중에서 미친 듯이 발작하게 만드는 원흉이 된다.
2. 수학적 억제 설계 사상 (Suppression Topology)
PX4의 비행 제어 스택은 이 무한대 스파이크 현상을 원천 봉쇄하기 위해 크게 두 가지 수학적 방어벽을 설계해 두었다.
- 방어벽 1: 초기 오차 강제 0(Zero)화 로직
모드 전환 순간(t=t_{switch})에 한하여, 새로운 제어 목표값 r(t)를 사용자가 요청한 값이 아닌 기체의 현재 센서값 y(t)로 강제 주입(Injection)해 버린다. 즉 r(t) = y(t)가 우선 성립되므로, 그 찰나의 순간 초기 오차는 완벽히 e(t_{switch}) = 0이 된다. 오차가 0이므로 P항과 D항의 스파이크가 발생할 수학적 근거 자체가 완전히 소멸한다. - 방어벽 2: 목표 궤적 미분값 제한 (Derivative Limiting)
방어벽 1을 통해 1차 충격을 없앴다면, 이제 원래 기체가 진짜 가야 할 실제 목표점을 향해 r(t)를 서서히 이동시켜야 한다. 이때 목표값을 한 번에 텔레포트시키는 것이 아니라, 목표값 변화율의 1차 미분(제어 속도), 2차 미분(제어 가속도), 3차 미분(제어 저크)의 물리적 최댓값(Slew Rate)을 파라미터(예:MPC_ACC_UP_MAX,MPC_JERK_MAX) 캡(Cap)으로 씌워 수학적으로 등반 한계(Limiting)를 설정해 버린다.
이 억제 기법들 덕분에 하위 PID 제어기(mc_pos_control)는 조종사가 조종기 스위치를 아무리 거칠고 험하게 조작하더라도, 언제나 수학적으로 곱게 다듬어진(Smoothed) 연속적이고 부드러운 궤적 곡선만을 떠먹게 된다. 다음 절에서는 이 방어벽들이 모드 제어기 내부 단에서 어떻게 구체적인 코드로 시현되는지 살펴본다.