2、开发环境搭建:Windows/Linux下的环境配置、Qt与C++基础、MAVLink协议简介、源码编译与运行
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,还没开始写代码就先放弃了。所以这一章,我会把我在Windows和Linux上踩过的坑、总结的经验,一次性告诉你。
2.1 操作系统选择:Windows还是Linux?
这个问题我经常被问到。我的回答是:看你最终要部署到哪。
- Windows:适合初学者,IDE友好,调试方便。我早期做地面站原型时,就是在Windows上搞的。
- Linux(Ubuntu 20.04/22.04):生产环境首选,编译效率高,依赖管理清晰。我现在的项目基本都在Linux上跑。
我个人习惯是:Windows写代码,Linux编译部署。当然,你完全可以在一个系统上搞定一切。
2.2 Qt与C++环境配置
Qt是地面站开发的核心框架。说白了,没有Qt,你连个像样的界面都画不出来。
2.2.1 Windows下的Qt安装
- 去Qt官网下载Qt Online Installer。
- 安装时选择Qt 5.15.2(别问为什么选这个版本,稳定、兼容性好,我踩过6.x的坑)。
- 组件勾选:
MSVC 2019 64-bit、MinGW 8.1.0、Qt Charts、Qt Serial Port。 - 安装完成后,配置系统环境变量
QTDIR指向你的Qt安装路径。
Qt Serial Port,折腾了半天才发现串口模块没装。你想想看,这多耽误事。
2.2.2 Linux下的Qt安装
Linux下就简单多了,一条命令搞定:
sudo apt-get install qt5-default qtcreator qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5serialport5-dev libqt5charts5-dev
嗯,这里要注意:Ubuntu 22.04 默认源里没有 qt5-default,需要手动添加PPA或者直接编译安装。我建议你直接用 apt install qtbase5-dev 替代。
2.2.3 C++编译器配置
| 系统 | 推荐编译器 | 安装方式 |
|---|---|---|
| Windows | MSVC 2019 / MinGW | Qt安装时自带 |
| Linux | GCC 9.3+ | sudo apt install g++ |
我个人习惯用MSVC,因为调试信息更友好。但如果你在Linux上,GCC完全够用。
2.3 MAVLink协议简介
MAVLink,说白了就是无人机和地面站之间的“普通话”。没有它,你发指令、收数据都无从谈起。
2.3.1 什么是MAVLink?
MAVLink是一种轻量级的消息协议,专门用于微型飞行器。它定义了消息格式、消息ID、数据字段等。我刚开始接触时,觉得它很复杂,其实核心就两点:
- 消息结构:每个消息都有一个ID,比如
HEARTBEAT是0,SYS_STATUS是1。 - 序列化/反序列化:把C结构体变成字节流,或者反过来。
2.3.2 MAVLink消息结构
一个典型的MAVLink消息长这样:
| 起始标志 | 有效载荷长度 | 序列号 | 系统ID | 组件ID | 消息ID | 有效载荷 | 校验和 |
你看,其实不复杂。我当年第一次解析MAVLink数据时,就是对着这个结构逐字节读的。
2.3.3 常用MAVLink消息
| 消息ID | 消息名称 | 说明 |
|---|---|---|
| 0 | HEARTBEAT | 心跳包,判断连接是否正常 |
| 24 | GPS_RAW_INT | GPS原始数据(经纬度、高度) |
| 30 | ATTITUDE | 姿态数据(横滚、俯仰、偏航) |
| 74 | VFR_HUD | 飞行状态(空速、地速、高度) |
2.4 源码编译与运行
终于到了动手环节。这部分我建议你跟着做一遍,光看是学不会的。
2.4.1 获取源码
假设你用的是QGroundControl(最经典的开源地面站):
git clone https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git submodule update --init --recursive
这里有个坑:子模块一定要更新。我刚开始忘了这步,编译报了一堆错,查了半天才发现是MAVLink库没拉下来。
2.4.2 Windows下编译
- 用Qt Creator打开
qgroundcontrol.pro。 - 选择MSVC 2019 64-bit编译器。
- 点击构建,然后去泡杯咖啡(第一次编译大概10-15分钟)。
fatal error C1083,多半是路径问题。检查一下QTDIR环境变量有没有设置对。
2.4.3 Linux下编译
mkdir build
cd build
cmake ..
make -j4
嗯,这里要注意:-j4表示用4个线程编译。如果你的CPU核心多,可以改成-j8甚至-j16,速度会快很多。
2.4.4 运行与测试
编译成功后,你会得到一个可执行文件。在Windows下是qgroundcontrol.exe,在Linux下是qgroundcontrol。
运行后,你会看到地面站界面。如果一切正常,你应该能看到心跳包在闪烁。如果没有,检查一下串口或UDP连接。
libQt5SerialPort.so.5找不到。原因是没安装libqt5serialport5-dev。所以,依赖库一定要装全。
2.5 本章小结
这一章我们走完了从环境搭建到源码编译的全流程。你想想看,其实每一步都不难,但细节决定成败。我个人觉得,环境搭建是地面站开发中最容易出问题的一环,但也是最能锻炼你解决问题能力的一环。
下一章,我们会深入地面站的架构设计。但在此之前,我建议你先把今天的内容亲手做一遍。只有自己踩过坑,才能真正记住。
可可精品资料库