2. 开发环境搭建:Ubuntu系统安装、ROS2 Humble安装、PX4 Autopilot源码编译、基础依赖包配置
说实话,搭建开发环境这件事,看着简单,但坑是真不少。我带过不少新人,十有八九第一周都卡在环境上。不是依赖冲突,就是编译报错,搞得很打击信心。
这一章,我就把整个流程拆开揉碎了讲。你跟着我的步骤走,基本能一次过。
2.1 Ubuntu 系统安装:选对版本很重要
PX4 官方推荐的是 Ubuntu 22.04 LTS。为什么是这个版本?因为 ROS2 Humble 就是基于 22.04 的。你如果用 20.04,后面装 Humble 会非常折腾。
我个人习惯是装双系统,虚拟机跑仿真性能损失太大。如果你电脑配置一般(内存小于 16G),建议直接双系统。
安装要点
- 下载镜像时选 Ubuntu 22.04.3 LTS(桌面版)
- 分区时建议:
/根目录 50G,/home给 100G+,swap给 8G - 安装过程中断网,可以跳过账号注册,装完再联网更新
2.2 ROS2 Humble 安装:别用一键脚本
ROS2 的安装,网上有很多一键脚本。但我建议你 手动按官方步骤来。为什么?因为一键脚本经常把源搞乱,后面装其他包时会出各种奇怪问题。
我记得有一次,一个同事用了一键脚本,结果 apt update 一直报 GPG 错误,查了半天才发现是脚本把密钥写错了位置。
安装步骤
- 设置 locale(确保 UTF-8)
- 添加 ROS2 源和密钥
- 安装
ros-humble-desktop(完整版,包含 rviz2 等工具) - 安装
python3-colcon-common-extensions(编译工具) - 配置环境变量(加到
~/.bashrc)
# 添加 ROS2 源
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 安装 ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop python3-colcon-common-extensions
# 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
ros2 run demo_nodes_cpp talker 测试一下。如果能看到 "Hello World" 在刷屏,说明 ROS2 装好了。
2.3 PX4 Autopilot 源码编译:从 GitHub 到可执行文件
这是整个环境搭建的核心。PX4 源码编译,说白了就是把 C++ 代码变成能在电脑上跑的仿真程序。
我刚开始接触 PX4 时,直接 git clone 就编译,结果报了一堆错。后来才发现,子模块没拉全。PX4 依赖很多第三方库,比如 uavcan、eigen 等,这些都在子模块里。
编译流程
- 克隆主仓库(带
--recursive参数) - 安装 PX4 工具链(主要是交叉编译器和 Python 依赖)
- 编译固件(选择
px4_sitl目标)
# 克隆源码(带子模块)
git clone --recursive https://github.com/PX4/PX4-Autopilot.git
cd PX4-Autopilot
# 安装 PX4 工具链
bash ./Tools/setup/ubuntu.sh
# 编译 SITL 仿真固件
make px4_sitl
编译第一次会比较慢,大概 15-30 分钟,取决于你的 CPU。如果中途报错,多半是网络问题导致子模块没拉下来。可以试试:
git submodule update --init --recursive
commander takeoff 测试一下,飞机会自动起飞。如果能看到这个,说明 PX4 环境已经跑通了。
2.4 基础依赖包配置:缺什么补什么
除了 ROS2 和 PX4 本身,还有一些基础依赖需要装。这些包就像螺丝钉,少了哪个都不行。
| 包名 | 用途 | 安装命令 |
|---|---|---|
gazebo |
3D 仿真环境 | sudo apt install gazebo |
python3-pip |
Python 包管理 | sudo apt install python3-pip |
pyulog |
解析 PX4 日志 | pip3 install pyulog |
numpy |
数值计算 | pip3 install numpy |
colcon |
ROS2 工作空间编译 | sudo apt install python3-colcon-common-extensions |
我曾经遇到过一个问题:Gazebo 启动后黑屏,什么模型都不显示。查了半天,发现是显卡驱动没装。如果你也遇到类似情况,先检查一下 nvidia-smi 能不能正常输出。
2.5 环境验证:跑一个完整的仿真
所有东西装完后,我们来验证一下整个链路是否通。
# 启动 PX4 + Gazebo 仿真
cd ~/PX4-Autopilot
make px4_sitl gazebo
# 在另一个终端启动 ROS2 桥接
ros2 launch px4_ros_com px4_ros_com_launch.py
如果一切正常,你会看到 Gazebo 窗口里有一架四旋翼,ROS2 终端里不断输出 vehicle_attitude 等话题。这时候,你的开发环境就算彻底搭好了。
make clean 一下,避免缓存导致奇怪的问题。我吃过这个亏,改了代码但编译没生效,排查了半天才发现是缓存没清。
2.6 整体架构图
下面这张图,展示了我们搭建的整个环境结构。你可以把它当作一张地图,后面学起来会更有方向感。
从这张图可以看得很清楚:Ubuntu 在最底层,提供基础运行环境;ROS2 和 PX4 在中间层,一个管通信,一个管飞控逻辑;Gazebo 在最顶层,负责把仿真结果可视化出来。三层之间通过 px4_ros_com 桥接通信。
嗯,到这里,你的开发环境就全部搭好了。后面我们会基于这个环境,一步步做仿真联调。别急,先把基础打牢,后面才能飞得稳。