30.3.3.5. 자동 착륙(Land): 지면 근접 효과(Ground Effect)를 고려한 하강 속도 프로파일 동적 조절 알고리즘

30.3.3.5. 자동 착륙(Land): 지면 근접 효과(Ground Effect)를 고려한 하강 속도 프로파일 동적 조절 알고리즘

무인항공기의 자율 비행 시퀀스 중 가장 높은 정밀도와 동역학적 안정성이 요구되는 기동은 지면과의 물리적 충돌을 부드럽게 통제하는 자동 착륙(Automated Landing)이다. PX4-Autopilot은 GCS로부터 MAV_CMD_NAV_LAND 명령을 수신하면, 단순히 수직 하강 속도를 일정하게 유지하는 것이 아니라, 고도 구간별로 상이한 하강 속도 프로파일(Descent Velocity Profile)을 동적으로 적용하고, 지면 근접 초음파/라이다 센서와 결합하여 **지면 근접 효과(Ground Effect)**를 능동적으로 상쇄(Compensation)하는 고도화된 스위칭 제어(Switching Control) 로직을 구사한다.

1. 지면 근접 효과(Ground Effect)의 공기역학적 위협

로터리 윙(Rotary Wing, 멀티로터나 헬리콥터) 기체가 지표면 부근(통상적으로 로터 직경의 1~1.5배 이내 고도)으로 하강하면, 하향풍(Downwash)이 지면에 부딪혀 반사되면서 회전익 하단에 고정압의 공기 쿠션(Air Cushion)이 형성된다. 이로 인해 동일한 스로틀(Throttle) 출력 하에서도 양력(Lift)이 비선형적으로 증가하는 지면 근접 효과가 발생한다.

만일 FlightTaskAuto 모듈이 이러한 물리적 변화를 인지하지 못하고 고정된 고도 PID 게인(Gain)과 하강 속도로 계속해서 지면을 타격 지점(Target Point)으로 밀어붙이면, 기체는 공기 쿠션에 의해 일시적으로 튀어 오르고(Bouncing), 제어기가 다시 강하게 하강을 지시하며 위아래로 진동(Oscillation)하는 비행 불안정이 초래된다.

2. 고도 기반 다단계 하강 프로파일 (Multi-phase Descent Profile)

PX4는 이러한 현상을 제어하기 위해 착륙 고도를 수학적으로 분할하여 상태 머신을 전이(Transition)시킨다. 하위 위치 제어 루프는 기체가 착륙점 상공에 도달한 직후부터 다음과 같은 단계적 하강 속도 지령(Velocity Setpoint)을 생성한다.

  1. 초기 하강 고강하 단계 (Fast Descent Phase):
    목표 지점 상공에서 착륙 반경 내에 들어오면, 기체는 파라미터 MPC_Z_VEL_MAX_DN (일반적으로 1.0 ~ 3.0 m/s)의 최대 허용 하강 속도를 사용하여 빠르게 고도를 낮춘다. 이 구간에서는 지면 효과가 발생하지 않으므로 높은 P-방향 이득(MPC_Z_P)이 유지된다.

  2. 지면 근접 저강하 단계 (Slow Descent / Touchdown Phase):
    기체의 고도가 파라미터 MPC_LAND_ALT1 (또는 MPC_LAND_ALT2, 통상 지상 10m 이하)을 통과하면, 속도 프로파일 생성기는 목표 하강 속도를 MPC_LAND_SPEED (일반적으로 0.7 ~ 1.0 m/s 이내)로 동적 감속(Dynamic Deceleration)시킨다.
    특히, 착지 최하단부에서는 지면 쿠션 효과로 인한 수직 오차(Z-error)의 급증을 무시하기 위해, 적분기(Integrator, MPC_Z_I)의 누적 제한(Anti-windup Limit) 성능을 강화하고 릴랙스(Relax)된 비례 제어를 통해 기체가 서서히 바닥으로 가라앉도록(Sinking) 수식화되어 있다.

3. 착륙 상태 동기화 기하학 다이어그램 (Mermaid Diagram)

다음은 고도별 착륙 속도 조절 및 지면 접촉 감지 흐름을 보여주는 제어 블록 다이어그램이다.

