QGC 学习资料
1. 资料
1.1. QGC使用入门资料
1.2. QGC优化
1.3. 界面相关资料
1.4. 其他地面站工程
1.5. QGC(master) 编译
需要同时按照runtime
版本和devel
版本,安装完成之后,设置环境变量GSTREAMER_1_0_ROOT_MSVC_X86_64
:
1
GSTREAMER_1_0_ROOT_MSVC_X86_64 = d:\dev_libs\gstreamer\1.0\msvc_x86_64\
- Download GStreamer
- Gstreamer安装和使用
- pkg-config for windows
- gstreamer 中文教程
- 常见问题:GStreamer的使用
- PX4 – Simulation
2. QGC 核心架构图示
UML 核心类图(下载本地放大查看):
核心系统分析图(下载本地放大查看):
引用:
3. QGC / MAVLink 通信流程
flowchart TD
A[QGC Application] --> B[VehicleLinkManager]
B --> C1[UDP Link]
B --> C2[Serial Link]
B --> C3[TCP Link]
C1 & C2 & C3 --> D[MAVLinkProtocol]
D --> E[MAVLink Messages]
E --> F[Vehicle Manager]
F --> G1[Vehicle]
G1 -- Telemetry/Status/Command --> E
%% Additional flows for message routing and plugins
E --> H[QGC Plugins and UI Components]
H --> I[User Interaction / Display]
%% Optional: GCS communication
B --> J[Other GCS]
J --> E
%% Note
style D fill:#f9f,stroke:#333,stroke-width:2px
%% Legend
subgraph Legend [Legend]
direction LR
L1[Boxes: QGC Components]
L2[Arrows: Data/Message Flow]
end
通信流程说明
- QGroundControl 启动后,由
VehicleLinkManager
管理与飞行器的所有链接(如UDP、串口、TCP等)。 - 各类物理/网络连接(UDP、串口、TCP)通过
VehicleLinkManager
建立。 - 所有数据流进入
MAVLinkProtocol
模块进行MAVLink消息的解析与封装。 - MAVLink消息被分发到
Vehicle Manager
,并进一步与车辆(如无人机)交互。 - 车辆端会通过回传消息(如遥测、状态、命令响应等)同样经过上述流程返回QGC。
- QGC插件和UI组件可订阅和处理这些消息,实现用户交互和数据显示。
- 多地面站(GCS)通信时,消息也可在多个QGC实例间流转。
以上流程图和说明基于 QGC dev guide – Communication Flow。
LinkManager
建立一个UDP
监听端口(14550
),等待飞行器心跳包;- 字节流经过
MAVLinkProtocol
转换为MAVLink
消息包; - 如果是心跳包,
MAVLinkProtocol
将消息包转发给MultiVehicleManager
; MultiVehicleManager
接收到心跳包,创建一个新的Vehicle
对象,并将其添加到_vehicles
列表中;Vehicle
根据对应的_firmwareType
、_vehicleType
创建对应的FirmwarePlugin
;FirmwarePlugin
根据_vehicleType
创建对应的AutoPilotPlugin
;Vehicle
实例创建完成,其持有的ParameterLoader
实例发送PARAM_REQUEST_LIST
给飞行器,请求飞行器参数列表(使用pramater protocol
);- 飞行器参数列表加载完成之后,
Vehicle
对应的MissionManager
实例持有的MissionManager
请求飞行任务items
(使用mission protol
);
心跳数据流转:
UDPWorker::dataReceived
-> UDPLink::_onDataReceived
/ LinkInterface::bytesReceived
-> MAVLinkProtocol::receiveBytes
/ MAVLinkProtocol::vehicleHeartbeatInfo
-> MultiVehicleManager::_vehicleHeartbeatInfo
/ new Vehicle
。
3.1. 资料
本文由作者按照 CC BY 4.0 进行授权