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 知识体系总览
下面这张图,是我自己总结的环境搭建流程。你跟着走,基本不会出错。
这张图从左到右,展示了环境搭建的完整链路。左侧是常见坑点,右侧是常用命令。你照着这个流程走,基本不会出大问题。
2.6 验证环境是否正常
全部装完后,我建议做一次完整验证:
- 打开终端,运行
ros2 topic list,看能不能列出话题。 - 运行
make px4_sitl_default gazebo,看Gazebo能不能启动。 - 打开QGC,看能不能自动检测到仿真飞控(端口通常是
tcp://127.0.0.1:14550)。
如果这三步都正常,恭喜你,环境搭建成功了。接下来就可以开始写代码、调参数了。
最后说一句:环境搭建是飞控开发中最枯燥、但也是最关键的一步。我见过太多人因为环境问题放弃。别急,慢慢来。装好了,后面就顺了。
公众号:蓝海资料掘金营,微信deep3321