30.4.3. 최대 제동 가속도 포화(Saturation) 한계점과 피드포워드(Feed-forward) 보상기의 상호작용 및 오버슈트(Overshoot) 억제 로직

30.4.3. 최대 제동 가속도 포화(Saturation) 한계점과 피드포워드(Feed-forward) 보상기의 상호작용 및 오버슈트(Overshoot) 억제 로직

멀티로터가 고속 비행 중 Loiter 모드나 Mission 모드의 특정 웨이포인트(Waypoint)에서 급격히 제동을 걸 때, 목표가 되는 궤적이 요구하는 가속도 스펙이 드론 하드웨어가 실제로 낼 수 있는 물리적 한계를 초과하는 경우가 발생한다. PX4-Autopilot의 위치 제어기(Position Controller)는 이러한 구동기 포화(Actuator Saturation) 현상에 대응하여 목표값을 조정하고 오버슈트(Overshoot)를 효과적으로 억제하기 위해 정교한 피드포워드(Feed-forward) 보상 메커니즘을 내장하고 있다.

본 장에서는 위치 및 속도 제어 루프 내부에서 제동 가속도가 어떻게 한계점에 클리핑(Clipping)되며, 이 한계 상황 속에서 피드포워드 항이 어떤 식으로 오차의 누적을 막는지 수식과 구동 원리를 바탕으로 심층 분석한다.

1. 멀티로터 제동 가속도 한계점 산출 모델

기체가 전력으로 날고 있을 때, 속도를 줄이기 위해 기체는 비행 반대 방향으로 피치업(Pitch-up) 기동을 한다. 멀티로터의 최대 투입 가속도 a_{max}는 추진기(프로펠러 및 모터)가 낼 수 있는 총 추력(Thrust)과 기체의 질량, 그리고 항력에 의해 결정된다. PX4에서는 이를 MPC_ACC_HOR_MAX와 같은 제어 한계(Controller Limit) 파라미터로 사전에 정의한다.

비행 제어 컴퓨터 내 속도 제어기 루프는 PI(Proportional-Integral) 컨트롤러를 사용하며, 산출된 목표 가속도 항 \vec{a_{setpoint}}가 모터의 물리적 한계를 초과할 경우 수식적으로 다음과 같은 포화(Saturation) 처리를 거친다.

\vec{a_{final}} = \min(\Vert \vec{a_{setpoint}} \Vert, MPC\_ACC\_HOR\_MAX) \cdot \frac{\vec{a_{setpoint}}}{\Vert \vec{a_{setpoint}} \Vert}

이렇게 가속도의 크기가 수평 가속도 한계를 넘지 않도록 크기를 클리핑하고, 원래 의도했던 제어 벡터의 방향성만을 유지한다. 포화가 발생한(즉, 제어기가 포화 상태에 도달한) 상황에서는 일반적인 PID 제어만으로 오차를 따라잡지 못하는 지연(Lag)이 발생하게 된다.

2. 피드포워드(Feed-forward) 보상기의 역할

가속도 클리핑으로 인해 기체가 목표점 감속 궤적에 도달하지 못하면, 위치 오차가 누적되어 목표 지점을 지나쳐버리는 오버슈트 현상이 필연적으로 일어난다. PX4-Autopilot은 이를 방지하기 위해 궤적 생성기(Trajectory Generator)에서 이미 산출된 속도와 가속도 의도값을 피드백(Feedback) 측의 에러 연산을 거치지 않고 직접 제어 루프 말단에 더해주는 피드포워드(Feed-forward) 제어를 적용한다.

2.1 위치 제어 루프 구조

  1. 위치 피드백: \vec{v_{target}} = K_P \cdot (\vec{p_{setpoint}} - \vec{p_{current}})
  2. 속도 피드포워드 합산: \vec{v_{sp}} = \vec{v_{target}} + \vec{v_{feedforward}} (궤적 생성기에서 도출된 이상적 속도)
  3. 속도 피드백: \vec{a_{target}} = K_P \cdot (\vec{v_{sp}} - \vec{v_{current}}) + K_I \cdot \int (\vec{v_{sp}} - \vec{v_{current}}) dt
  4. 가속도 피드포워드 합산: \vec{a_{sp}} = \vec{a_{target}} + \vec{a_{feedforward}} (궤적 생성기에서 도출된 이상적 가속도)

