피드로 돌아가기
Building a Custom Autonomous Drone Stack - Part 3: The Zero-Velocity Hover
Dev.toDev.to
Infrastructure

GPS-Denied 환경 내 VELOCITY_MASK 기반 제로 속도 호버링 구현

Building a Custom Autonomous Drone Stack - Part 3: The Zero-Velocity Hover

Harsh Pandhe2026년 6월 25일4advanced

Context

GPS 수신 불가한 실내 환경에서 Optical Flow와 LiDAR만으로 정밀 제어를 시도함. 기존 MAV_CMD_NAV_TAKEOFF 등 상위 네비게이션 스택이 전역 위치 정보 부재 시 작동하지 않는 제약 발생.

Technical Solution

  • 상위 네비게이션 컨트롤러를 우회하여 set_attitude_target_send() 기반의 Raw MAVLink 명령 주입을 통한 이륙 제어
  • LOITER 모드 전환 시 발생하는 RC 스틱 입력 간섭(Zero-Throttle Drop) 해결을 위해 GUIDED 모드 유지 전략 채택
  • set_position_target_local_ned_send() 함수에 VELOCITY_MASK(3527)를 적용하여 위치/가속도/Yaw 필드를 무시하고 X, Y, Z 속도 제어값만 강제
  • 절대 좌표 기반의 Position Control 대신 상대적 속도 유지 기반의 Velocity Control을 적용하여 누적 오차(Drift) 영향 최소화
  • Python 스크립트 런타임 에러 및 KeyboardInterrupt 발생 시 즉시 LAND 모드로 전환하는 Emergency Interceptor 구조 설계

1. GPS-Denied 환경 설계 시 절대 위치(Position)보다 속도(Velocity) 제어 루프를 우선 검토할 것

2. 하이브리드 모드(LOITER 등) 전환 시 외부 입력(RC Stick)과의 우선순위 충돌 여부를 확인하고 비트마스크(Bitmask)를 통한 제어 필드 명시적 정의를 적용할 것

3. 자율 주행 스택 설계 시 상위 의사결정 로직(Companion Computer)과 하위 반사 제어(Flight Controller)의 책임 분리를 철저히 유지할 것

원문 읽기