保姆级教程:在Ubuntu 20.04上搞定PX4仿真,从MAVROS安装到Gazebo起飞

张开发
2026/4/17 16:36:59 15 分钟阅读

分享文章

保姆级教程:在Ubuntu 20.04上搞定PX4仿真,从MAVROS安装到Gazebo起飞
零基础玩转PX4仿真Ubuntu 20.04从环境配置到Gazebo首飞全指南刚接触无人机仿真的开发者常会遇到这样的困境教程里的命令一运行就报错依赖项像俄罗斯套娃一样层出不穷而GitHub的龟速下载更是让人抓狂。本文将手把手带你用最接地气的方式在普通配置的Ubuntu 20.04虚拟机上搭建完整的PX4仿真生态链。不同于简单的命令堆砌我们会深入每个操作背后的原理并针对国内网络环境提供优化方案。1. 环境准备打造稳健的ROS基础在开始PX4仿真之前需要先构建可靠的ROS Noetic环境。许多教程假设你能顺利访问国际网络资源但现实往往骨感——这也是为什么我们选择小鱼工具集作为起点。1.1 国内友好型ROS安装首先确保系统已更新到最新状态sudo apt update sudo apt upgrade -y接下来使用国内开发者维护的ROS一键安装工具wget http://fishros.com/install -O fishros . fishros运行后会看到彩色菜单界面选择1安装ROS Noetic。这个脚本会自动配置中科大镜像源速度比官方源快5-10倍。注意如果遇到Certificate verification failed错误可临时添加--no-check-certificate参数但完成后建议立即执行sudo apt install ca-certificates修复证书链。1.2 关键依赖项安装PX4仿真需要以下核心组件catkin工具集ROS的构建系统Gazebo 11物理仿真引擎GeographicLib地理坐标计算库使用组合命令一次性安装sudo apt install -y python3-catkin-tools python3-wstool \ gazebo11 libgeographic-dev geographiclib-tools验证Gazebo安装gzserver --version正常应显示Gazebo multi-robot simulator, version 11.X.X。2. MAVROS部署ROS与飞控的神经枢纽MAVROS是连接ROS与PX4飞控的桥梁但其官方安装方式常因网络问题失败。下面介绍两种国内开发者常用的替代方案。2.1 使用Gitee镜像加速传统方法需要从GitHub拉取多个仓库我们可以改用国内镜像mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init wstool init src https://gitee.com/rosworkspace/mavros_install/raw/master/mavros.rosinstall wstool update -t src -j4关键参数说明-j4使用4线程并行下载如果出现Certificate verify failed可临时设置export GIT_SSL_NO_VERIFY12.2 地理数据库安装MAVLink协议需要地理信息数据库支持官方下载经常超时。改用预打包方案git clone https://gitee.com/aurox/geographiclib_datasets.git cd geographiclib_datasets sudo ./setup.sh验证安装geographiclib-get-geoids egm96-5应在/usr/share/GeographicLib/geoids下生成数据文件。3. PX4固件部署避开网络陷阱PX4官方固件仓库体积庞大超过1GB国内直接克隆极易失败。我们采用分阶段下载策略。3.1 使用国内镜像仓库先克隆精简版仓库git clone --depth1 https://gitee.com/px4/firmware.git ~/PX4_Firmware cd ~/PX4_Firmware然后增量下载大文件git fetch --unshallow git submodule update --init --recursive如果子模块更新失败可手动替换.gitmodules中的URL为gitee镜像地址。3.2 依赖项安装技巧PX4提供了官方安装脚本但需要调整cd ~/PX4_Firmware/Tools/setup ./ubuntu.sh --no-nuttx --no-sim-tools重要参数说明--no-nuttx跳过飞控交叉编译工具链仅仿真不需要--no-sim-tools不使用官方推荐的仿真工具节省时间4. Gazebo仿真实战从启动到首飞所有组件就绪后让我们启动第一个仿真场景。4.1 基础启动命令在PX4目录下执行make px4_sitl_default gazebo常见问题处理Gazebo黑屏可能是显卡驱动问题尝试export LIBGL_ALWAYS_SOFTWARE1模型加载失败手动下载模型包wget https://gitee.com/rosworkspace/gazebo_models/archive/master.zip unzip master.zip -d ~/.gazebo/models4.2 MAVROS连接测试新建终端启动MAVROS节点roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:14557验证通信状态rostopic echo /mavros/state应看到connected: True的输出。4.3 基础飞行控制使用QGroundControl或通过ROS指令控制rosrun mavros mavsys mode -c GUIDED rosrun mavros mavsafety arm rostopic pub /mavros/setpoint_position/local geometry_msgs/PoseStamped ...5. 性能优化与调试技巧虚拟机环境下性能往往捉襟见肘这些技巧能显著提升体验。5.1 虚拟机专属配置对于VMware/VirtualBox用户分配至少4核CPU和4GB内存启用3D加速export SVGA_VGPU100 export LIBGL_ALWAYS_INDIRECT1调整Gazebo渲染设置gui scene ambient_light1.0 1.0 1.0 1.0/ambient_light shadowsfalse/shadows /scene /gui5.2 常见错误解决方案问题1[Err] [Master.cc:96] EXCEPTION: Unable to create master解决方法killall gzserver rm ~/.gazebo/log/*.log问题2MAVROS not receiving heartbeat检查步骤确认PX4启动时输出INFO [mavlink] mode: Normal检查UDP端口是否冲突netstat -ulnp | grep 145406. 扩展应用从仿真到现实当基础仿真运行稳定后可以尝试这些进阶操作6.1 多机协同仿真编辑~/PX4_Firmware/launch/multi_uav_mavros_sitl.launch修改实例数arg namevehicle defaultiris/ arg namenum_uavs default3/启动命令roslaunch px4 multi_uav_mavros_sitl.launch6.2 自定义仿真环境添加新世界文件在~/PX4_Firmware/Tools/sitl_gazebo/worlds创建.world文件参考现有文件编写场景描述启动时指定世界make px4_sitl_default gazebo_world_name7. 效率工具推荐这些工具能极大提升开发效率7.1 终端复用配置使用tmux创建标准化工作区tmux new-session -s px4 \; \ split-window -v \; \ split-window -h \; \ select-pane -t 0 \; \ split-window -h四个窗格分别用于PX4运行、Gazebo监控、MAVROS调试、通用命令。7.2 自动化脚本示例创建一键启动脚本start_px4.sh#!/bin/bash tmux new-session -d -s px4_session tmux send-keys -t px4_session cd ~/PX4_Firmware make px4_sitl_default gazebo C-m tmux split-window -v -t px4_session tmux send-keys -t px4_session sleep 10 roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:14557 C-m tmux attach -t px4_session

更多文章