30.4.4. 고정익(FW) 체공을 위한 비선형 경로 추종 유도(Nonlinear Path Following Guidance, NPFG) 리아푸노프 안정성(Lyapunov Stability) 기반 궤도 진입 로직
고정익(Fixed-wing, FW) 항공기는 헬리콥터나 멀티로터와 달리 제자리에 정지(Hovering)할 수 없는 공기역학적 한계를 지니고 있다. 따라서 고정익 기체에서 Loiter 모드가 발동되면, 기체는 지정된 GPS 좌표(Loiter Center)를 중심으로 원형 또는 다각형 궤도를 돌며 체공(Circling)하게 된다. PX4-Autopilot은 이 과정에서 최신 유도 기법인 비선형 경로 추종 유도(Nonlinear Path Following Guidance, NPFG) 알고리즘을 기본으로 채택하여 기존 L1 유도 알고리즘의 한계를 극복하고 리아푸노프 안정성(Lyapunov Stability) 기반의 매끄러운 궤도 진입을 구현하였다.
본 장에서는 고정익 체공 임무 시 NPFG가 어떻게 수학적으로 궤도 진입 벡터장(Vector Field)을 생성하고 기체를 원형 경로 위로 강건하게 안착시키는지, 관련 소스 코드를 중심으로 심층 분석한다.
1. NPFG 알고리즘의 도입 배경 및 L1 유도(Guidance)와의 차이
- L1 유도 알고리즘의 한계: 과거 PX4와 Ardupilot에서 고정익 경로 추종의 표준으로 쓰이던 L1 (또는 TECS 결합형 L1) 유도는, 기체 전방의 가상의 추종 거리(L_1) 지점을 목표로 횡방향 가속도(Lateral Acceleration)를 생성했다. 그러나 측풍(Crosswind)이 심하거나 목표 지점으로의 진입 각도가 날카로운 코너 루프(Corner Loop) 상황에서는, L_1 반경 설정에 따라 오버슈트(Overshoot)가 심하게 발생하거나 제어 루프가 헌팅(Hunting)하는 한계가 존재했다.
- NPFG(Nonlinear Path Following Guidance)의 등장: PX4-Autopilot 1.13 버전을 전후로 전면 도입된 NPFG는 단순히 전방의 한 점을 쫓는 것이 아니라, 전역 공간(Global Space) 자체에 **벡터장(Vector Field)**을 형성한다. 이 수학적 벡터장은 기체가 곡선 궤적의 밖이나 안에 있더라도, 리아푸노프 안정성 증명을 만족하는 점근적 수렴(Asymptotically Convergent) 곡선을 그리며 부드럽게 목표 원형 궤도 상으로 빨려 들어가듯 유도한다.
2. NPFG 리아푸노프 안정성 기반 체공 궤적 생성 모델
NPFG의 궤도 진입 유도 로직은 목표 궤도를 중심 반경 R의 원형 곡선으로 정의하고, 기체의 현재 위치 오차(Distance Error)와 방위각 오차(Bearing Error)를 리아푸노프 함수(Lyapunov Function) V(e, \theta)로 모델링한다.
- 상태 공간 정의:
기체의 위치 오차를 d (원점에서 기체까지의 거리에서 목표 반경 R을 뺀 값), 기체의 방위(Heading)와 유도 벡터 간의 각도 오차를 \tilde{\psi}라 하자. - 리아푸노프 후보 함수 (Lyapunov Candidate Function):
안정성을 증명하기 위해 위치 에너지와 운동 에너지 텐서의 합산과 비슷한 양의 정부호 함수(Positive Definite Function) V(d, \tilde{\psi}) > 0를 구성한다. - 제어 입력치 (제어 법칙 도출):
기체를 궤도에 안착시키려면 \dot{V} < 0 (음의 정부호)가 되도록 조향 롤(Roll) 레이트 명령을 연산해 내야 한다. NPFG는 이 미분 제약 식을 만족시키는 목표 횡방향 가속도(Lateral Acceleration Setpoint, a_{lat})를 직접 역산해 낸다.
a_{lat} = \frac{v_g^2}{R_{target}} + k \cdot d \cdot v_g \cdot \sin(\eta)
(이때 v_g는 대지 속도(Ground Speed), \eta는 경로와의 교차각(Look-ahead Angle)에 해당한다)
3. npfg.cpp 소스 코드 아키텍처 및 궤도 진입(Entry) 로직
PX4의 src/lib/npfg/NPFG.cpp 내부를 살펴보면, Loiter 모드 발동 시 원형 경로 궤적을 생성하는 구조를 명확히 구조화하고 있다.
3.1. Vector Field 및 진입점(Adaptation Entry) 연산
네비게이터(navigator)에서 Loiter 목표점이 하달되면 NPFG 인스턴스는 guideToOrbit() 함수(또는 동적 원형 궤적 추종 루틴)를 호출한다.
- 외곽에서 진입할 때: 기체가 목표 반경 R 밖 멀리 있을 때, 즉각적으로 기체를 목표 원의 접선(Tangent) 방향으로 선회시킨다.
- 내부에서 진입할 때: 기체가 반경 안쪽에 있을 경우, 바깥으로 밀어내며 부드러운 나선형(Spiral)을 그리듯 궤도 상에 안착시킨다. 이 때
NPFG_TRACK_KEEP파라미터를 통해 벡터장의 인력을 튜닝할 수 있다.
graph TD
A[FW Loiter Command 수신<br>Loiter Center 및 Radius 할당] --> B[NPFG 유도 루프 진입]
B --> C{기체의 초기 위치 판별<br>반경 R의 내/외부 여부}
C -->|외부| D[목표 궤도 접선(Tangent) 방향으로 <br>수렴하는 Look-ahead 각 구성]
C -->|내부| E[바깥으로 밀어내며 나선형(Spiral) <br>수렴 궤적을 그리는 각 구성]
D --> F[Lyapunov 조건식 기반 $a_{lat}$ 연산]
E --> F
F --> G[목표 Roll 각도 산출 및 <br>자세 제어기(FW Att Ctrl)로 퍼블리싱]
G --> H[정확한 궤도 반경 추종 유지]
3.2. 방풍 코너(Wind Compensation) 보상
고정익은 대기 속도(Airspeed)와 대지 속도(Groundspeed) 간의 차이를 발생시키는 바람의 영향을 심하게 받는다. NPFG 코어 알고리즘은 센서 융합기(EKF2)에서 구독한 바람 벡터 추정치(wind_estimate)를 실시간으로 결합한다.
- 강한 측풍이 불어 목표 반경 밖으로 기체를 찌그러뜨리려 할 때, NPFG는 바람 방향을 향해 타겟 크랩각(Crab Angle)과 추가적인 조향(Roll) 항력을 발생시켜 원형 궤적의 찌그러짐(Ellipsoid Effect) 현상을 상쇄하고 시각적으로 완벽에 가까운 정규 원형 체공(Perfect Circular Loiter) 비행을 구현한다.
4. 제어 파라미터 (NPFG Parameters) 및 튜닝 전략
NPFG의 궤적 진입과 응답성은 다음과 같은 핵심 파라미터를 통해 현장 튜닝된다.
NPFG_PERIOD: 제어 루프 진동 주기로, L1 댐핑 주기와 유사하다. 주기가 짧을수록 경로에 공격적으로 반응하고, 너무 길면 오버슈트가 발생한다.NPFG_DAMPING: 리아푸노프 유도 제어의 감쇄 계수. 진동(Oscillation) 억제력. 통상0.7전후의 수치가 이상적인 브레이킹(안착) 곡선을 갖는다.NPFG_EN_MIN_ANG: 목표 궤도 상에 진입할 때, 직선형 최단 경로를 탈지(Sharp Turn), 아니면 우회할지(Shallow Turn)를 정규화하는 진입 교차각 허용치.NAV_LOITER_RAD: 고정익의 기계적 뱅크 한계(Bank Limit)를 고려하여 설정되는 기본Loiter반경 스펙.
5. 결론 및 GCS 연계 의의
전통적인 PID나 휴리스틱 L1 유도를 벗어나, 증명 가능한 비선형 리아푸노프 안정성을 탑재한 NPFG 알고리즘의 도입은 고정익 PX4-Autopilot 제어 시스템이 갖는 학술적, 실무적 완성도의 결정판이라 할 수 있다. GCS 운용자는 QGroundControl 시스템 상에서 단순히 ’이 지점을 중심으로 N 미터 반경으로 대기하라’고 마우스 클릭으로 지시하지만, 하부 프레임워크에서는 바람 벡터 행렬 연산과 벡터장 수렴 모델이 실시간으로 교차 연산되며 가장 부드럽고 에너지 효율적인 역학 곡선을 그려내는 것이다. 이는 고정익 비상 폴백(RTL) 간의 유대 상태 확보와 군집(Swarm) 비행 중 공중 대기(Loitering) 시 상호 충돌을 최소화하는 결정적인 기반 기술이다.