Ubuntu20.04部署XTDrone避坑实践指南

张开发
2026/4/16 21:52:19 15 分钟阅读

分享文章

Ubuntu20.04部署XTDrone避坑实践指南
1. 环境准备Ubuntu20.04基础配置在开始部署XTDrone之前确保你的Ubuntu20.04系统处于最佳状态。我建议先执行以下命令更新系统基础软件包sudo apt update sudo apt upgrade -y这个步骤看似简单但很多新手会忽略。去年我在给团队搭建测试环境时就遇到过因为基础库版本过低导致的ROS安装失败。更新后建议重启系统确保所有更新生效。对于双系统用户需要特别注意磁盘空间分配。XTDrone及其依赖组件安装后至少需要30GB空间建议预留50GB以上。如果你使用的是虚拟机记得提前调整虚拟磁盘大小。我遇到过好几次因为空间不足导致编译失败的情况最后只能重头再来。显卡驱动也是容易踩坑的地方。运行Gazebo需要正确的显卡驱动支持建议使用以下命令安装NVIDIA官方驱动sudo ubuntu-drivers autoinstall安装完成后记得重启并用nvidia-smi命令验证驱动是否正常工作。去年帮学弟调试时发现他用的开源驱动导致Gazebo渲染异常卡顿换成官方驱动后流畅度直接提升三倍。2. ROS安装选择最适合XTDrone的版本ROS是XTDrone的核心依赖但版本选择很关键。经过多次测试我发现ROS Noetic对应Ubuntu20.04是最稳定的选择。官方推荐的方法是用鱼香ROS的一键安装脚本wget http://fishros.com/install -O fishros . fishros这个脚本会自动处理所有依赖关系比手动安装省心很多。记得我第一次手动安装ROS时花了整整两天时间解决各种依赖冲突而用这个脚本20分钟就搞定了。安装完成后务必验证环境变量是否配置正确。我建议在终端执行source /opt/ros/noetic/setup.bash echo source /opt/ros/noetic/setup.bash ~/.bashrc有个常见问题是多版本ROS共存导致的环境污染。如果你之前安装过其他ROS版本最好先完全卸载。去年实验室的测试机上就因为这个原因导致XTDrone无法正常启动清理旧版本后才解决。3. Gazebo安装版本控制的艺术Gazebo版本是最大的雷区之一。XTDrone官方推荐使用Gazebo9但Ubuntu20.04默认仓库中是Gazebo11。经过多次踩坑我发现最可靠的方法是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 update sudo apt install gazebo9 libgazebo9-dev -y安装后立即锁定版本防止意外升级sudo apt-mark hold gazebo9 libgazebo9-dev模型下载是另一个痛点。Gazebo首次启动时会下载大量模型文件国内网络环境经常失败。我整理了完整的模型包可以通过以下命令快速安装wget https://gitee.com/robin_shaun/XTDrone/releases/download/v1.0/gazebo_models.tar.gz tar -xzf gazebo_models.tar.gz -C ~/.gazebo/4. MAVROS安装解决依赖地狱MAVROS是连接ROS和PX4的桥梁但它的依赖关系相当复杂。最稳妥的安装方式是sudo apt install ros-noetic-mavros ros-noetic-mavros-extras -y 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这里有个隐藏坑点地理信息数据集安装需要科学上网。如果遇到下载失败可以手动下载后解压到/usr/share/GeographicLib目录。上个月给客户部署时就遇到了这个问题最后是通过内网镜像解决的。验证MAVROS是否安装成功roslaunch mavros px4.launch如果看到终端输出心跳信息说明安装正确。我遇到过因为Python包冲突导致启动失败的情况用pip uninstall pymavlink后再重新安装ROS版的pymavlink就解决了。5. PX4固件编译避开版本陷阱PX4的版本选择直接影响XTDrone的稳定性。经过多次测试我强烈建议使用PX4 v1.13.0稳定版git clone --recursive https://github.com/PX4/PX4-Autopilot.git -b v1.13.0 cd PX4-Autopilot make px4_sitl_default gazebo编译过程可能会遇到内存不足的问题。如果机器配置较低可以尝试make px4_sitl_default gazebo -j2去年在树莓派上编译时发现默认的并行编译会导致内存溢出加上-j2参数限制并行任务数后就顺利通过了。常见错误处理如果出现git submodule相关错误执行git submodule sync --recursive git submodule update --init --recursive遇到Python包缺失时用pip安装pip install numpy toml pandas jinja2 pyyaml6. XTDrone部署最后的冲刺XTDrone本体的安装相对简单但有几个细节需要注意mkdir -p ~/xtdrone_ws/src cd ~/xtdrone_ws/src git clone https://gitee.com/robin_shaun/XTDrone.git cd .. catkin_make编译完成后记得更新环境变量echo source ~/xtdrone_ws/devel/setup.bash ~/.bashrc source ~/.bashrc测试运行时可能会遇到模型路径问题解决方法是在launch文件中添加env nameGAZEBO_MODEL_PATH value${GAZEBO_MODEL_PATH}:$(find px4)/Tools/sitl_gazebo/models/上周在给新笔记本部署时发现因为屏幕缩放导致Gazebo界面显示异常解决方法是在启动命令前加上export QT_AUTO_SCREEN_SCALE_FACTOR07. 常见问题排查指南经过数十次部署实践我整理了这份高频问题排查清单Gazebo黑屏无响应检查显卡驱动glxinfo | grep OpenGL renderer尝试软件渲染export LIBGL_ALWAYS_SOFTWARE1ROS节点通信失败检查IP设置echo $ROS_IP验证主机名解析ping $(hostname)PX4无法解锁检查MAVROS连接rostopic echo /mavros/state验证遥控器校准rosrun mavros mavsys mode -c MANUAL模型加载异常清理Gazebo缓存rm -rf ~/.gazebo/*重新下载模型rosrun gazebo_ros spawn_model记得去年有次部署后一切正常但第二天启动时Gazebo突然崩溃。最后发现是NVIDIA驱动自动更新导致的回滚驱动后解决。建议禁用自动更新sudo apt-mark hold nvidia-driver-*

更多文章