当前位置: 首页 > news >正文

XTDrone-固定翼无人机编队跟踪无人车-配置教程

配置使用ROS版本为Neotic

1 配置

1.1 加载固定翼无人机编队跟踪控制工程文件

cp -r ~/XTDrone/coordination/fixed_wing_formation_control ~/catkin_ws/src

1.2 加载一些用到的功能包

sudo apt-get install ros-noetic-serial #根据自己的ROS版本修改
sudo apt-get install libpcap-dev
sudo apt-get install ros-noetic-velocity-controllers
sudo apt-get install ros-noetic-gazebo-msgs

1.3 安装一些必要的依赖

cp -r ~/XTDrone/sitl_config/gazebo_ros_pkgs ~/catkin_ws/src #若已在基础配置中完成则忽略此步骤
cp -r ~/XTDrone/sitl_config/ugv/* ~/catkin_ws/src
cp -r ~/XTDrone/sitl_config/gazebo_plugin/velodyne ~/catkin_ws/src

1.4 将launch文件装入PX4的launch文件夹中

cd ~/catkin_ws/src/fixed_wing_formation_control/launchfile
cp fixed_wing_formation_control.launch ~/PX4_Firmware/launch

1.5  在/catkin_ws/devel/include下创建一个功能包fixed_wing_formation_control,并将/catkin_ws/src/fixed_wing_formation_control/headerfile中的头文件拷贝到创建的fixed_wing_formation_control中。

mkdir -p ~/catkin_ws/devel/include/fixed_wing_formation_control
cd ~/catkin_ws/src/fixed_wing_formation_control/headerfile
cp Formation_control_states.h FWcmd.h Fw_cmd_mode.h Fw_current_mode.h Fwmonitor.h FWstates.h Leaderstates.h ~/catkin_ws/devel/include/fixed_wing_formation_control

备注:一定要先执行这个一步之后再编译,否则会出现如下报错:

1.6 编译

cd ~/catkin_ws
catkin build

 编译的过程中可能会出现如下报错:

错因分析:task_main.cpp文件中的参数“airspeed“与Leaderstates. msg文件中的参数名不同。

解决方法:

a.打开Leaderstates. msg文件,检查参数名是否为:air_speed,如下图所示。

b.打开task_main.cpp文件,将173行的代码中的airspeed修改为air_speed,然后保存,如下面两张图所示。

c.修改完成后再次编译

cd ~/catkin_ws
catkin build

 出现下图所示的情况,则说明编译成功。

2 启动仿真

2.1 借助bash文件一键启动

cd ~/catkin_ws/src/fixed_wing_formation_control/scripts/ 
bash multi_uav_sim_ba_3vtol.sh
这个过程中可能出现如下报错:

2.1.1 报错1:

错因分析:
这个问题是由于ROS在Noetic版本中xacro包的路径有所变化导致的。launch文件中尝试使用xacro来生成URDF时,指定的路径不正确。Noetic版本中,xacro命令行工具的路径应该是/opt/ros/noetic/lib/xacro/xacro
也就是说ROS neotic中/opt/ros/noetic/share/xacro下没有xacro.py 而是在opt/ros/noetic/lib/xacro/xacro中,如下两张图所示。

解决方法:
打开fixed_wing_formation_control.launch,将其中的xacro.py中的.py去掉后并保存,具体修改位置如下两图所示。文件路径:/home/ray/PX4_Firmware/launch

2.1.2 报错2

错因分析:#!/usr/bin/env python用的是pyhton2,而neotic用的是python3。
解决办法:将/home/ray/catkin_ws/src/catvehicle/src下的所有py文件中的#!/usr/bin/env python修改为#!/usr/bin/env python3并保存即可。如下列几张图所示。

2.1.3 报错3:

错因分析及解决方法:说明gazebo进程已经被占用,需要输入如下两条命令关闭之前的gazebo进程。
killall gzserver
killall gzclient 

2.1.4 再次启动仿真:

cd ~/catkin_ws/src/fixed_wing_formation_control/scripts/ 
bash multi_uav_sim_ba_3vtol.sh
正常启动后的效果如下图所示:

2.2 启动QGC地面站

进入你的QGC地面站的安装位置,然后在该文件在中打开终端,输入以下命令即可打开地面站。
./QGroundControl.AppImage
如果进去的界面如下:

这可有能是你的rcS文件中的参数未正确设置,详见PX4飞控EKF配置 · 语雀 ,检查你的rcS文件的参数是否设置如下:

	# GPS usedparam set EKF2_AID_MASK 1# Vision used and GPS denied#param set EKF2_AID_MASK 24# Barometer used for hight measurementparam set EKF2_HGT_MODE 0# Barometer denied and vision used for hight measurement#param set EKF2_HGT_MODE 3

修改并保存后,再次重启gazebo仿真和QGC地面站。
正常打开后的界面如下:

2.3 借助QGC首先在旋翼模式下实现升空

备注:以下的每一步操作,每个无人机都需要进行。

2.3.1 解锁

按照下列顺序的图片中红框位置依次点击或滑动来解锁无人机。

 2.3.2  利用takeoff分别起飞各个无人机

按照下列顺序的图片中红框位置依次点击或滑动来起飞无人机。

2.3.3 达到预定起飞高度后,切换为固定翼模式

按照下列顺序的图片中红框位置依次点击来切换无人机模式。

切换完成后,无人机开始盘旋,效果如下图所示。

2.4 切换为offboard模式

在后三个窗口根据提示按数(数字间有空格)切换offboard模式并选择固定翼无人机编队队形,如果切换不成功可以尝试多切换几次。
输入示例:1 2     然后再按回车即可

但是,当0号机切换为offboard模式之后出现了如下报错,而后就自动降落了。

报错可能原因如下:
在QGroundControl (QGC) 地面站中,出现 "Failsafe enabled: No manual control stick input" 的提示意味着无人机进入了失效保护(Failsafe)模式,原因是未检测到手动控制杆的输入信号。这通常表示遥控器与无人机之间的通信中断,或者遥控器未发送控制信号。
至此,配置结束,剩下的教程可参考官方教程。
备注:目前“Failsafe enabled: No manual control stick input“这个问题还没有解决,后续解决后会及时更新,如果有会的大佬可以私信交流。

参考:固定翼无人机编队跟踪无人车 · 语雀

http://www.lryc.cn/news/389739.html

相关文章:

  • 实现高性能、可扩展的实时数据采集系统:go-zero的应用与实践
  • AUTOSAR NvM模块(五)
  • 输出feign调用详细日志
  • mac编译r2frida问题解决
  • 中介者模式在金融业务中的应用及其框架实现
  • javaSE期末练习题
  • Linux文件数据写入
  • vue2 中如何使用 vuedraggable 库实现拖拽功能
  • 0基础学C++ | 第13天 | 基础知识 | 类 | 对象
  • Java | Leetcode Java题解之第212题单词搜索II
  • Flink面试题总结
  • 人工智能与云计算
  • 9.(vue3.x+vite)修改el-input,el-data-picker样式
  • java反射和注解
  • react_后台管理_项目
  • 【C语言】使用C语言编写并使用gcc编译动态链接库
  • 使用supportFragmentManager管理多个fragment切换
  • 开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(六)
  • 独立开发者系列(17)——MYSQL的常见异常整理
  • 【ajax实战02】数据管理网站—验证码登录
  • 人工智能在反无人机中的应用介绍
  • 【力扣 - 每日一题】3115. 质数的最大距离(一次遍历、头尾遍历、空间换时间、埃式筛、欧拉筛、打表)Golang实现
  • 【Gin】项目搭建 一
  • C++ 和C#的差别
  • Vue2组件传值(通信)的方式
  • 【数据结构 - 时间复杂度和空间复杂度】
  • telegram支付
  • elasticsearch-6.8.23的集群搭建过程
  • javascript输出语法
  • 仓库管理系统26--权限设置