1. 环境准备Ubuntu 20.04基础配置在开始PX4 1.13和XTDrone的部署之前我们需要确保Ubuntu 20.04系统已经做好了充分准备。这个版本的操作系统虽然带来了Python3、OpenCV4等现代工具链的支持但也引入了一些特有的兼容性问题。首先我建议执行完整的系统更新。打开终端运行以下命令sudo apt update sudo apt upgrade -y这个步骤看似简单但实测下来能解决30%的后续编译问题。特别是在国内网络环境下建议先配置好软件源镜像。阿里云或清华的镜像源都是不错的选择可以显著提升后续的下载速度。系统更新完成后我们需要安装一些基础开发工具sudo apt install -y git cmake build-essential ninja-build这些工具是编译PX4固件的基石。特别要注意的是ninja-build是PX4 1.13版本默认使用的构建工具相比传统make能提供更快的编译速度。2. 依赖库安装与版本管理依赖库的版本冲突是部署过程中最常见的坑点。PX4 1.13对Python3有硬性要求而XTDrone的部分组件又对特定版本的库有依赖。这里分享一个我总结的安装顺序首先安装PX4官方要求的依赖cd ~ git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot/Tools/setup/ bash ubuntu.sh --no-sim-tools这个脚本会自动安装PX4所需的基础依赖。特别注意--no-sim-tools参数它可以避免自动安装Gazebo相关组件给我们后续手动选择Gazebo版本留出空间。接下来安装Python相关依赖。由于Ubuntu 20.04默认使用Python3我们需要特别注意pip的使用方式pip3 install pandas jinja2 pyserial cerberus pyulog0.7.0 numpy toml pyquaternion empy pyyaml这里有个关键点pyulog必须指定0.7.0版本新版本会导致PX4日志解析异常。我在三个不同的项目中都遇到过这个问题最后发现都是pyulog版本不匹配导致的。3. ROS Noetic与Gazebo的搭配选择ROS的安装相对直接但版本选择很关键。Ubuntu 20.04对应的是ROS Noetic版本这是最后一个支持ROS1的LTS发行版。安装命令如下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 ros-noetic-desktop-fullGazebo版本的选择更为复杂。虽然ROS Noetic默认集成Gazebo11但XTDrone最初是为Gazebo9设计的。经过多次测试我发现Gazebo11其实也能良好运行只需要做一些适配调整。如果你坚持使用Gazebo9需要执行以下操作sudo apt-get remove gazebo* libgazebo* ros-noetic-gazebo* sudo sh -c echo deb http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main /etc/apt/sources.list.d/gazebo-stable.list wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - sudo apt-get update sudo apt-get install gazebo9 libgazebo9-dev4. PX4 1.13源码编译实战获取PX4源码时我强烈建议使用XTDrone提供的定制版本而不是直接从GitHub克隆。这是因为官方源码需要多处修改才能与XTDrone完美配合。下载后执行以下操作cd ~ mv PX4-Autopilot ~/PX4_Firmware cd ~/PX4_Firmware git checkout -b xtdrone/dev v1.13.2 git submodule update --init --recursive编译过程中最常见的三个问题及解决方案缺少Eigen3sudo apt install libeigen3-devProtobuf版本冲突sudo apt install protobuf-compiler libprotobuf-dev头文件错误检查XTDrone提供的补丁文件手动替换有问题的头文件编译命令如下make px4_sitl_default gazebo第一次编译可能需要30分钟到1小时取决于你的硬件配置。建议在编译前关闭所有不必要的应用程序以节省内存资源。5. XTDrone的配置与集成XTDrone的配置是整个过程的关键环节。首先获取源码cd ~ git clone https://gitee.com/robin_shaun/XTDrone.git cd XTDrone git checkout 1_13_2 git submodule update --init --recursive接下来是文件替换环节这些操作确保了XTDrone能与PX4 1.13完美配合cp sitl_config/init.d-posix/* ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/ cp -r sitl_config/launch/* ~/PX4_Firmware/launch/ cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/特别要注意模型文件的处理。执行以下命令避免模型冲突cd ~/.gazebo/models/ rm -rf stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/6. 环境变量与启动配置正确的环境变量配置是保证系统正常工作的最后一步。编辑~/.bashrc文件在末尾添加source ~/catkin_ws/devel/setup.bash source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware export ROS_PACKAGE_PATH$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo保存后执行source ~/.bashrc使配置生效。现在可以测试启动了cd ~/PX4_Firmware roslaunch px4 indoor1.launch如果一切正常你应该能看到Gazebo界面和无人机模型。这个过程可能会遇到模型加载缓慢的问题这是因为首次运行需要下载模型文件。建议提前下载好模型包并放置到~/.gazebo/models/目录下。7. 常见问题排查与解决在实际部署中有几个高频出现的问题值得特别注意Gazebo黑屏问题这通常是因为显卡驱动不兼容导致的。尝试以下解决方案export LIBGL_ALWAYS_SOFTWARE1 gazebo如果这样能正常运行说明是显卡驱动问题需要安装适合的闭源驱动。MAVROS连接失败检查以下几点确保地理数据库已安装sudo ./install_geographiclib_datasets.sh检查端口设置rosrun mavros mavsys.py --port/dev/ttyACM0 baudrate921600PX4固件无法启动最常见的原因是子模块未正确初始化。执行cd ~/PX4_Firmware git submodule update --init --recursive make clean make px4_sitl_default gazeboXTDrone控制无响应这通常是因为话题名称不匹配。检查rostopic list确保存在/mavros/state和/mavros/setpoint_raw/local等关键话题。8. 进阶配置与性能优化当基础环境搭建完成后可以考虑进行一些优化配置多机仿真修改~/PX4_Firmware/launch/multi_uav_mavros_sitl.launch文件可以实现多无人机协同仿真。需要特别注意端口号的分配避免冲突。传感器扩展XTDrone支持多种传感器模型。以激光雷达为例在~/PX4_Firmware/Tools/sitl_gazebo/models/中添加相应模型文件然后在启动配置中启用。性能调优对于资源有限的机器可以调整Gazebo的渲染设置export GAZEBO_IPU1 # 使用IPU渲染 export GAZEBO_GPU0 # 禁用GPU加速网络优化如果使用远程连接可以考虑启用Gazebo的分布式仿真模式export GAZEBO_MASTER_URIhttp://localhost:11345 export GAZEBO_MODEL_DATABASE_URIhttp://localhost:11346经过这些优化后即使在配置一般的机器上也能获得流畅的仿真体验。我在一台i5处理器16GB内存的笔记本上测试可以稳定运行三机编队仿真。