1. 环境准备从零搭建XTDrone仿真平台第一次接触XTDrone仿真平台时我花了整整三天时间才把环境配置好。中间踩过的坑包括依赖版本冲突、路径配置错误、通信连接失败等等。如果你也在配置过程中遇到问题不妨跟着我的实战经验一步步操作。1.1 系统环境检查建议使用Ubuntu 18.04或20.04系统这两个版本对ROS Melodic和Gazebo的支持最稳定。我实测在Ubuntu 20.04上运行良好但需要注意几个关键点确保系统已更新到最新状态sudo apt update sudo apt upgrade -y检查显卡驱动是否安装正确Gazebo需要3D加速glxinfo | grep OpenGL renderer如果输出显示你的独立显卡型号如NVIDIA GTX系列说明驱动正常。如果显示llvmpipe则需要安装显卡驱动。1.2 基础依赖安装XTDrone需要的基础依赖比官方文档列出的更多这里是我整理的全套依赖清单sudo apt install -y ninja-build exiftool python-argparse python-empy \ python-toml python-numpy python-yaml python-dev python-pip \ ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ libimage-exiftool-perl libgeographic-dev geographiclib-tools安装Python依赖时特别注意要同时安装pip2和pip3的包pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion pip3 install packaging numpy empy toml pyyaml jinja2提示如果遇到无法定位软件包错误先运行sudo apt --fix-broken install再重试。我在阿里云服务器上安装时就遇到了这个问题。2. ROS与Gazebo安装配置2.1 ROS Melodic安装官方教程通常建议使用清华源安装ROS但实测发现清华源的Gazebo包有时不完整。我更推荐使用中科大源sudo sh -c echo deb http://mirrors.ustc.edu.cn/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 ros-melodic-desktop-full安装完成后一定要初始化rosdep这是很多同学容易忽略的步骤sudo rosdep init rosdep update echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc2.2 Gazebo模型配置Gazebo默认会从国外服务器下载模型速度极慢。我推荐先下载完整的模型包git clone https://gitee.com/superxzg/gazebo_models.git mkdir -p ~/.gazebo/models cp -r gazebo_models/* ~/.gazebo/models/实测这个国内镜像包含300个常用模型足够XTDrone仿真使用。如果遇到模型缺失的情况可以单独下载对应的模型文件放到~/.gazebo/models/目录下。3. MAVROS与PX4配置3.1 MAVROS安装优化官方提供的MAVROS安装脚本有时会因为网络问题失败这里分享一个更稳定的安装方式sudo apt install ros-melodic-mavros ros-melodic-mavros-extras -y wget https://gitee.com/mirrors/geographiclib/raw/master/GeographicLib/install-geographiclib-datasets.sh sudo bash ./install-geographiclib-datasets.sh如果最后一步下载数据集失败可以手动下载并解压wget https://gitee.com/mirrors/geographiclib-data/raw/master/geographiclib-data-1.50.tar.gz sudo tar xzf geographiclib-data-1.50.tar.gz -C /usr/share/GeographicLib/3.2 PX4固件编译PX4的编译过程最容易出问题特别是子模块更新。建议使用国内镜像git clone https://gitee.com/mirrors/PX4-Autopilot.git mv PX4-Autopilot PX4_Firmware cd PX4_Firmware git checkout -b xtdrone/dev v1.11.0-beta1修改.gitmodules文件将所有github.com的URL替换为gitee.com/mirrors/对应的仓库地址然后执行git submodule sync git submodule update --init --recursive make px4_sitl_default gazebo编译成功后你会看到Gazebo界面弹出这时按CtrlC关闭即可。接下来是最关键的环节——环境变量配置。4. 关键配置与调试4.1 环境变量设置编辑~/.bashrc文件时很多教程只告诉你要添加什么内容却不解释为什么。这里我详细说明每行的作用# PX4路径变量 px4_dir~/PX4_Firmware # 必须先source ROS环境 source /opt/ros/melodic/setup.bash # 然后source PX4的gazebo环境 source $px4_dir/Tools/setup_gazebo.bash $px4_dir $px4_dir/build/px4_sitl_default # 最后设置ROS包路径 export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:$px4_dir export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:$px4_dir/Tools/sitl_gazebo注意source顺序绝对不能错我遇到过因为顺序问题导致MAVROS无法连接的情况。4.2 MAVROS连接测试启动PX4和MAVROScd ~/PX4_Firmware roslaunch px4 mavros_posix_sitl.launch在新的终端检查连接状态rostopic echo /mavros/state如果看到connected: false90%的问题出在UDP端口配置上。打开~/PX4_Firmware/launch/mavros_posix_sitl.launch确保fcu_url参数为arg namefcu_url defaultudp://:14540127.0.0.1:14557/4.3 XTDrone源码配置从国内镜像下载XTDronegit clone https://gitee.com/robin_shaun/XTDrone.git cd XTDrone git submodule update --init --recursive关键文件拷贝步骤注意路径差异cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/ cp -r sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/ cp -r sitl_config/launch/* ~/PX4_Firmware/launch/5. 常见问题解决方案5.1 Gazebo黑屏问题如果Gazebo启动后只有黑屏可能是3D加速问题。尝试以下解决方案使用软件渲染export LIBGL_ALWAYS_SOFTWARE1或者指定显卡运行__NV_PRIME_RENDER_OFFLOAD1 __GLX_VENDOR_LIBRARY_NAMEnvidia gazebo5.2 MAVROS连接不稳定如果MAVROS时断时连可以调整心跳频率rosrun mavros mavsys rate --stream-id 1 100 rosrun mavros mavsys rate --stream-id 2 100 rosrun mavros mavsys rate --stream-id 3 1005.3 键盘控制无响应当键盘控制无效时按这个顺序检查确认无人机已解锁arm检查飞行模式是否为OFFBOARD查看/iris_0/mavros/state话题是否正常检查multirotor_communication.py是否正常运行6. 进阶调试技巧6.1 日志分析PX4的日志位于~/PX4_Firmware/build/px4_sitl_default/tmp/rootfs/log使用以下命令分析ulog_info 日志文件.ulg6.2 自定义世界文件要创建自定义仿真环境可以在~/PX4_Firmware/Tools/sitl_gazebo/worlds/下新建.world文件。例如创建一个简单的室内环境?xml version1.0 ? sdf version1.6 world nameindoor include urimodel://ground_plane/uri /include include urimodel://sun/uri /include /world /sdf6.3 多机仿真配置要同时仿真多架无人机修改launch文件group nsuav1 include file$(find px4)/launch/single_vehicle_spawn.launch arg namex value0/ arg namey value0/ arg namez value0/ arg nameR value0/ arg nameP value0/ arg nameY value0/ arg namevehicle valueiris/ arg namercS value$(find px4)/posix-configs/SITL/init/$(arg vehicle)/rcS/ arg namemavlink_tcp_port value4560/ arg nameID value1/ /include /group7. 性能优化建议7.1 提升Gazebo运行效率关闭不必要的插件export GAZEBO_PLUGIN_PATH使用轻量级模型model namelightweight_drone link namebase_link inertial mass1.0/mass /inertial /link /model7.2 网络优化对于多机通信调整QGC参数param set MAV_BROADCAST 1 param set MAV_PROTO_VER 27.3 内存管理大型仿真场景可能消耗大量内存可以通过以下方式优化sudo sysctl -w vm.overcommit_memory1 sudo sysctl -w vm.swappiness10
XTDrone仿真平台从零配置实战:避坑指南与关键步骤解析
发布时间:2026/5/27 22:05:00
1. 环境准备从零搭建XTDrone仿真平台第一次接触XTDrone仿真平台时我花了整整三天时间才把环境配置好。中间踩过的坑包括依赖版本冲突、路径配置错误、通信连接失败等等。如果你也在配置过程中遇到问题不妨跟着我的实战经验一步步操作。1.1 系统环境检查建议使用Ubuntu 18.04或20.04系统这两个版本对ROS Melodic和Gazebo的支持最稳定。我实测在Ubuntu 20.04上运行良好但需要注意几个关键点确保系统已更新到最新状态sudo apt update sudo apt upgrade -y检查显卡驱动是否安装正确Gazebo需要3D加速glxinfo | grep OpenGL renderer如果输出显示你的独立显卡型号如NVIDIA GTX系列说明驱动正常。如果显示llvmpipe则需要安装显卡驱动。1.2 基础依赖安装XTDrone需要的基础依赖比官方文档列出的更多这里是我整理的全套依赖清单sudo apt install -y ninja-build exiftool python-argparse python-empy \ python-toml python-numpy python-yaml python-dev python-pip \ ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet \ libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly \ libimage-exiftool-perl libgeographic-dev geographiclib-tools安装Python依赖时特别注意要同时安装pip2和pip3的包pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion pip3 install packaging numpy empy toml pyyaml jinja2提示如果遇到无法定位软件包错误先运行sudo apt --fix-broken install再重试。我在阿里云服务器上安装时就遇到了这个问题。2. ROS与Gazebo安装配置2.1 ROS Melodic安装官方教程通常建议使用清华源安装ROS但实测发现清华源的Gazebo包有时不完整。我更推荐使用中科大源sudo sh -c echo deb http://mirrors.ustc.edu.cn/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 ros-melodic-desktop-full安装完成后一定要初始化rosdep这是很多同学容易忽略的步骤sudo rosdep init rosdep update echo source /opt/ros/melodic/setup.bash ~/.bashrc source ~/.bashrc2.2 Gazebo模型配置Gazebo默认会从国外服务器下载模型速度极慢。我推荐先下载完整的模型包git clone https://gitee.com/superxzg/gazebo_models.git mkdir -p ~/.gazebo/models cp -r gazebo_models/* ~/.gazebo/models/实测这个国内镜像包含300个常用模型足够XTDrone仿真使用。如果遇到模型缺失的情况可以单独下载对应的模型文件放到~/.gazebo/models/目录下。3. MAVROS与PX4配置3.1 MAVROS安装优化官方提供的MAVROS安装脚本有时会因为网络问题失败这里分享一个更稳定的安装方式sudo apt install ros-melodic-mavros ros-melodic-mavros-extras -y wget https://gitee.com/mirrors/geographiclib/raw/master/GeographicLib/install-geographiclib-datasets.sh sudo bash ./install-geographiclib-datasets.sh如果最后一步下载数据集失败可以手动下载并解压wget https://gitee.com/mirrors/geographiclib-data/raw/master/geographiclib-data-1.50.tar.gz sudo tar xzf geographiclib-data-1.50.tar.gz -C /usr/share/GeographicLib/3.2 PX4固件编译PX4的编译过程最容易出问题特别是子模块更新。建议使用国内镜像git clone https://gitee.com/mirrors/PX4-Autopilot.git mv PX4-Autopilot PX4_Firmware cd PX4_Firmware git checkout -b xtdrone/dev v1.11.0-beta1修改.gitmodules文件将所有github.com的URL替换为gitee.com/mirrors/对应的仓库地址然后执行git submodule sync git submodule update --init --recursive make px4_sitl_default gazebo编译成功后你会看到Gazebo界面弹出这时按CtrlC关闭即可。接下来是最关键的环节——环境变量配置。4. 关键配置与调试4.1 环境变量设置编辑~/.bashrc文件时很多教程只告诉你要添加什么内容却不解释为什么。这里我详细说明每行的作用# PX4路径变量 px4_dir~/PX4_Firmware # 必须先source ROS环境 source /opt/ros/melodic/setup.bash # 然后source PX4的gazebo环境 source $px4_dir/Tools/setup_gazebo.bash $px4_dir $px4_dir/build/px4_sitl_default # 最后设置ROS包路径 export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:$px4_dir export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:$px4_dir/Tools/sitl_gazebo注意source顺序绝对不能错我遇到过因为顺序问题导致MAVROS无法连接的情况。4.2 MAVROS连接测试启动PX4和MAVROScd ~/PX4_Firmware roslaunch px4 mavros_posix_sitl.launch在新的终端检查连接状态rostopic echo /mavros/state如果看到connected: false90%的问题出在UDP端口配置上。打开~/PX4_Firmware/launch/mavros_posix_sitl.launch确保fcu_url参数为arg namefcu_url defaultudp://:14540127.0.0.1:14557/4.3 XTDrone源码配置从国内镜像下载XTDronegit clone https://gitee.com/robin_shaun/XTDrone.git cd XTDrone git submodule update --init --recursive关键文件拷贝步骤注意路径差异cp sensing/gimbal/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src/ cp -r sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/ cp -r sitl_config/launch/* ~/PX4_Firmware/launch/5. 常见问题解决方案5.1 Gazebo黑屏问题如果Gazebo启动后只有黑屏可能是3D加速问题。尝试以下解决方案使用软件渲染export LIBGL_ALWAYS_SOFTWARE1或者指定显卡运行__NV_PRIME_RENDER_OFFLOAD1 __GLX_VENDOR_LIBRARY_NAMEnvidia gazebo5.2 MAVROS连接不稳定如果MAVROS时断时连可以调整心跳频率rosrun mavros mavsys rate --stream-id 1 100 rosrun mavros mavsys rate --stream-id 2 100 rosrun mavros mavsys rate --stream-id 3 1005.3 键盘控制无响应当键盘控制无效时按这个顺序检查确认无人机已解锁arm检查飞行模式是否为OFFBOARD查看/iris_0/mavros/state话题是否正常检查multirotor_communication.py是否正常运行6. 进阶调试技巧6.1 日志分析PX4的日志位于~/PX4_Firmware/build/px4_sitl_default/tmp/rootfs/log使用以下命令分析ulog_info 日志文件.ulg6.2 自定义世界文件要创建自定义仿真环境可以在~/PX4_Firmware/Tools/sitl_gazebo/worlds/下新建.world文件。例如创建一个简单的室内环境?xml version1.0 ? sdf version1.6 world nameindoor include urimodel://ground_plane/uri /include include urimodel://sun/uri /include /world /sdf6.3 多机仿真配置要同时仿真多架无人机修改launch文件group nsuav1 include file$(find px4)/launch/single_vehicle_spawn.launch arg namex value0/ arg namey value0/ arg namez value0/ arg nameR value0/ arg nameP value0/ arg nameY value0/ arg namevehicle valueiris/ arg namercS value$(find px4)/posix-configs/SITL/init/$(arg vehicle)/rcS/ arg namemavlink_tcp_port value4560/ arg nameID value1/ /include /group7. 性能优化建议7.1 提升Gazebo运行效率关闭不必要的插件export GAZEBO_PLUGIN_PATH使用轻量级模型model namelightweight_drone link namebase_link inertial mass1.0/mass /inertial /link /model7.2 网络优化对于多机通信调整QGC参数param set MAV_BROADCAST 1 param set MAV_PROTO_VER 27.3 内存管理大型仿真场景可能消耗大量内存可以通过以下方式优化sudo sysctl -w vm.overcommit_memory1 sudo sysctl -w vm.swappiness10