XTDrone简明安装教程

XTDrone简明安装教程

XTDrone是基于PX4、ROS与Gazebo的无人机通用仿真平台。支持多旋翼飞行器(包含四轴和六轴)、固定翼飞行器、复合翼飞行器(包含quadplane,tailsitter和tiltrotor)与其他无人系统(如无人车、无人船与机械臂)。在XTDrone上验证过的算法,可以方便地部署到真实无人机上。

GitHub地址:https://github.com/robin-shaun/XTDrone

Gitee地址:https://gitee.com/robin_shaun/XTDrone

使用文档:https://www.yuque.com/xtdrone/manual_cn

基础配置

本人在Ubuntu 20.04和18.04都成功安装XTDrone,经验供参考(官方推荐18.04),报错请参考官方文档和百度自行解决。

Ubuntu 18.04直接按照教程安装。Ubuntu 20.04安装前建立了anaconda虚拟环境,Python版本2.7。

安装依赖

18.04直接按照下面命令。

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk
pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 
pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

20.04默认设置Python为2.7,Python3为3.8,分别对应pip和pip3。命令1去掉python-pip,命令2改pip2为pip。

ROS安装

根据Ubuntu版本安装对应的ROS,使用fishROS一键安装。

Ubuntu 18.04对应melodic,Ubuntu 20.04对应noetic。

开源地址:https://github.com/fishros/install

wget http://fishros.com/install -O fishros && . fishros 

根据提示选择ROS desktop版本和rosdepc,推荐一并安装vscode。

Gazebo安装

卸载ROS自带的Gazebo,重新安装最新的Gazebo 9。

Ubuntu 18.04自带的非最新,Ubuntu 20.04自带的为Gazebo 11。

sudo apt-get remove gazebo* 
sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo* #noetic对应修改

根据官网的step-by-step方式安装。

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
# 下面两步重新装上gazebo9
sudo apt-get install gazebo9
sudo apt-get install libgazebo9-dev
# 重装Gazebo9后需要更新依赖
sudo apt upgrade

到此为止,还差一步ROS Gazebo包的安装。

首先装依赖。

sudo apt-get install ros-melodic-moveit-msgs ros-melodic-object-recognition-msgs ros-melodic-octomap-msgs ros-melodic-camera-info-manager  ros-melodic-control-toolbox ros-melodic-polled-camera ros-melodic-controller-manager ros-melodic-transmission-interface ros-melodic-joint-limits-interface #noetic对应修改

下载XTDrone源码。

git clone https://gitee.com/robin_shaun/XTDrone.git
cd XTDrone
git submodule update --init --recursive

拷贝XTDrone改写的ROS Gazebo包。

cd ~/catkin_ws
cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs src/
catkin build #开发者测试使用catkin_make会出问题,因此建议使用catkin build

检查gazebo_ros是否安装成功。

#先roscore
source ~/catkin_ws/devel/setup.bash
rosrun gazebo_ros gazebo

下载Gazebo模型放在~/.gazebo中,重命名,此时在~/.gazebo/models/路径下可以看到很多模型。

cd ~/.gazebo
git clone https://github.com/osrf/gazebo_models.git
mv gazebo_models models

安装MAVROS

注意,mavros-extras一定别忘记装,否则视觉定位将无法完成。

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras #noetic对应修改
wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

PX4配置

这里PX4基本上就是原固件,使用v1.11.0-beta1。

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 #切分支1.11.0-beta1,命名分支为xtdrone/dev
git submodule update --init --recursive
make px4_sitl_default gazebo #20.04 conda deactivate再编译

修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。

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

测试PX4原固件。

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

并运行

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功,可以使用QGC对无人机进行控制。

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/ #修改PX4 sitl_gazebo中的插件
cp sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/ 
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/ #删除同名模型

修改PX4 sitl_gazebo中的插件(源代码不能控制多无人机的云台),需要重新编译PX4。

cd ~/PX4_Firmware
make px4_sitl_default gazebo

键盘控制无人机飞行

第一个终端运行

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

第二个终端运行

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0 #20.04改为python3

第三个终端运行

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel #20.04改为python3

便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。

推荐起飞流程,按i把向上速度加到0.3以上,再按b切offboard模式,最后按t解锁。

RotorS与XTDrone共存问题

按照上述步骤安装XTDrone后,再使用RotorS,会报错gzserver: symbol lookup error: /XXX/catkin_ws/devel/lib/librotors_gazebo_multirotor_base_plugin.so: undefined symbol: _ZN14gz_sensor_msgs9ActuatorsC1Ev。

参考链接:https://blog.csdn.net/m0_47737058/article/details/115736623

问题原因

此处问题与mav_mags有关,RotorS和sitl_gazebo定义的mav_msgs同名但内容不同。

因此要使用RotorS时候,需要删除~/PX4_Firmware/build/px4_sitl_default/build_gazebo/libmav_msgs.so。

由于source的顺序是PX4在后,XTDrone可以正常使用,无需删除RotorS中的libmav_msgs.so。

路径可用locate命令定位。

locate libmav_msgs

改进方法

要用RotorS时候不source后面PX4的路径就行,可以修改~/.bashrc。

# choose which simulator?
echo "XTDrone(1) or RotorS(2)?"
read edition
if [ "$edition" -eq "1" ];then
    # conda env
    conda activate xtdrone
    # px4 firmware
    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
else
    # conda env
    conda activate rotors
fi
  • 11
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值