XTDrone仿真平台配置

10 篇文章 2 订阅

笔者在按照肖昆老师给的配置教程配置XTDrone时,遇到了很多莫名其妙的错误,所幸最终通过google解决了。所以在这里写下我的安装过程(绝大部分与XTDrone使用文档中给出的教程一致),以供大家参考。

1. 依赖安装

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
pip2 install pandas jinja2 pyserial cerberus pyulog numpy toml pyquaternion
pip3 install packaging numpy empy toml pyyaml jinja2

有时候apt报错,提示有几个软件包无法下载,可以试试运行 apt-get update 或者加上 --fix-missing 的选项,按照提示进行操作即可。

2. ROS安装与gazebo安装

ros安装(melodic版本)可参考这篇博客。
安装成功ros后,默认会安装gazebo,考虑到版本的问题,请在终端中运行如下命令重新安装:

sudo apt install ros-melodic-gazebo-* 

Gazebo有很多开源的模型文件,在终端输入:

git clone https://github.com/osrf/gazebo_models.git

进行下载。然后将该文件夹放在~/.gazebo中,并且重命名为models,此时在~/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。

3. MAVROS安装

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.sh 

最后一步需要装挺长时间,请耐心等待。

4. PX4配置

按照XTDone的安装文档进行:

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

这是github安装方式,如果嫌网速慢安装不了,移步安装文档,里面有gitee的安装方式。
编译完成后,会弹出Gazebo界面,将其关闭即可。
下一步修改 ~/.bashrc:

gedit ~/.bashrc

在.bashrc文件的最末尾加入以下代码,注意路径匹配,千万注意!!!前两个source顺序不能颠倒。

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

注意两个source的位置都在两个export的前面,如果source在它下面会有问题。

添加完成后不要忘记source:

source ~/.bashrc

然后运行如下命令,此时会启动Gazebo,如下图所示。

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

在这里插入图片描述在新的终端运行:

rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。如果检查路径无误后,依旧为false,可参考我下文的解决方法。

5. 安装地面站QGroundControl

地面站的安装可参考我之前写的一篇文章:
ubuntu20.04配置marvos+px4+XTDrone

6. XTDrone源码下载

在利用XTDrone的使用文档安装方法,后面运行roslaunch px4 indoor1.launch时控制飞机起飞的时候一直没反应。后在评论区找到了下面这种安装步骤:

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 sitl_config/init.d-posix/rcS ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
cp -r sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
# cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models
# cp -r sitl_config/models/* ~/.gazebo/models/
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/

#注释的是原来的安装步骤。
如果之前没有catkin_ws,需要建立一下,之后的教程会用到

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts

再重新编译一次:

cd ~/PX4_Firmware
make px4_sitl_default gazebo

然后关闭即可。

7. 用键盘控制无人机飞行

在一个终端运行:

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

Gazebo启动后,在另一个终端运行:

cd ~/XTDrone/communication/
python multirotor_communication.py iris 0

与0号iris建立通信后,再打开一个终端,运行

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py iris 1 vel

这边的数字1表示的是无人机个数。
一切正常的话,便可以通过键盘控制1架iris的解锁/上锁(arm/disarm),修改飞行模式,飞机速度等。使用v起飞利用的是takeoff飞行模式,相关参数(起飞速度、高度)要在rcS中设置。一般可以使用offboard模式起飞,这时起飞速度要大于0.3m/s才能起飞(即:upward velocity 需要大于0.3)。注意,飞机要先解锁才能起飞!飞到一定高度后可以切换为‘hover’模式悬停,再运行自己的飞行脚本,或利用键盘控制飞机。

但事实并非如此。

8. 出现的问题(必看)

运行第7部分时,发现无人机每反应,打开rostopic 查看话题:/iris_0/mavros/state:

rostopic echo /iris_0/mavros/state

发现与mavros的连接一直为false。简单说就是UDP通信没连接上。后来对比下载下来的PX4文件和官网的px4文件,终于发现了问题所在。XTDrone中配置的PX4的launch文件,例如mavros_posix_sitl.launch(路径在PX4_Firmware/launch/),打开它你会发现有如下这行:

    <!-- MAVROS configs -->
    <arg name="fcu_url" default="udp://:24540@localhost:34580"/>
    <arg name="respawn_mavros" default="false"/>

他与px4官网上的代码不一样,官网的代码为:

    <!-- MAVROS configs -->
    <arg name="fcu_url" default="udp://:14540@localhost:14557"/>
    <arg name="respawn_mavros" default="false"/>

因此,将其修改为官方代码或者如下:

    <!-- MAVROS configs -->
    <arg name="fcu_url" default="udp://:14540@127.0.0.1:14557"/>
    <arg name="respawn_mavros" default="false"/>

重新roslaunch相关的launch文件,与mavros的连接终于变成了True。接下来就跟第七部分一样测试代码就好。
当需要使用其他launch文件时类似这样改就行。

  • 13
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CHH3213

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值