- for Windows (4/9)
이 파트에서는 Windows 환경에서 QGroundControl(QGC)의 MAVLink 통신 구조와 플러그인 아키텍처를 설명합니다. 외부 메시지 흐름(드론 ↔ QGC)과 내부 아키텍처 흐름(LinkManager, MAVLinkProtocol 등)을 모두 다루며, 공식 Developer Guide의 Firmware Plugin 내용도 반영했습니다.
드론 → QGC: Telemetry 데이터, 센서 정보, 상태 메시지
QGC → 드론: 모드 변경, 미션 업로드, 제어 명령
이러한 메시지 흐름은 QGC의 MAVLink Inspector를 통해 실시간으로 확인할 수 있으며, MAVLink Analyzer를 통해 메시지 전송률과 손실률도 분석할 수 있습니다.
QGC 내부에서 메시지가 처리되는 흐름은 다음과 같습니다:
1. LinkManager: UDP/Serial 연결을 관리하며 Heartbeat를 항상 수신 대기.
2. MAVLinkProtocol: 수신된 바이트 스트림을 MAVLink 메시지로 변환.
3. MultiVehicleManager: Heartbeat를 기반으로 Vehicle 객체 생성.
4. ParameterLoader: Vehicle 파라미터를 요청하고 로드.
5. MissionManager: 미션 아이템 요청 및 관리.
6. VehicleComponents: Setup View UI와 연결되어 센서, 카메라, GPS 설정 페이지 제공.
펌웨어별 차이를 처리하고 확장성을 제공하기 위해 QGC는 플러그인 구조를 사용합니다:
FirmwarePlugin: 펌웨어(PX4, ArduPilot)별 동작 정의 (예: 비행 모드 매핑, 미션 처리)
AutoPilotPlugin: 파라미터 로딩 및 설정 UI 제공
QGCCorePlugin: 앱 전체의 동작과 UI를 커스터마이징 가능
(예: Setup View 항목 추가, 초기화 절차 변경)
새로운 펌웨어 지원: FirmwarePlugin 상속 후 비행 모드 정의.
파라미터 관리: AutoPilotPlugin 확장해 전용 파라미터 UI 제공.
앱 전역 수정: QGCCorePlugin을 커스터마이징해 메뉴, 초기 설정 화면 변경.
Visual Studio 디버거에서 LinkManager와 MAVLinkProtocol의 실행 포인트를 추적하면 통신 흐름 이해가 쉽습니다.
MAVLink Inspector를 켜서 Heartbeat와 주요 메시지가 정상적으로 수신되는지 확인하세요.
VehicleComponent를 확장하면 Setup View에 새 하드웨어/센서 설정 UI를 쉽게 추가할 수 있습니다.
외부 메시지 흐름과 내부 아키텍처, 그리고 플러그인 구조를 이해했으므로, Part 5에서는 QGC의 사용자 인터페이스(UI) 구조와 QML 기반 개발 방식을 Windows 환경에서 살펴봅니다.