2、开发环境搭建:Windows/Linux下的环境配置、Qt与C++基础、MAVLink协议简介、源码编译与运行

说实话,搭建开发环境这件事,看着简单,但坑是真不少。我见过太多新手卡在这一步,还没开始写代码就先放弃了。所以这一章,我会把我在Windows和Linux上踩过的坑、总结的经验,一次性告诉你。

2.1 操作系统选择:Windows还是Linux?

这个问题我经常被问到。我的回答是:看你最终要部署到哪。

  • Windows:适合初学者,IDE友好,调试方便。我早期做地面站原型时,就是在Windows上搞的。
  • Linux(Ubuntu 20.04/22.04):生产环境首选,编译效率高,依赖管理清晰。我现在的项目基本都在Linux上跑。

我个人习惯是:Windows写代码,Linux编译部署。当然,你完全可以在一个系统上搞定一切。

💡 我的建议:如果你是第一次接触地面站开发,先用Windows。等熟悉了流程,再切到Linux也不迟。

2.2 Qt与C++环境配置

Qt是地面站开发的核心框架。说白了,没有Qt,你连个像样的界面都画不出来。

2.2.1 Windows下的Qt安装

  1. 去Qt官网下载Qt Online Installer。
  2. 安装时选择Qt 5.15.2(别问为什么选这个版本,稳定、兼容性好,我踩过6.x的坑)。
  3. 组件勾选:MSVC 2019 64-bit、MinGW 8.1.0、Qt Charts、Qt Serial Port。
  4. 安装完成后,配置系统环境变量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 飞行状态(空速、地速、高度)
🔑 核心要点:你不需要记住所有消息ID,但HEARTBEAT和ATTITUDE必须烂熟于心。我每次调试地面站,第一件事就是看心跳包有没有收到。

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下编译

  1. 用Qt Creator打开qgroundcontrol.pro。
  2. 选择MSVC 2019 64-bit编译器。
  3. 点击构建,然后去泡杯咖啡(第一次编译大概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连接。

⚠️ 避坑指南:我曾经在Linux下编译成功后,运行时报libQt5SerialPort.so.5找不到。原因是没安装libqt5serialport5-dev。所以,依赖库一定要装全。

2.5 本章小结

这一章我们走完了从环境搭建到源码编译的全流程。你想想看,其实每一步都不难,但细节决定成败。我个人觉得,环境搭建是地面站开发中最容易出问题的一环,但也是最能锻炼你解决问题能力的一环。

下一章,我们会深入地面站的架构设计。但在此之前,我建议你先把今天的内容亲手做一遍。只有自己踩过坑,才能真正记住。


可可精品资料库