Ubuntu 20.04下PX4MAVROSXTDrone仿真环境配置全攻略与疑难排解1. 环境准备与前置检查在开始配置PX4MAVROSXTDrone仿真环境之前确保你的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.8python3 --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://:14540127.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 SITLmake 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://:14540127.0.0.1:145576.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 SITLcd ~/PX4-Autopilot roslaunch px4 indoor1.launch7.2 启动MAVROS通信终端2 - 启动MAVROSroslaunch mavros apm.launch fcu_url:udp://:14540127.0.0.1:145577.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