graph TD
    A[Start MAV_CMD_NAV_LAND] --> B{Z > MPC_LAND_ALT1?}
    B -- Yes --> C[V_z_setpoint = MPC_Z_VEL_MAX_DN]
    C --> B
    
    B -- No --> D{Z > Flare Altitude?}
    D -- Yes --> E[V_z_setpoint dynamically scales down to MPC_LAND_SPEED]
    E --> D
    
    D -- No --> F[V_z_setpoint = MPC_LAND_SPEED]
    F --> G{land_detector: Ground Contact?}
    
    G -- No --> F
    G -- Yes, Air Cushion Detected --> H[Freeze I-Gain to prevent Bouncing]
    H --> I{land_detector: Maybe Landed?}
    I -- Yes --> J[Disarm Motors, Terminate Mission]

4. Land Detector 모듈과의 유기적 연동

순수 내비게이터(Navigator) 로직만으로는 기체가 실제 지면에 닿았는지 확신할 수 없다. 기압계나 GPS 기반 고도는 오차가 존재하기 때문이다. 이를 판독하기 위해 PX4는 독립적인 백그라운드 데몬인 land_detector를 가동한다.

mission.cpp와 위치 제어기는 다음과 같은 세 가지 플래그(Flags)를 연속적으로 검사하며 비행 탠션(Tension)을 조절한다.

  • ground_contact: 기체의 수직 속도가 사실상 0에 가깝고, 추력(Thrust) 설정값이 하버링 스로틀(Hovering Throttle)보다 현저히 낮아졌을 때 발동된다. 이 플래그가 수신되면 위치 제어기는 더 이상 고도 오차를 만회하려는 제어값을 출력하지 않고 모터의 출력을 아이들(Idle) 수준으로 내린다.
  • maybe_landed: 수 센티미터의 움직임조차 감지되지 않는 굳건한 안착 상태이다.
  • landed: 최종적으로 착륙이 확증되면 시스템은 커맨더(commander.cpp)로 시동 해제(Disarm) 신호를 전송하여 임무를 완전히 종료한다.

5. Ardupilot 대비 착륙 알고리즘의 차별성

Ardupilot은 전통적으로 착륙 판단을 메인 비행 루프(Copter.cpp) 내의 함수 체인에 묶어 판단하는 경향성을 보여왔다.
반면 PX4 펌웨어는 위에서 설명한 바와 같이 경로 생성(Mission/FlightTaskAuto), 속도 제어(Position Controller), 상태 인지(Land Detector)가 각각 철저하게 분리된 마이크로 코어 구조를 띠고 있다.
특히, 거리 센서(Lidar/Sonar) 데이터를 융합하는 EKF2 위치 추정기가 지표면 기준(Terrain Reference) 고도를 확립해주면, navigator는 이를 십분 활용하여 MPC_LAND_ALT1 임계점을 매우 높은 정밀도로 타격한다. 이는 배달용 드론(Delivery Drone)이나 산업용 매핑 기체들이 고르지 못한 산악 지형에서 착륙 지시를 받았을 때 지면 충돌(Hard Landing)을 근본적으로 차단하는 가장 진보된 계층적 로보틱스 아키텍처 중 하나로 평가받는다.

6. 개발자 시사점

자율 주행 에이전트 시스템을 설계할 때 착륙(Land)은 단순히 “Z축으로 하강“이라는 명령어로 쉽게 치환될 수 없는 역학적 이벤트이다. 지면 효과(Ground Effect)로 인한 비선형 양력 증가와 이로 인한 제어 발산(Wind-up)을 억제하기 위해, PX4 내부에서는 착륙 고도 진입 시점부터 수직 게인 스케줄링(Gain Scheduling)과 제어 적분기 동결(Anti-windup) 조치가 치열하게 이루어지고 있다. 따라서 독자적인 GCS나 ROS2 Offboard 로직으로 착륙을 시도할 때에도, 반드시 기체 센서의 지면 근접 판독 플래그(land_detector 상태)를 토픽으로 폴링(Polling)하며 동기화된 시스템 제어를 수행해야 한다.