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 --version2. 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/state4. 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 ~/.bashrc5. 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 ~/.bashrc6. 常见问题诊断与解决方案
6.1 MAVROS连接状态为false
这是最常见的问题之一,通常由以下原因导致:
排查步骤:
- 检查
.bashrc中的路径配置是否正确 - 确保PX4 SITL和MAVROS使用相同的端口
- 验证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 pymavlink6.4 Gazebo模型加载失败
手动下载Gazebo模型:
mkdir -p ~/.gazebo/models cd ~/.gazebo/models wget http://file.ncnynl.com/ros/gazebo_models.txt wget -i gazebo_models.txt7. 完整仿真流程验证
7.1 启动PX4仿真环境
终端1 - 启动PX4 SITL:
cd ~/PX4-Autopilot roslaunch px4 indoor1.launch7.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标准操作流程:
- 按
i增加上升速度至0.3m/s以上 - 按
b切换至offboard模式 - 按
t解锁无人机 - 使用方向键控制无人机移动
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.08.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