2026년 04월 13일 PX4 주간 개발 동향: CI/CD 혁신, 비행 안정성 및 자율 비행 역량 강화
PX4 주간 통합 브리핑
이번 주 PX4 Autopilot 개발은 시스템의 전반적인 견고성, 안전성, 그리고 개발자 경험 개선에 중점을 둔 다면적인 양상을 보였습니다. 특히, 빌드 및 테스트 자동화 시스템(CI/CD)에 대한 광범위한 리팩토링 및 개선 작업이 두드러지며, 이는 코드 품질 향상과 개발 효율성 증대에 기여할 것으로 예상됩니다. 이와 더불어 EKF(Extended Kalman Filter) 보정 및 비행 모드 내 안전 기능 강화에 대한 활발한 논의와 코드 반영 시도가 이루어졌습니다.
핵심 기능 측면에서는 시뮬레이션 환경의 현실성 증대, 임베디드 로깅 지원 확장, 그리고 MAVLink 통신 안정성 개선에 대한 주목할 만한 진전이 있었습니다. 커뮤니티에서는 외부 비전 시스템 통합(VIO, SLAM) 및 LiDAR 센서 설정에 대한 깊은 관심과 기술적 문의가 지속되었으며, 이는 PX4가 고도화된 자율 비행 및 센서 융합 솔루션을 지향하고 있음을 보여줍니다. 장기적으로 미해결된 ‘stale’ 이슈들이 다수 존재하여, 특정 영역에 대한 집중적인 개선 노력이 필요하다는 점 또한 시사합니다.
핵심 GitHub 업데이트 (PX4-Autopilot)
PX4-Autopilot GitHub 리포지토리에서는 지난 7일간 다수의 PR이 병합(Merged)되거나 활발히 논의 중입니다. 이는 코드베이스의 지속적인 발전과 안정성 확보를 위한 노력을 반영합니다.
병합된 주요 PR 분석 (Closed PRs)
지난주에는 총 21건의 PR이 병합되었으며, 이 중 상당수가 CI/CD 인프라 개선 및 핵심 시스템 안정성 강화에 집중되어 있습니다.
- refactor(io_timer): make timer_io_channels[].timer_channel 0-indexed: 내부 타이머 채널 인덱싱 개선으로 코드의 일관성을 높였습니다.
- fix(ekf2): fix observation_variance unit mismatch in comparison: EKF2의 관측 분산 단위 불일치를 수정하여 상태 추정의 정확도를 향상시켰습니다. 이는 비행 안정성에 중요한 영향을 미칩니다.
- camera_trigger: fix interval command to apply at runtime: 카메라 트리거 간격 설정이 런타임에 즉시 적용되도록 수정되어 동적 매핑 및 촬영 작업의 유연성을 증대시켰습니다.
- docs(maintainers): introduce Code Owner and Reviewer maintainer types: 코드 소유자 및 리뷰어 유형을 도입하여 개발 워크플로우를 명확히 하고 책임 분담을 개선했습니다.
- ci: orchestration by tiers & ci(build-all): MCU-based grouping, cache seeders, and build infrastructure overhaul: CI 시스템 전반에 걸친 대규모 개편으로, 빌드 시간을 단축하고 효율성을 극대화하여 개발 주기를 가속화할 것으로 기대됩니다.
- fix(mavlink): prevent HIL_GPS length mismatch with older clients…: MAVLink HIL_GPS 메시지 호환성 문제를 해결하고 멀티-GPS를 지원하여 하드웨어 인 더 루프 시뮬레이션의 신뢰성을 높였습니다.
- bring back `px4-rc.params` file to set user defined params: 사용자 정의 파라미터 설정을 위한 `px4-rc.params` 파일 지원을 다시 추가하여 유연한 시스템 설정을 가능하게 했습니다.
- fix(battery): copy vehicle status states at central place to avoid logic not executed due to previous read & fix(battery): Debounce battery connected state in battery library to tolerate 0V spike: 배터리 상태 감지 로직 및 연결 상태 디바운싱 개선으로 전력 시스템의 신뢰성을 크게 향상시켰습니다.
- mavlink: fix stack buffer overflow in log handler filepath parsing: MAVLink 로그 핸들러의 스택 버퍼 오버플로우 취약점을 수정하여 시스템 보안과 안정성을 강화했습니다.
- ci(mavros): merge mission+offboard into one workflow, migrate to noetic and Python 3: MAVROS CI 워크플로우를 통합하고 ROS Noetic 및 Python 3으로 마이그레이션하여 최신 개발 환경을 지원합니다.
- ci(clang-tidy): run incrementally on PRs and post inline annotations: Clang-tidy를 PR에서 증분적으로 실행하고 인라인 주석을 제공하여 코드 품질 검토를 자동화하고 개선합니다.
- ci(workflows): wire ccache and caches across SITL, ROS, macOS, Ubuntu: CI 워크플로우 전반에 ccache 및 캐싱을 적용하여 빌드 시간을 대폭 단축했습니다.
오픈된 크리티컬 PR 및 이슈 (Open PRs & Issues)
지속적인 논의가 필요한 중요 PR과 해결해야 할 이슈들도 다수 존재합니다.
- feat(failure_detector): unite motorfailure offsets: 모터 고장 감지 로직을 통합하여 시스템의 안전성과 예측 가능성을 높이는 중요한 기능 추가입니다.
- feat(simulation): add dual-IMU and fault injection to SIH: 하드웨어 인 더 루프(SIH) 시뮬레이션에 듀얼-IMU 및 고장 주입 기능을 추가하여 실제 환경과 유사한 테스트 시나리오를 가능하게 합니다. 이는 안전성 검증에 필수적입니다.
- feat(logger): add support for small flash storage (19 Comments): 소형 플래시 스토리지를 위한 로거 지원은 제한된 자원을 가진 보드에서의 데이터 로깅 기능을 확장하는 데 중요합니다. 활발한 논의는 이 기능의 중요성을 방증합니다.
- fix(mavlink): reset mission sequence on platform restart: 플랫폼 재시작 시 MAVLink 미션 시퀀스를 재설정하여 미션의 연속성과 신뢰성을 확보하는 버그 수정입니다.
- feat(manual_control): replace stick override threshold with double-flick gesture: 수동 제어의 스틱 오버라이드 임계값을 더블-플릭 제스처로 대체하여 사용자 경험을 개선합니다.
- fix(ekf2): correct EV orientation variance inflation and NE aiding check (11 Comments): 외부 비전(EV) 시스템 사용 시 EKF2의 방위각 분산 인플레이션 및 NE(North-East) 보조 확인 로직을 개선하여 VIO 기반 항법의 정확도를 높입니다.
- fix(navigator): rtl compute wind angle to select best land approach based on rally point location instead of home location (5 Comments): RTL(Return-to-Launch) 시 바람 각도 계산을 랠리 포인트 기준으로 하여 최적의 착륙 접근 경로를 선택하도록 개선하는 중요한 항법 로직 수정입니다. 이는 비행 안전 및 효율성에 직접적인 영향을 미칩니다.
- feat(uavcan): upload firmware to skynode and flash on CAN node: UAVCAN 펌웨어 업로드 및 CAN 노드 플래시 기능을 추가하여 분산된 시스템 관리 및 펌웨어 업데이트 프로세스를 간소화합니다.
- feat(safety): gps Redundancy Failsafe (11 Comments): GPS 이중화 페일세이프 기능은 멀티-GPS 시스템의 안정성을 극대화하여 항법 신뢰도를 높이는 핵심 안전 기능입니다.
- feat(commander): uncommanded altitude loss detection with parachute f… (2 Comments): 비정상적인 고도 손실을 감지하고 낙하산 배포와 같은 비상 조치를 취할 수 있는 안전 기능으로, 심각한 비행 사고를 방지할 수 있습니다.
다수의 ‘stale’ 레이블이 붙은 이슈들(data link loss fail-safe do not work in POSCTL/ALTHOLD, Smart RTL 등)은 오랫동안 해결되지 않은 채 남아있으며, 이는 커뮤니티의 지속적인 관심과 기여가 필요한 영역임을 보여줍니다. 특히 [Bug] “Heading estimate invalid” when flying with VIO Only와 같은 VIO 관련 버그는 자율 비행 시스템 개발에 있어 해결이 시급한 문제입니다.
Weekly Dev Call & 커뮤니티 동향
지난 4월 8일에 진행된 PX4 주간 개발자 콜(PX4 Dev Call: Apr 08, 2026)은 정기적인 팀 동기화 및 커뮤니티 Q&A 세션으로 진행되었습니다. 특정 주요 의제가 공표되지는 않았으나, 전반적인 개발 상황을 공유하고 커뮤니티 질의응답을 처리하는 데 집중한 것으로 보입니다.
공식 Discourse 포럼에서는 PX4 Autopilot 및 Pixhawk 관련하여 다음과 같은 주요 동향이 관찰되었습니다.
- 고급 센서 및 자율 비행 통합: “External Vision Position Estimate not working correctly”, “LiVOX MID360 FASTLIO SLAM”, “How to configure Benewake TF Series LiDARs” 등의 주제는 외부 비전 및 LiDAR 센서를 활용한 정밀한 위치 추정 및 환경 인지에 대한 높은 관심을 보여줍니다. 이는 GitHub의 EKF2 개선(PR #26622) 및 VIO 관련 버그(Issue #27031)와 직접적으로 연결되며, 고도화된 자율 비행 기능 구현을 위한 핵심 과제임을 알 수 있습니다.
- 하드웨어 통합 및 맞춤형 개발: “Custom FMUv4 board on PX4 v1.14.0: USB works in bootloader, but MAVLink does not start in app firmware”, “X650 Esc1 issue” 등은 커스텀 하드웨어 또는 특정 보드에서의 PX4 펌웨어 포팅 및 동작 문제에 대한 문의입니다. 이는 PX4의 범용성만큼이나 다양한 하드웨어 환경에서의 안정적인 동작이 중요하다는 것을 시사합니다.
- 시뮬레이션 및 테스트: “Custom GZ aircraft mdl not moving forward during takeoff in SIL due to ‘stiction’ phenomenon”과 같은 시뮬레이션 관련 문제는 GitHub의 SIH 개선(PR #27072) 노력과 맞물려, 보다 현실적인 개발 및 테스트 환경 구축의 필요성을 강조합니다.
- 데이터 로깅 및 QGC 연동: “QGC .ulg files download is so slow”는 QGroundControl을 통한 로그 파일 관리의 성능 이슈를 제기하며, 대용량 데이터를 처리하는 과정에서 사용자 경험 개선의 여지가 있음을 보여줍니다. 이는 GitHub의 로거 기능 확장(PR #26233)과도 연관되어 종합적인 성능 개선이 요구됩니다.
- 초보 개발자 지원: “New to building drones”, “Building autonomous drone”과 같은 질문은 PX4 생태계에 새로 진입하는 개발자들을 위한 지속적인 가이드와 자료 제공의 중요성을 보여줍니다.
서브 시스템 동향 (MAVLink, MAVSDK, QGC)
MAVLink
MAVLink 스택은 안정성과 호환성 측면에서 중요한 업데이트가 이루어졌습니다. GitHub에서는 플랫폼 재시작 시 미션 시퀀스를 재설정하는 수정(PR #27045)과 오래된 클라이언트와의 HIL_GPS 길이 불일치를 방지하는 수정(PR #26732), 그리고 로그 핸들러의 스택 버퍼 오버플로우를 수정하는 보안 관련 패치(PR #26558)가 병합되었습니다. Discourse의 Dronecode 섹션에서는 MAVLink를 활용한 “Deep Dive: Building a Raw MAVLink Control System (Pico 2 + Custom QGC UI)” 주제가 논의되어, 저수준 커스텀 MAVLink 통합에 대한 개발자들의 관심이 엿보입니다.
MAVSDK
MAVSDK 사용과 관련하여 중요한 운영상 문제가 Discourse에서 제기되었습니다: “PX4 enters failsafe if a new flight starts while MAVSDK log download is still running from an onboard computer“. 이는 온보드 컴퓨터에서 MAVSDK를 통해 로그를 다운로드하는 동안 새로운 비행이 시작될 경우 PX4가 페일세이프 모드로 진입하는 문제로, 임무 수행의 연속성과 안정성에 심각한 영향을 미칠 수 있습니다. MAVSDK 사용자들은 이 문제를 해결하기 위한 견고한 로그 관리 및 페일세이프 트리거 로직에 대한 개선을 기대할 것입니다.
QGroundControl (QGC)
QGroundControl은 PX4 생태계의 주요 지상 통제 시스템으로서 지속적인 발전이 요구됩니다. Dronecode 섹션의 “[Hiring] Immediately Seeking Part-Time Remote QGC Developer for Public Safety Drone Use cases” 공고는 공공 안전 드론 활용 사례를 위한 QGC 개발 수요가 있음을 명확히 보여줍니다. 이는 특정 산업 분야에서 요구하는 맞춤형 기능 개발 또는 기존 기능의 강화가 필요함을 시사합니다. 또한, “How to add a new language to QGC?”와 같은 질문은 QGC의 국제화 및 접근성 향상에 대한 커뮤니티의 요구를 반영합니다. 사용자 경험 측면에서는 PX4 Autopilot 섹션에서 언급된 “.ulg files download is so slow” 문제처럼, QGC와 PX4 간의 데이터 전송 및 처리 효율성 개선에 대한 요구가 지속될 것으로 보입니다.
