保姆级教程在Ubuntu 20.04上从零搭建PX4无人机仿真环境ROS1 Noetic MAVROS QGC刚接触无人机开发的爱好者们是否曾被各种环境配置问题劝退本文将带你用最顺畅的方式在Ubuntu 20.04上完成PX4仿真环境的完整搭建。不同于零散的网络教程这里每个步骤都经过实测验证特别针对国内开发者优化了下载速度并预埋了常见错误的解决方案。1. 系统准备与环境配置在开始之前请确保你的Ubuntu 20.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -y为了加速后续的软件下载建议更换为国内镜像源。这里以阿里云源为例sudo sed -i s|http://.*archive.ubuntu.com|https://mirrors.aliyun.com|g /etc/apt/sources.list sudo sed -i s|http://.*security.ubuntu.com|https://mirrors.aliyun.com|g /etc/apt/sources.list必备工具安装git用于克隆PX4源码cmake编译工具python3运行各种脚本安装命令sudo apt install -y git cmake python3-pip提示如果遇到Unable to locate package错误请先运行sudo apt update2. ROS1 Noetic安装与配置ROS Noetic是最后一个支持Python2的ROS1版本也是目前最稳定的选择。安装过程分为以下几个步骤2.1 设置软件源首先添加ROS官方源和密钥sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654为加速下载可以使用国内镜像源替换sudo sed -i s|http://packages.ros.org|https://mirrors.tuna.tsinghua.edu.cn/ros|g /etc/apt/sources.list.d/ros-latest.list2.2 完整安装ROS推荐安装桌面完整版包含所有常用工具sudo apt update sudo apt install -y ros-noetic-desktop-full安装完成后初始化rosdepsudo rosdep init rosdep update2.3 环境配置将ROS环境变量添加到bashrc中echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc验证安装是否成功roscore 如果看到类似下面的输出说明ROS安装成功... logging to /home/user/.ros/log/xxxxx started core service [/rosout]3. PX4开发环境搭建PX4是当前最流行的开源飞控系统我们需要先搭建其开发环境。3.1 安装依赖PX4需要一些特定版本的依赖库sudo apt install -y python3-empy python3-toml python3-pip sudo pip3 install pandas jinja2 pyserial pyyaml对于Gazebo仿真还需要安装sudo apt install -y libgazebo11-dev3.2 下载PX4源码建议在home目录下创建工作空间mkdir -p ~/px4_ws/src cd ~/px4_ws/src git clone https://github.com/PX4/PX4-Autopilot.git --recursive如果克隆速度慢可以使用国内镜像git clone https://gitee.com/mirrors/PX4-Autopilot.git --recursive3.3 编译PX4进入PX4目录并编译cd ~/px4_ws/src/PX4-Autopilot make px4_sitl_default gazebo首次编译可能需要较长时间30分钟以上请耐心等待。如果遇到编译错误通常是缺少依赖可以根据提示安装相应包。4. MAVROS安装与配置MAVROS是ROS与PX4通信的桥梁安装步骤如下4.1 安装MAVROS使用apt直接安装二进制包sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras4.2 安装地理围栏数据MAVROS需要地理围栏数据才能正常工作wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh4.3 测试MAVROS连接首先启动PX4仿真cd ~/px4_ws/src/PX4-Autopilot make px4_sitl_default gazebo然后在新终端中启动MAVROSroslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:14557检查连接状态rostopic echo /mavros/state如果看到connected: True说明MAVROS已成功连接PX4。5. QGroundControl地面站安装QGroundControl是PX4官方推荐的地面站软件提供直观的飞行控制界面。5.1 下载QGC从官网下载最新版wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage赋予执行权限chmod x QGroundControl.AppImage5.2 运行QGC直接运行AppImage文件./QGroundControl.AppImage首次运行时系统可能会提示缺少库文件可以安装以下依赖sudo apt install -y libfuse26. 完整仿真测试现在我们已经安装了所有必要组件可以进行完整的仿真测试了。6.1 启动仿真环境在终端中启动PX4 Gazebo仿真cd ~/px4_ws/src/PX4-Autopilot make px4_sitl_default gazebo6.2 启动MAVROS在新终端中roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:145576.3 启动QGroundControl./QGroundControl.AppImage6.4 测试飞行控制在QGC中你应该能看到无人机模型。尝试以下操作切换到Plan视图创建简单航点任务切换到Fly视图尝试手动控制观察Gazebo中的无人机响应7. 常见问题解决在实际操作中你可能会遇到以下问题7.1 Gazebo黑屏或无模型这通常是显卡驱动问题尝试sudo apt install -y mesa-utils libgl1-mesa-glx libgl1-mesa-dri然后编辑Gazebo配置文件echo export SVGA_VGPU100 ~/.bashrc source ~/.bashrc7.2 MAVROS连接超时检查PX4和MAVROS的端口设置是否匹配。确保fcu_url参数正确roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:145577.3 PX4编译失败最常见的编译失败原因是子模块未正确初始化。尝试cd ~/px4_ws/src/PX4-Autopilot git submodule update --init --recursive然后重新编译。8. 进阶配置与优化环境搭建完成后你可以进一步优化开发体验8.1 使用IDE开发推荐使用VSCode进行PX4开发sudo apt install -y code安装后打开PX4目录code ~/px4_ws/src/PX4-Autopilot8.2 自定义仿真环境PX4支持多种Gazebo世界例如make px4_sitl_default gazebo_iris_warehouse这会加载一个仓库环境进行测试。8.3 性能优化如果仿真运行缓慢可以尝试echo export PX4_SIM_SPEED_FACTOR2 ~/.bashrc这会加快仿真速度。