保姆级避坑指南:在Ubuntu 20.04上从零搭建XTDrone仿真环境(ROS Noetic + PX4 v1.13.2)
当第一次接触XTDrone仿真环境时,许多开发者都会遇到各种意想不到的问题。从ROS安装失败到PX4编译报错,再到Gazebo插件冲突,每一步都可能成为阻碍。本文将带你避开这些坑,手把手完成XTDrone仿真环境的搭建。
1. 环境准备:避开依赖陷阱
在开始安装前,系统环境的准备至关重要。Ubuntu 20.04虽然是最稳定的选择,但默认的软件源可能包含过时的依赖包。
必须安装的基础依赖包:
sudo apt update && sudo apt upgrade -y sudo apt install -y ninja-build exiftool protobuf-compiler libeigen3-dev genromfs xmlstarlet gawkPython环境是另一个常见问题点。建议使用virtualenv创建隔离环境:
python3 -m pip install --user virtualenv python3 -m virtualenv ~/xtdrone_env source ~/xtdrone_env/bin/activate安装Python依赖时,特别注意版本兼容性:
pip install packaging==21.3 numpy empy toml pyyaml jinja2 kconfiglib jsonschema future提示:如果遇到"pip command not found"错误,先执行
sudo apt install python3-pip安装pip工具。
2. ROS Noetic安装:解决网络问题
ROS安装过程中最令人头疼的莫过于rosdep init和rosdep update的网络问题。传统方法在国内网络环境下失败率极高。
推荐使用国内镜像源:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME 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对于rosdep问题,鱼香ROS提供了一键解决方案:
sudo pip3 install rosdepc sudo rosdepc init rosdepc update验证ROS安装是否成功:
source /opt/ros/noetic/setup.bash roscore &注意:如果使用代理,请确保环境变量配置正确。常见的网络问题通常是由于DNS解析失败导致的,可以尝试修改
/etc/resolv.conf使用8.8.8.8等公共DNS。
3. Gazebo与PX4的兼容性配置
Gazebo版本与PX4的兼容性是个大坑。官方推荐Gazebo11,但Ubuntu 20.04默认仓库中的版本可能存在问题。
彻底卸载旧版Gazebo:
sudo apt-get remove gazebo* libgazebo* ros-noetic-gazebo* -y sudo apt autoremove -y安装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 gazebo11 libgazebo11-dev -yPX4编译常见错误及解决方案:
| 错误类型 | 解决方案 |
|---|---|
| submodule更新失败 | 手动下载缺失的子模块 |
| protobuf版本冲突 | 强制使用PX4要求的版本 |
| Eigen3路径问题 | 设置EIGEN3_INCLUDE_DIR环境变量 |
编译PX4时的推荐命令:
cd ~/PX4_Firmware git submodule update --init --recursive DONT_RUN=1 make px4_sitl_default gazebo4. XTDrone环境集成与验证
XTDrone与PX4的版本必须严格匹配。使用v1.13.2版本时,XTDrone也需要对应版本。
关键配置步骤:
- 复制配置文件到PX4目录
- 更新Gazebo插件
- 重新编译PX4
环境变量设置示例:
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/PX4_Firmware:~/PX4_Firmware/Tools/sitl_gazebo" >> ~/.bashrc source ~/.bashrc验证环境是否正常工作:
roslaunch px4 indoor1.launch # 新终端 cd ~/XTDrone/communication/ python multirotor_communication.py iris 0遇到Gazebo黑屏问题时,可以尝试:
export LIBGL_ALWAYS_SOFTWARE=1 gazebo --verbose在完成所有安装后,建议创建一个系统快照。这样在后续开发中遇到环境问题时,可以快速恢复到已知正常的状态。