1、QGC入门:QGC项目简介、QGC发展历史、QGC核心功能概览、QGC源码获取与编译
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊QGC——这个在无人机地面站领域绕不开的开源项目。
说实话,我第一次接触QGC是在2016年,当时被它的界面和功能吓了一跳。一个开源项目,能做到这种程度,确实不多见。后来我深度参与了几个基于QGC的二次开发项目,踩了不少坑,也积累了一些经验。今天就把这些干货分享给大家。
1.1 QGC项目简介
QGC,全称QGroundControl,是一个开源的、跨平台的地面站控制软件。它支持Windows、macOS、Linux、iOS和Android。说白了,它就是无人机的大脑在地面上的延伸。
我个人习惯把QGC看作一个“万能遥控器”。它不仅能控制无人机飞行,还能规划航线、分析日志、配置参数。你想想看,一个软件搞定这么多事,背后得有多复杂的架构。
核心定位:QGC是PX4和ArduPilot两大开源飞控生态的官方推荐地面站。它不是一个玩具,而是专业级工具。
QGC的架构设计非常清晰。它基于Qt框架开发,使用C++和QML混合编程。这种组合的好处是:底层性能用C++保证,上层界面用QML快速迭代。
1.2 QGC发展历史
QGC的历史,其实就是无人机开源生态发展的一个缩影。我把它分成了几个关键阶段,大家看这张表就明白了。
| 阶段 | 时间 | 关键事件 | 我的评价 |
|---|---|---|---|
| 萌芽期 | 2012-2014 | 最初由Lorenz Meier创建,作为PX4的配套地面站 | 功能简陋,但方向对了 |
| 成长期 | 2015-2017 | 引入Qt/QML架构,支持ArduPilot,界面大改版 | 这个阶段我刚开始用,界面变化很大 |
| 成熟期 | 2018-2020 | 支持MAVLink 2.0,加入3D地图、参数管理、日志分析 | 功能基本定型,开始稳定 |
| 生态期 | 2021-至今 | 插件化架构,支持自定义UI,企业级定制需求增多 | 现在正是二次开发的好时机 |
我记得在2018年,QGC的代码量还不到50万行。现在?已经超过100万行了。这个增长速度,说明社区非常活跃。
1.3 QGC核心功能概览
QGC的功能很多,但核心的就那么几个。我给大家梳理一下,这样你们后续学习时心里有数。
- 飞行控制:手动控制、自动起飞、降落、返航、悬停。这是最基本的功能。
- 航线规划:在地图上点击生成航点,支持多种测绘模式。我在做农业植保项目时,这个功能帮了大忙。
- 参数管理:读取、修改、保存飞控参数。嗯,这里要注意,改参数前一定要备份。
- 实时监控:显示飞行姿态、位置、电池、GPS等数据。说白了,就是飞机的仪表盘。
- 日志分析:下载并分析飞行日志,排查故障。我曾经靠这个功能,帮客户找出了飞控的硬件问题。
- 地图支持:内置谷歌地图、必应地图、OpenStreetMap等。支持离线地图。
- 多语言支持:包括中文。这个对国内开发者很友好。
小提示:QGC的“参数管理”模块是二次开发的高频切入点。很多定制需求,比如修改默认参数、增加参数校验逻辑,都在这里做。
这些功能背后,都依赖一个核心协议——MAVLink。QGC通过MAVLink与飞控通信。所以,理解MAVLink是二次开发的基础。
1.4 QGC源码获取与编译
这部分是实操环节。我建议大家跟着我的步骤来,别跳步。我曾经因为跳过一步,浪费了半天时间。
1.4.1 获取源码
QGC的源码托管在GitHub上。地址是:https://github.com/mavlink/qgroundcontrol
我个人习惯用git clone命令,而不是直接下载ZIP包。因为后续更新方便。
git clone https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git checkout Stable_V4.2 # 建议使用稳定版
避坑指南:我曾经直接拉取master分支,结果编译时遇到一堆依赖问题。后来发现,master分支是开发版,不稳定。建议大家用Stable_V4.2或更新的稳定版标签。
1.4.2 编译环境搭建
QGC的编译环境,说白了就是Qt环境。我推荐使用Qt 5.15.2版本,这是目前最稳定的。
| 操作系统 | 推荐Qt版本 | 额外依赖 | 注意事项 |
|---|---|---|---|
| Windows | Qt 5.15.2 | MSVC 2019, Git | 路径不要有中文 |
| macOS | Qt 5.15.2 | Xcode 12+ | 需要安装Command Line Tools |
| Ubuntu 20.04 | Qt 5.15.2 | gcc 9+, CMake 3.16+ | 建议用apt安装依赖 |
安装Qt时,记得勾选以下组件:
- Qt 5.15.2 下的 MSVC 2019 64-bit(Windows)或 clang_64(macOS)或 gcc_64(Linux)
- Qt Charts
- Qt Location(地图支持)
- Qt WebEngine(内置浏览器)
- Qt Quick 和 Qt Quick Controls 2
1.4.3 编译步骤
编译QGC其实不复杂。我用的是命令行方式,大家也可以直接用Qt Creator打开CMakeLists.txt。
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64 # Windows示例
cmake --build . --config Release
如果是Linux或macOS,把-G参数换成对应的生成器就行。
小技巧:第一次编译会下载很多依赖,包括MAVLink库、地图瓦片等。建议用稳定的网络环境。我一般在晚上编译,第二天早上就好了。
1.4.4 常见编译问题
编译过程中,你可能会遇到一些问题。我整理了几个常见的:
- 找不到Qt模块:检查Qt安装路径是否在系统环境变量中。
- MAVLink生成失败:需要安装Python 3,并安装
future库。 - 地图瓦片下载超时:可以配置代理,或者手动下载地图缓存。
- 编译内存不足:QGC编译时比较吃内存,建议至少8GB RAM。
嗯,这里要特别说一下。如果你在Windows上编译,建议关闭杀毒软件。我曾经被Windows Defender拦截了编译生成的临时文件,导致编译失败。
1.5 QGC整体架构图
为了让大家对QGC有个整体认识,我画了一张架构图。这张图涵盖了QGC的主要模块和它们之间的关系。
这张图很直观。从上到下分别是:用户界面层、业务逻辑层、通信层、硬件/飞控层。每一层都只依赖下一层,这种分层设计让二次开发变得非常清晰。
举个例子,如果你想定制一个全新的飞行控制界面,你只需要修改用户界面层的QML文件,业务逻辑层和通信层基本不用动。这就是分层架构的好处。
1.6 本章小结
好了,第一章的内容就到这里。我们聊了QGC是什么、怎么来的、能干什么、以及怎么拿到源码并编译。这些都是后续学习的基础。
我个人觉得,QGC最吸引人的地方,不是它功能多强大,而是它的架构设计非常优雅。你想想看,一个百万行级别的开源项目,能保持这么清晰的层次,确实不容易。