위 구조에서 \vec{a_{feedforward}}는 센서 이노베이션(오차) 여부와 무관하게 시스템 구동단(Thrust Mixer)에 즉각적인 역추력(Pitch-up) 조작을 지시한다. 이를 통해 PID 루프가 위치나 속도 에러를 인지할 때까지의 시간차(Time Delay)를 원천 차단하여 오버슈트를 최소화한다.

graph LR
    A[Position Setpoint] -->|+, -| B(Pos P Ctrl)
    A1[Current Position] -->|Feedback| B
    B --> C((+))
    A2[Velocity FW] --> C
    C --> D[Velocity Setpoint]
    
    D -->|+, -| E(Vel PI Ctrl)
    A3[Current Velocity] -->|Feedback| E
    E --> F((+))
    A4[Acceleration FW] --> F
    F --> G[가속도 포화 제한기<br>Saturation]
    G --> H[Thrust/Attitude Target]

3. 포화 상태에서의 상호작용 및 과적분 방지(Anti-windup)

만일 모터 출력이 100% 임계에 달해 포화 상태(Saturation)에 걸리게 되면, 제어 기체는 요구된 가속도를 더 이상 낼 수 없다. 이 순간 PI 제어기 내부의 적분기(Integrator)는 에러를 계속 쌓으면서 제동이 끝난 이후에도 반대 방향으로 기체를 과도하게 뒤집어버리는, 일명 적분 와인드업(Integral Windup)에 직면할 위험이 생긴다.

따라서 PX4 속도 제어기 루프 소스코드(src/modules/mc_pos_control/PositionControl.cpp) 내에는 동적 안티-와인드업(Dynamic Anti-Windup) 로직이 결합되어 있다.

  1. 추력 한계 도달 감지: _thrust_spMPC_THR_MAX에 달하거나 MPC_ACC_HOR_MAX를 초과할 때 플래그가 활성화된다.
  2. 적분기 누적 정지(Integration Stop): 포화 상태로 진입한 축(예: 역방향 제동 수평축)에 대해서는 적분기 배열의 상태 업데이트 연산(+= Ki * error * dt)을 즉시 건너뛰거나(bypass), 누적량을 특정 임계치 이내로 잘라버린다.
  3. 지수 감쇠(Exponential Decay): 기체의 속도가 충분히 줄어들어 다시 선형 제역 구간에 진입하면, 그동안 누적되어 있던 적분항 에러를 지수적으로 감소시키며 제어 안전성을 복원한다.

4. 모의 시험(SITL) 로그 및 파라미터 튜닝 통찰

  • 지연 시간 분석: ULog 분석 툴넷인 Flight Review에서 확인할 수 있는 position_setpoint 대비 실제 vehicle_local_position의 추종 그래프 곡선 상에서, 급정거(Braking) 시 오버슈트가 눈에 띄게 큰 현상이 관찰된다면 피드포워드 게인이 낮거나 MPC_ACC_HOR_MAX가 기체 물리력보다 비현실적으로 크게 할당되어 있을 확률이 높다.
  • 가속 상한 조정: 따라서 Ardupilot 제어론과 마찬가지로 무조건 한상 높은 출력을 상정할 것이 아니라, MPC_ACC_HOR_MAX 파라미터를 실제 기체의 총 추력 중량비(TWR: Thrust-to-Weight Ratio) 스펙의 70~80% 선으로 강제로 제약해야 한다. 이는 궤적 생성기가 낼 수 없는 \vec{a_{feedforward}}를 지시하는 것을 사전에 막아주어 시스템을 선형 영역 내로 가둔다.

결론 및 요약

PX4 제어 모듈 아키텍처는 제동 한계점 근방에서도 기구학적 연속성을 잃지 않기 위해 철저한 선후 관계를 정의한다.
선행하는 궤적 생성기 단계에서는 물리적 한계점(Saturation Limit) 이내의 보수적인 설정점(Setpoint)과 **피드포워드 신호(Feed-forward)**를 발부하며, 실제 모터 구동단에서는 예기치 못한 오차 누적으로 한계가 돌파될 시 조건부 적분 포화 방지(Anti-windup) 기술로 오버슈트를 잘라낸다. 결과적으로 이 두 기능의 긴밀한 상호작용 덕분에 멀티로터는 관성을 버티는 최대 역방향 브레이킹 제어 환경에서도 제어 발산을 피하고 의도된 제동 거리 내에 정착할 수 있다.