保姆级教程:从零在Ubuntu 20.04搭建无人机仿真环境(ROS Noetic + Gazebo + PX4)

张开发
2026/6/6 4:13:05 15 分钟阅读

分享文章

保姆级教程:从零在Ubuntu 20.04搭建无人机仿真环境(ROS Noetic + Gazebo + PX4)
从零构建Ubuntu 20.04无人机仿真平台全指南在智能无人机开发领域仿真环境搭建是每个开发者必须跨越的第一道门槛。本文将带您完整走通ROS Noetic Gazebo PX4的配置流程特别针对从未接触过机器人操作系统(ROS)的初学者设计。不同于零散的教程我们不仅会逐步演示安装步骤更会解释每个环节的技术原理帮助您建立系统化的认知框架。1. 基础环境准备与验证1.1 系统初始配置开始前请确保使用Ubuntu 20.04.6 LTS版本建议全新安装并完成以下基础准备# 更新软件源并升级现有包 sudo apt update sudo apt upgrade -y # 安装基础编译工具链 sudo apt install -y build-essential cmake git关键检查点确认Python版本为3.8.xpython3 --version检查磁盘空间df -h建议至少保留20GB可用空间验证网络代理设置如有env | grep -i proxy注意国内用户建议配置镜像源加速下载可执行以下命令更换为清华源sudo sed -i shttp://.*archive.ubuntu.comhttps://mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list sudo sed -i shttp://.*security.ubuntu.comhttps://mirrors.tuna.tsinghua.edu.cng /etc/apt/sources.list1.2 ROS Noetic完整安装ROS作为仿真环境的核心框架其安装需要特别注意依赖关系# 添加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 # 安装完整桌面版ROS sudo apt update sudo apt install -y ros-noetic-desktop-full安装完成后需要初始化rosdep这是最易出错的环节# 初始化rosdep sudo rosdep init rosdep update # 设置环境变量 echo source /opt/ros/noetic/setup.bash ~/.bashrc source ~/.bashrc常见问题排查若rosdep update失败可尝试修改/etc/hosts添加GitHub相关IP出现Python依赖错误时使用sudo apt install python3-rosdep python3-rosinstall2. 核心组件安装与集成2.1 Gazebo 11强化配置虽然ROS Noetic默认集成Gazebo 11但针对无人机仿真需要额外优化# 安装物理引擎插件 sudo apt install -y libgazebo11-dev gazebo11-plugin-base \ gazebo11-msgs libsdformat9-dev # 测试Gazebo运行首次启动会下载模型建议保持网络畅通 gazebo --verbose /opt/ros/noetic/share/gazebo_plugins/worlds/gazebo_ros_empty.world为加速模型下载可预先导入常用无人机模型mkdir -p ~/.gazebo/models wget -P ~/.gazebo/models/ https://fuel.ignitionrobotics.org/1.0/OpenRobotics/models/Quadrotor%20Iris2.2 MAVROS与PX4协同配置MAVROS作为ROS与飞控的通信桥梁需要特殊配置# 安装MAVROS核心包 sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras # 安装地理数据集耗时较长 wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh chmod x install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.shPX4固件编译需要特别注意子模块更新git clone --recursive https://github.com/PX4/PX4-Autopilot.git ~/PX4-Autopilot cd ~/PX4-Autopilot make px4_sitl_default gazebo性能优化技巧编译时使用-j$(nproc)参数加速make px4_sitl_default gazebo -j$(nproc)如果内存不足4GB需添加交换空间sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile3. 仿真环境联合调试3.1 系统路径整合正确配置环境变量是各组件协同工作的关键编辑~/.bashrc添加# PX4环境设置 source ~/PX4-Autopilot/Tools/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/sitl_gazebo # MAVROS通信设置 export GAZEBO_MODEL_PATH${GAZEBO_MODEL_PATH}:~/PX4-Autopilot/Tools/sitl_gazebo/models export LD_LIBRARY_PATH${LD_LIBRARY_PATH}:~/PX4-Autopilot/build/px4_sitl_default/build_gazebo3.2 通信链路验证启动完整仿真环境需要三个终端协同工作终端1 - PX4仿真器cd ~/PX4-Autopilot make px4_sitl_default gazebo终端2 - MAVROS桥接roslaunch mavros px4.launch fcu_url:udp://:14540127.0.0.1:14557终端3 - 状态检查rostopic echo /mavros/state关键验证指标在/mavros/state中查看connected是否为True检查/mavros/battery是否有合理电压值通过rostopic list确认存在/mavros/setpoint_raw/local等关键话题4. XTDrone高级集成方案4.1 源码定制化部署XTDrone作为国内优秀的无人机仿真框架需要特殊处理git clone https://gitee.com/robin_shaun/XTDrone.git ~/XTDrone cd ~/XTDrone git submodule update --init --recursive # 部署世界文件 cp -r ~/XTDrone/sitl_config/worlds/* ~/PX4-Autopilot/Tools/sitl_gazebo/worlds/ # 初始化工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin_make4.2 多机控制实战XTDrone的核心优势在于多无人机协同控制以下是典型启动流程启动仿真世界roslaunch px4 indoor3.launch建立通信链路cd ~/XTDrone/communication python3 multirotor_communication.py iris 0键盘控制节点cd ~/XTDrone/control/keyboard python3 multirotor_keyboard_control.py iris 1 vel控制指令速查表按键功能参数范围i增加垂直速度0.1 m/sk减小垂直速度-0.1 m/sj左转5°l右转-5°t解锁/上锁toggleb切换offboard模式-在实际项目中我们常遇到Gazebo模型加载缓慢的问题。一个实用的解决方案是预先下载全部模型包wget -P ~/.gazebo http://file.ncnynl.com/gazebo/models/gazebo_models.tar tar -xvf ~/.gazebo/gazebo_models.tar -C ~/.gazebo/

更多文章