保姆级避坑指南:在Ubuntu 20.04上搞定PX4+MAVROS+XTDrone仿真环境(附常见错误修复)
2026/5/28 9:54:38 网站建设 项目流程

Ubuntu 20.04下PX4+MAVROS+XTDrone仿真环境配置全攻略与疑难排解

1. 环境准备与前置检查

在开始配置PX4+MAVROS+XTDrone仿真环境之前,确保你的Ubuntu 20.04系统已经完成以下基础准备:

系统要求检查清单

  • Ubuntu 20.04.6 LTS(推荐使用官方镜像全新安装)
  • 至少30GB可用磁盘空间(PX4编译和Gazebo模型会占用大量空间)
  • 8GB以上内存(16GB更佳,Gazebo对内存要求较高)
  • 稳定的网络连接(部分依赖需要从GitHub等外网下载)

提示:如果是在虚拟机中运行,建议分配至少4核CPU和16GB内存,并启用3D加速功能。

首先更新系统软件包并安装基础依赖:

sudo apt update && sudo apt upgrade -y sudo apt install -y git curl wget build-essential python3-pip

验证Python版本(Ubuntu 20.04默认Python3为3.8):

python3 --version

2. ROS Noetic安装与配置

由于Ubuntu 20.04对应ROS的Noetic版本,我们需要先完成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 apt update sudo apt install -y ros-noetic-desktop-full

安装完成后,初始化rosdep并设置环境变量:

sudo rosdep init rosdep update echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

验证ROS安装是否成功:

roscore & rosnode list

应该能看到/rosout节点正在运行。

3. MAVROS安装与地理数据集配置

MAVROS是ROS与PX4飞控通信的关键桥梁,安装时需要特别注意版本兼容性:

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.sh

注意:地理数据集安装过程中可能会卡在下载环节,这是正常现象,通常需要20-40分钟完成。

验证MAVROS安装:

roslaunch mavros apm.launch fcu_url:="udp://:14540@127.0.0.1:14557"

在另一个终端检查MAVROS状态:

rostopic echo /mavros/state

4. PX4固件编译与SITL配置

PX4固件版本选择至关重要,最新版本可能与XTDrone存在兼容性问题。推荐使用v1.11稳定分支:

git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot git checkout v1.11.0 git submodule update --init --recursive

安装PX4编译依赖:

bash ./Tools/setup/ubuntu.sh

编译PX4 SITL:

make px4_sitl_default gazebo

配置环境变量(注意修改路径匹配你的实际安装位置):

echo "source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot ~/PX4-Autopilot/build/px4_sitl_default" >> ~/.bashrc echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot" >> ~/.bashrc echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo" >> ~/.bashrc source ~/.bashrc

5. XTDrone安装与配置

XTDrone是一个优秀的无人机仿真平台,但其对PX4版本有特定要求:

git clone https://gitee.com/robin_shaun/XTDrone.git cd XTDrone git submodule update --init --recursive

复制世界和启动文件到PX4目录:

cp sitl_config/worlds/* ~/PX4-Autopilot/Tools/sitl_gazebo/worlds/ cp sitl_config/launch/* ~/PX4-Autopilot/launch/

创建catkin工作空间(如果尚未创建):

mkdir -p ~/catkin_ws/src cd ~/catkin_ws/ catkin_make echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc

6. 常见问题诊断与解决方案

6.1 MAVROS连接状态为false

这是最常见的问题之一,通常由以下原因导致:

排查步骤

  1. 检查.bashrc中的路径配置是否正确
  2. 确保PX4 SITL和MAVROS使用相同的端口
  3. 验证ROS网络配置

典型解决方案

roslaunch px4 mavros_posix_sitl.launch fcu_url:="udp://:14540@127.0.0.1:14557"

6.2 Python语法错误

由于ROS Noetic使用Python3,而部分代码可能基于Python2编写,会遇到语法兼容性问题:

修改tcpros_base.py

# 原代码 (e_errno, msg, *_) = e.args # 修改为 (e_errno, msg) = e.args[:2]

6.3 缺少Python依赖

安装常见缺失的Python包:

sudo pip3 install pyquaternion pymavlink

6.4 Gazebo模型加载失败

手动下载Gazebo模型:

mkdir -p ~/.gazebo/models cd ~/.gazebo/models wget http://file.ncnynl.com/ros/gazebo_models.txt wget -i gazebo_models.txt

7. 完整仿真流程验证

7.1 启动PX4仿真环境

终端1 - 启动PX4 SITL:

cd ~/PX4-Autopilot roslaunch px4 indoor1.launch

7.2 启动MAVROS通信

终端2 - 启动MAVROS:

roslaunch mavros apm.launch fcu_url:="udp://:14540@127.0.0.1:14557"

7.3 启动XTDrone控制

终端3 - 启动通信模块:

cd ~/XTDrone/communication/ python3 multirotor_communication.py iris 0

终端4 - 启动键盘控制:

cd ~/XTDrone/control/keyboard python3 multirotor_keyboard_control.py iris 1 vel

标准操作流程

  1. i增加上升速度至0.3m/s以上
  2. b切换至offboard模式
  3. t解锁无人机
  4. 使用方向键控制无人机移动

8. 高级调试技巧

8.1 ROS网络诊断工具

rqt_graph # 可视化节点通信 rostopic list # 查看所有活跃话题 rosnode info /mavros # 检查MAVROS节点状态

8.2 PX4参数调整

通过QGroundControl或MAVROS命令调整PX4参数:

rosrun mavros mavparam set MPC_Z_VEL_MAX_UP 1.0

8.3 Gazebo性能优化

编辑~/.ignition/fuel/config.yaml,添加国内镜像源:

servers: - name: osrf url: https://fuel.ignitionrobotics.org - name: ustc url: https://fuel.ignitionrobotics.cn

在Gazebo启动时添加渲染优化参数:

export GAZEBO_RESOURCE_PATH=/usr/share/gazebo-11 export GAZEBO_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/gazebo-11/plugins export GAZEBO_MODEL_PATH=~/.gazebo/models

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询