1. 环境准备:Ubuntu20.04系统配置
在开始PX4无人机仿真环境的搭建之前,我们需要确保系统环境配置正确。Ubuntu20.04是目前PX4官方推荐的操作系统版本,稳定性与兼容性都经过充分验证。我建议使用全新安装的Ubuntu系统,避免已有软件环境带来的冲突。
首先更新系统软件包是个好习惯,打开终端执行以下命令:
bash复制sudo apt update && sudo apt upgrade -y
接下来安装一些基础开发工具,这些工具在后续PX4编译过程中会用到:
bash复制sudo apt install -y git cmake python3-pip python3-dev
对于国内开发者,我强烈建议配置软件源镜像以加速下载。阿里云或清华大学的Ubuntu镜像源都是不错的选择。修改/etc/apt/sources.list文件,将默认源替换为国内镜像源后,再次执行sudo apt update会明显感受到速度提升。
注意:如果你使用虚拟机运行Ubuntu,建议分配至少4GB内存和30GB磁盘空间。PX4编译过程比较消耗资源,内存不足可能导致编译失败。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. PX4固件安装与配置
PX4是无人机飞控系统的开源软件,我们需要从GitHub克隆最新源码。这里有个小技巧:使用--recursive参数可以同时获取所有子模块,避免后续单独下载的麻烦:
bash复制git clone https://github.com/PX4/PX4-Autopilot.git --recursive
cd PX4-Autopilot
有时候网络问题会导致子模块下载不完整,这时可以运行以下命令补全:
bash复制git submodule update --init --recursive
PX4提供了便捷的安装脚本ubuntu.sh,它会自动安装所有依赖项。执行时建议加上--fix-missing参数,这样即使中途出错也能自动修复:
bash复制bash ./Tools/setup/ubuntu.sh --fix-missing
我在实际安装过程中发现,Python环境问题是最常见的错误。如果遇到Pillow等Python包安装失败,可以先手动升级pip:
bash复制python3 -m pip install --upgrade pip
python3 -m pip install --upgrade Pillow
安装完成后,建议重启系统使所有环境变量生效。然后我们可以测试PX4是否能正常运行:
bash复制make px4_sitl_default gazebo
如果一切顺利,你应该能看到Gazebo界面弹出,里面有一架小型无人机模型。在终端输入commander takeoff命令,无人机应该会起飞,输入commander land则会降落。
3. MAVROS安装与通信测试
MAVROS是ROS与PX4飞控之间的通信桥接,它实现了MAVLink协议的ROS接口。安装MAVROS非常简单:
bash复制sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras
安装完成后需要下载地理数据库文件,这个步骤经常被忽略但非常重要:
bash复制sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh
测试MAVROS是否正常工作:
bash复制roslaunch mavros px4.launch
这个命令会启动MAVROS节点并与PX4仿真器建立连接。你可以通过rostopic list命令查看当前可用的ROS话题,应该能看到很多/mavros开头的话题。
我遇到过MAVROS无法连接PX4的情况,通常是端口配置问题。检查px4.launch文件中的fcu_url参数是否正确指向PX4的通信端口,默认应该是udp://:14540@localhost:14557。
4. Gazebo仿真环境配置
Gazebo是PX4默认的物理仿真环境,我们需要配置一些环境变量使其与PX4协同工作。将以下内容添加到~/.bashrc文件末尾:
bash复制source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic
保存后执行source ~/.bashrc使配置立即生效。现在可以启动完整的仿真环境:
bash复制roslaunch px4 mavros_posix_sitl.launch
这个命令会同时启动Gazebo仿真器、PX4飞控和MAVROS桥接。你应该能看到Gazebo界面中的无人机模型,以及终端中不断滚动的PX4状态信息。
5. QGroundControl地面站安装
QGroundControl(QGC)是PX4生态中常用的地面控制站软件,它提供了直观的无人机状态监控和任务规划界面。在Ubuntu上安装QGC最简单的方法是下载AppImage格式的可执行文件:
bash复制wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
chmod +x QGroundControl.AppImage
./QGroundControl.AppImage
第一次运行可能需要安装一些依赖库,按照提示操作即可。QGC启动后会自动连接本地运行的PX4仿真实例,你可以在界面上看到无人机的姿态、位置等信息,还能进行任务规划和参数调整。
6. 一键启动仿真脚本
为了提高效率,我通常会创建一个一键启动脚本。新建文件start_simulation.sh,内容如下:
bash复制#!/bin/bash
gnome-terminal --tab --title="PX4" --command="bash -c 'make px4_sitl_default gazebo; exec bash'"
sleep 10
gnome-terminal --tab --title="MAVROS" --command="bash -c 'roslaunch mavros px4.launch; exec bash'"
sleep 5
gnome-terminal --tab --title="QGC" --command="bash -c './QGroundControl.AppImage; exec bash'"
给脚本添加执行权限:
bash复制chmod +x start_simulation.sh
现在只需运行./start_simulation.sh,系统会自动打开三个终端标签页,分别运行PX4仿真、MAVROS桥接和QGroundControl,实现真正的"一键启动"。
7. 常见问题排查
在搭建过程中难免会遇到各种问题,这里分享几个我踩过的坑和解决方法:
-
Gazebo黑屏或无模型显示:这通常是显卡驱动问题。尝试安装mesa-utils并运行
glxinfo | grep rendering确认硬件加速是否启用。如果没有,可能需要安装专有显卡驱动。 -
MAVROS连接超时:检查PX4是否正确启动了MAVLink模块。在PX4终端输入
mavlink status,应该能看到至少一个MAVLink实例在运行。 -
ROS话题缺失:确保roscore已经运行,并且所有相关节点都已正确启动。使用
rosnode list检查节点状态。 -
PX4编译失败:最常见的原因是内存不足。尝试在编译时使用
-j参数限制并行任务数,如make px4_sitl_default gazebo -j2。 -
Gazebo模型下载慢:可以手动下载模型包,解压到
~/.gazebo/models目录。国内用户建议使用清华源等镜像站。
记得每次修改环境变量或配置文件后,都要重新加载或重启相关服务才能使更改生效。如果遇到奇怪的问题,尝试make clean后重新编译PX4也是个好办法。
