保姆级避坑指南:在Ubuntu 20.04上搞定XTDrone仿真平台(附常见报错解决方案)
无人机仿真开发正成为越来越多技术爱好者和研究人员的首选工具,而XTDrone作为基于PX4和ROS的开源仿真平台,凭借其丰富的功能和易用性赢得了广泛关注。然而,对于初次接触这个平台的开发者来说,从环境配置到成功运行第一个仿真案例,往往会遇到各种意想不到的"坑"。本文将带你一步步避开这些陷阱,从依赖安装到最终实现键盘控制无人机飞行,提供经过验证的解决方案。
1. 环境准备与依赖安装
在开始XTDrone的配置之前,确保你的Ubuntu 20.04系统已经更新到最新状态:
sudo apt update && sudo apt upgrade -y关键依赖安装是第一步,也是最容易出现问题的地方。以下命令包含了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注意:如果遇到软件包无法下载的情况,可以尝试添加
--fix-missing选项或先运行sudo apt-get update刷新软件源。
Python环境配置同样重要,需要为Python2和Python3分别安装必要的库:
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion pip3 install packaging numpy empy toml pyyaml jinja2常见问题及解决方案:
问题1:
pip2 not found- 原因:Ubuntu 20.04默认不安装Python2
- 解决:
sudo apt install python-pip
问题2:某些Python包安装失败
- 原因:可能是pip版本过旧
- 解决:
pip install --upgrade pip
2. ROS与Gazebo环境搭建
ROS Melodic是XTDrone推荐的版本,虽然Ubuntu 20.04默认支持的是ROS Noetic,但Melodic仍然可以正常工作。以下是安装步骤:
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-melodic-desktop-full安装完成后,别忘了初始化rosdep:
sudo rosdep init rosdep update echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source ~/.bashrc对于Gazebo,建议重新安装与ROS Melodic兼容的版本:
sudo apt install ros-melodic-gazebo-*Gazebo模型下载是一个容易被忽视但非常重要的一步。由于官方服务器在国外,直接下载可能非常缓慢:
git clone https://github.com/osrf/gazebo_models.git mkdir -p ~/.gazebo/models cp -r gazebo_models/* ~/.gazebo/models/提示:这一步可以避免后续仿真时Gazebo自动下载模型导致的长时间等待。
3. MAVROS与PX4配置详解
MAVROS是ROS与PX4飞控通信的桥梁,其安装需要特别注意:
sudo apt install ros-melodic-mavros ros-melodic-mavros-extras wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo chmod a+x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.shPX4固件配置是XTDrone的核心部分。推荐使用XTDrone修改过的版本:
git clone https://github.com/PX4/PX4-Autopilot.git mv PX4-Autopilot PX4_Firmware cd PX4_Firmware git checkout -b xtdrone/dev v1.11.0-beta1 git submodule update --init --recursive make px4_sitl_default gazebo环境变量配置是许多问题的根源,请仔细检查~/.bashrc中的设置:
px4_dir=~/PX4_Firmware source ~/ros_wc/devel/setup.bash source $px4_dir/Tools/setup_gazebo.bash $px4_dir $px4_dir/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$px4_dir/Tools/sitl_gazebo验证MAVROS连接是否成功:
roslaunch px4 mavros_posix_sitl.launch # 新终端中运行 rostopic echo /mavros/state如果connected显示为False,90%的问题都出在环境变量配置上,请仔细检查路径是否正确。
4. XTDrone源码配置与常见问题解决
XTDrone的源码安装有几个关键步骤容易出错:
git 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/最常遇到的问题是MAVROS连接失败,这通常是由于XTDrone修改了PX4的launch文件参数。检查并修改~/PX4_Firmware/launch/mavros_posix_sitl.launch中的以下部分:
<!-- 修改前 --> <arg name="fcu_url" default="udp://:24540@localhost:34580"/> <!-- 修改后 --> <arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>这个修改确保了MAVROS使用PX4默认的端口进行通信,解决了大多数连接问题。
5. 键盘控制无人机实战
当所有配置正确完成后,可以开始测试键盘控制无人机:
- 启动Gazebo仿真环境:
cd ~/PX4_Firmware roslaunch px4 indoor1.launch- 在另一个终端中建立通信:
cd ~/XTDrone/communication/ python multirotor_communication.py iris 0- 最后,启动键盘控制:
cd ~/XTDrone/control/keyboard python multirotor_keyboard_control.py iris 1 vel操作技巧:
- 先按
a键解锁无人机(arm) - 按
v键切换至takeoff模式起飞 - 使用方向键控制无人机移动
- 按
h键切换至hover模式悬停 - 按
d键锁定无人机(disarm)
如果无人机没有响应,请按顺序检查:
- MAVROS连接状态是否为
True - 无人机是否已解锁(armed)
- 飞行模式是否正确设置
- 控制指令话题是否正常发布