开发环境搭建:Ubuntu 22.04 系统安装与配置、ROS2 Humble 安装、PX4-Autopilot 源码编译、QGroundControl 地面站安装

说实话,很多初学者在无人机开发这条路上栽跟头,十有八九都是环境没搭好。我见过太多人花了两周时间折腾编译错误,最后发现是系统版本不对。嗯,这一章我们就来把地基打牢。

我个人习惯把环境搭建分成四个步骤:装系统、装ROS2、编译PX4、装地面站。顺序不能乱,尤其是ROS2和PX4的依赖关系,搞反了会出很多奇怪的问题。

核心要点:开发环境是后续所有工作的基础。一个干净、版本匹配的环境,能帮你省下至少80%的排查时间。

开发环境搭建总览 Ubuntu 22.04 ROS2 Humble PX4-Autopilot QGroundControl 顺序依赖:系统 → ROS2 → PX4 → 地面站,每一步都建立在上一步的基础上 基础操作系统 机器人中间件 飞控固件源码 地面站软件

2.1 Ubuntu 22.04 系统安装与配置

为什么选22.04?说白了,ROS2 Humble 官方支持的就是这个版本。你想想看,用LTS版本至少四年内不用折腾系统升级,省心。

安装步骤其实不复杂,但有几个坑我得提前说:

  • 分区建议:至少给根目录留50GB,我建议直接100GB。编译PX4的时候,中间文件能吃掉20多个G。
  • Swap分区:如果你的内存小于16GB,建议开8GB swap。我曾经在8GB内存的笔记本上编译到一半直接卡死,嗯,血的教训。
  • 网络配置:建议用有线网络安装,Wi-Fi有时候会掉包,导致apt源更新失败。

我的习惯:装完系统第一件事就是换国内源。阿里云或清华源都行,速度能快10倍。然后执行 sudo apt update && sudo apt upgrade -y,把系统包全部更新到最新。

装完系统后,有几个基础工具是必须装的:

sudo apt install -y \
  git \
  vim \
  curl \
  wget \
  build-essential \
  cmake \
  python3-pip \
  python3-venv

这些工具后面编译PX4和ROS2都会用到。别偷懒,一次性装好。

2.2 ROS2 Humble 安装

ROS2 Humble 是2022年发布的版本,和Ubuntu 22.04是绝配。我个人建议用Debian包安装,别从源码编译——太慢了,而且没必要。

安装流程分三步走:

  1. 设置源:添加ROS2的apt源和密钥
  2. 安装核心包:ros-humble-desktop 包含了大部分常用工具
  3. 配置环境变量:把source命令加到.bashrc里
# 设置locale
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 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 -y

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

注意:如果你同时装了ROS1和ROS2,环境变量会冲突。我建议在单独的终端里手动source,或者用别名区分。我曾经因为这个问题排查了整整一个下午。

装完之后,跑一下这个命令验证:

ros2 run demo_nodes_cpp talker

如果能正常看到输出,说明ROS2装好了。

2.3 PX4-Autopilot 源码编译

PX4的编译是整套环境里最耗时的环节。我第一次编译的时候,在咖啡机旁边等了快40分钟。不过别担心,后面增量编译就快多了。

先装依赖:

sudo apt install -y \
  ninja-build \
  exiftool \
  python3-empy \
  python3-toml \
  python3-numpy \
  python3-jinja2 \
  python3-pygments \
  python3-yaml \
  libgstreamer1.0-dev \
  libgstreamer-plugins-base1.0-dev

然后克隆源码并编译:

mkdir -p ~/px4_ws
cd ~/px4_ws
git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
make px4_sitl gazebo-classic

关键参数说明:

参数 含义 适用场景
px4_sitl 软件在环仿真 无硬件时的算法验证
gazebo-classic Gazebo Classic 仿真器 视觉SLAM、避障测试
px4_fmu-v5 Pixhawk 4 硬件固件 实际飞控板烧录

编译过程中如果报错,八成是网络问题导致子模块没下载全。这时候执行:

git submodule update --init --recursive

然后再重新编译。嗯,这个命令我几乎每次克隆新仓库都要跑一遍。

2.4 QGroundControl 地面站安装

QGC是PX4官方推荐的地面站,功能很全。安装方式有两种:AppImage和源码编译。我建议用AppImage,省事。

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

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

# 安装依赖(如果缺少)
sudo apt install -y libqt5gui5 libqt5quick5 libqt5quickwidgets5

# 运行
./QGroundControl.AppImage

小技巧:第一次启动QGC时,它会自动检测串口设备。如果你插着Pixhawk,应该能看到/dev/ttyACM0或/dev/ttyUSB0。如果没显示,检查一下用户组权限:sudo usermod -a -G dialout $USER,然后注销重新登录。

QGC的界面很直观,左边是地图,右边是飞行数据。你可以在「设置」→「固件」里刷写PX4固件,或者在「分析工具」里查看日志。我个人最常用的是「MAVLink Inspector」,调试消息的时候特别好用。

避坑指南:千万不要在QGC连接飞控的同时运行其他串口工具(比如screen、minicom)。串口是独占的,抢占了会导致QGC断开连接。我曾经在调试时忘了关screen,结果QGC反复重连,差点把飞控的参数搞乱。

到这里,整个开发环境就搭好了。你可以打开终端,分别启动PX4 SITL和QGC,看看它们能不能通过MAVLink通信。如果能在地图上看到仿真无人机的位置,恭喜你,环境搭建成功了。