QGroundControl(QGC) 개발자 가이드

- for Windows (4/9)

by 연화유심

Part 4. Communication Flow & Plugin Architecture (통신 흐름 및 플러그인 아키텍처)

이 파트에서는 Windows 환경에서 QGroundControl(QGC)의 MAVLink 통신 구조와 플러그인 아키텍처를 설명합니다. 외부 메시지 흐름(드론 ↔ QGC)과 내부 아키텍처 흐름(LinkManager, MAVLinkProtocol 등)을 모두 다루며, 공식 Developer Guide의 Firmware Plugin 내용도 반영했습니다.


1) MAVLink 메시지 흐름 (외부 관점)

드론 → QGC: Telemetry 데이터, 센서 정보, 상태 메시지

QGC → 드론: 모드 변경, 미션 업로드, 제어 명령

이러한 메시지 흐름은 QGC의 MAVLink Inspector를 통해 실시간으로 확인할 수 있으며, MAVLink Analyzer를 통해 메시지 전송률과 손실률도 분석할 수 있습니다.


2) Communication Flow 상세 (내부 관점)

QGC 내부에서 메시지가 처리되는 흐름은 다음과 같습니다:
1. LinkManager: UDP/Serial 연결을 관리하며 Heartbeat를 항상 수신 대기.
2. MAVLinkProtocol: 수신된 바이트 스트림을 MAVLink 메시지로 변환.
3. MultiVehicleManager: Heartbeat를 기반으로 Vehicle 객체 생성.
4. ParameterLoader: Vehicle 파라미터를 요청하고 로드.
5. MissionManager: 미션 아이템 요청 및 관리.
6. VehicleComponents: Setup View UI와 연결되어 센서, 카메라, GPS 설정 페이지 제공.


3) 플러그인 아키텍처 개요

펌웨어별 차이를 처리하고 확장성을 제공하기 위해 QGC는 플러그인 구조를 사용합니다:

FirmwarePlugin: 펌웨어(PX4, ArduPilot)별 동작 정의 (예: 비행 모드 매핑, 미션 처리)

AutoPilotPlugin: 파라미터 로딩 및 설정 UI 제공

QGCCorePlugin: 앱 전체의 동작과 UI를 커스터마이징 가능
(예: Setup View 항목 추가, 초기화 절차 변경)


4) 예시: 플러그인 확장

새로운 펌웨어 지원: FirmwarePlugin 상속 후 비행 모드 정의.

파라미터 관리: AutoPilotPlugin 확장해 전용 파라미터 UI 제공.

앱 전역 수정: QGCCorePlugin을 커스터마이징해 메뉴, 초기 설정 화면 변경.


5) Windows 개발 환경 팁

Visual Studio 디버거에서 LinkManager와 MAVLinkProtocol의 실행 포인트를 추적하면 통신 흐름 이해가 쉽습니다.

MAVLink Inspector를 켜서 Heartbeat와 주요 메시지가 정상적으로 수신되는지 확인하세요.

VehicleComponent를 확장하면 Setup View에 새 하드웨어/센서 설정 UI를 쉽게 추가할 수 있습니다.


6) 다음 단계

외부 메시지 흐름과 내부 아키텍처, 그리고 플러그인 구조를 이해했으므로, Part 5에서는 QGC의 사용자 인터페이스(UI) 구조와 QML 기반 개발 방식을 Windows 환경에서 살펴봅니다.

작가의 이전글QGroundControl(QGC) 개발자 가이드