2. 开发环境搭建:Ubuntu系统安装、ROS2环境配置、PX4源码编译、QGroundControl地面站安装

说实话,做飞控开发这么多年,我见过太多人卡在环境搭建这一步。明明代码逻辑没问题,编译就是过不去。嗯,这很正常。我自己刚入行时,光装Ubuntu就折腾了三天。所以这一章,我把踩过的坑、总结的经验,一次性给你讲透。

2.1 Ubuntu系统安装——选对版本,少走弯路

我个人习惯用Ubuntu 22.04 LTS。为什么?因为ROS2 Humble官方推荐的就是它。你想想看,如果选了个冷门版本,后面装ROS2时各种依赖冲突,那叫一个头疼。

核心建议:新手直接装Ubuntu 22.04 LTS,别折腾其他版本。

安装方式有两种:

  • 双系统:性能最好,适合长期开发。我建议至少分80GB给Ubuntu。
  • 虚拟机:方便切换,但USB直连飞控时容易掉线。我早期用VMware,后来发现VirtualBox对USB3.0支持更好。

安装时注意几点:

  • 分区时,/根目录给30GB,/home给50GB,swap给8GB(内存16GB以上可以不用swap)。
  • 安装过程中断网,可以跳过在线更新,省时间。
  • 装完后先换源,中科大或清华的源都行。命令很简单:sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

小技巧:装完系统第一件事,运行sudo apt update && sudo apt upgrade -y。我曾经因为跳过这步,后面编译PX4时缺了一堆库,排查了整整一下午。

2.2 ROS2环境配置——Humble版本最稳

ROS2版本很多,但Humble是LTS,支持到2027年。说白了,你选它,未来三年都不用折腾升级。

安装步骤其实就几行命令:

# 设置编码
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe

# 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop

# 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

装完后,运行ros2 run demo_nodes_cpp talker,如果能看到输出,说明环境没问题。

注意:如果你同时装了ROS1和ROS2,环境变量会冲突。我建议用alias命令分别设置,或者干脆只装ROS2。毕竟现在新项目基本都用ROS2了。

我个人习惯再装几个常用工具:

  • colcon:编译工具,比catkin好用。
  • rviz2:可视化调试,看传感器数据很方便。
  • tf2:坐标变换库,做多机协同时会用到。

2.3 PX4源码编译——从拉取到固件生成

PX4的编译,说白了就是三步:拉代码、装依赖、编译。但每一步都有坑。

先拉取源码:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot

--recursive参数很重要,它会同时拉取子模块。我遇到过有人忘了加这个参数,编译时缺了mavlink库,报错信息看得一头雾水。

然后装依赖:

bash ./Tools/setup/ubuntu.sh

这个脚本会自动安装所有依赖。但注意,它默认会装ROS1的依赖。如果你只用ROS2,可以加参数:bash ./Tools/setup/ubuntu.sh --no-ros1

避坑指南:我曾经在Ubuntu 20.04上运行这个脚本,结果它装了gcc-9,而PX4需要gcc-10。编译时一堆语法错误。后来我手动装了gcc-10才解决。所以建议先检查gcc版本:gcc --version

最后编译:

make px4_sitl_default

第一次编译会比较慢,大概20-30分钟。如果编译成功,你会看到类似这样的输出:

-- Build files have been written to: /home/user/PX4-Autopilot/build/px4_sitl_default
[100%] Linking CXX executable px4

编译完成后,可以运行仿真测试:

make px4_sitl_default gazebo

如果Gazebo能正常启动,并且看到四旋翼模型,说明环境搭建成功了。

2.4 QGroundControl地面站安装——调试必备

QGC是调试飞控的利器。我每次调参、看日志、刷固件,都离不开它。

安装方式很简单:

# 下载AppImage
wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage

# 赋予执行权限
chmod +x ./QGroundControl.AppImage

# 运行
./QGroundControl.AppImage

如果运行时报错缺少库,可以装这个:

sudo apt install libfuse2

小技巧:QGC默认会占用串口。如果你同时用其他工具(比如PuTTY)连接飞控,记得先关闭QGC。我早期调试时,经常因为端口被占用而抓狂。

连接飞控后,建议先做这几件事:

  • 校准传感器:加速度计、陀螺仪、磁力计。
  • 设置机架类型:选四旋翼X型或十字型。
  • 检查参数:比如COM_RC_IN_MODE是否设为RC通道。

2.5 知识体系总览

下面这张图,是我自己总结的环境搭建流程。你跟着走,基本不会出错。

开发环境搭建知识体系 Ubuntu 22.04 LTS ROS2 Humble PX4源码编译 QGroundControl 关键工具与命令 • git clone --recursive • colcon build • make px4_sitl_default • ros2 run • QGC AppImage • gazebo仿真 • 传感器校准 常见避坑点 • 先换源再装包 • 检查gcc版本 • 子模块要拉全 • 端口冲突处理 • 环境变量配置 • 依赖版本匹配 • 仿真与实机切换

这张图从左到右,展示了环境搭建的完整链路。左侧是常见坑点,右侧是常用命令。你照着这个流程走,基本不会出大问题。

2.6 验证环境是否正常

全部装完后,我建议做一次完整验证:

  1. 打开终端,运行ros2 topic list,看能不能列出话题。
  2. 运行make px4_sitl_default gazebo,看Gazebo能不能启动。
  3. 打开QGC,看能不能自动检测到仿真飞控(端口通常是tcp://127.0.0.1:14550)。

如果这三步都正常,恭喜你,环境搭建成功了。接下来就可以开始写代码、调参数了。

最后说一句:环境搭建是飞控开发中最枯燥、但也是最关键的一步。我见过太多人因为环境问题放弃。别急,慢慢来。装好了,后面就顺了。


公众号:蓝海资料掘金营,微信deep3321