基于激光雷达的无人机相互避障
本框架是基于激光雷达的无人机群自主避障代码:
- 其主体框架利用ORCA算法,他是经典的多智能体相互避障算法,此版本只能规避动态障碍物,不能规避环境形成的静态障碍物
- 我们对ORVA算法稍作修改,使其可以分布式部署,并且将仿真代码修改为uav实测代码
- ORCA算法需要知道其他智能体的绝对位置和速度作为算法输入,因此我们需要模块【1】和【2】来补充完成
- 模块【2】是利用将lidar安装在当前uav上,并用其检测和估计其他无人机的相对位置和速度
- 因为不满足ORVA算法需要绝对位置和速度的条件,因此需要利用模块【1】来估计当前uav的位置进行结合
【配置规范】不同的包安装在不同的工作空间中,方便管理,如catkin_ws_realsense,catkin_ws_vins,catkin_ws_lidar,catkin_ws_orca
1. 基于VIO/LIO的uav自身位置估计
[1] LIO
因为无人机安装了Lidar,所以用LIO比较好
待安装。。。
[2] VIO
VIO使用Vins,是基于D435深度相机的,具体安装参考D435i+vins-Fusion+ego-planner+yolo无人机避障实测中vins部分
roslaunch realsense2_camera rs_camera_vins.launch
rosrun vins vins_node ~/catkin_ws_vins/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml
2. 利用Lidar检测并估计其他uavs位置和速度
代码下载链接:https://gitee.com/dueen1123/lidar_esti
新建一个catkin_ws_lidar的工作空间
在其中先配置好激光雷达livox的SDK以及ROS版本的SDK,参考链接在此
然后将lidar_esti放在同一工作空间一起编译
代码运行如下:
# 启动激光雷达
roslaunch livox_ros_driver2 rviz_MID360.launch
cd ~/catkin_ws_lidar/src/lidar_esti/scripts
# 运行高反无人机检测
python3 multi_highRreflect_detect.py
# lidar到orca转换脚本
python lidar2orca.py
其中multi_highRreflect_detect.py和lidar2orca.py中的DETECT_UAV_NUM变量,需要根据实际uav个数修改
3. ORCA集群避障算法
代码链接:https://gitee.com/dueen1123/orca
实测代码不同的无人机需要添加不同的node_0_true.cpp,以及相对应的rvo_node_true.launch和node_0_true.sh
(1)rvo_node.h修改copy_num_agent变量,改为本次实测的uav个数
int copy_num_agent = 2; // 复制智能体数量
(2)node_0_true.cpp,修改如下代码
void rvo_true_velCallback(const UAVPosVel::ConstPtr &sub_msg){// ...// 用哪架无人机,序号改成几float x = new_velocities[0]->x();float y = new_velocities[0]->y();float z = new_velocities[0]->z();// ...
}
(3)rvo_node_true.launch更改为当前的 node_0_true节点
(4)node_0_true.sh后面的目标点数量,修改与总uav数量一致,并且是第几架无人机,对应的目标点位置才赋值
#!/bin/bash
rosrun rvo_ros set_goals_client_0 default 1 1 1 0 0 0
sleep 8rosrun rvo_ros set_goals_client_0 default 4 1 1 0 0 0
sleep 6
运行如下:
#启动飞机px4飞控
#启动vins绝对定位
#启动lidar相对定位
cd ~catkin_ws_orca/src/rvo_ros/scripts
# 无人机通信
python multirotor_communication.py iris 0
# 无人机悬停
python hover.py iris 1 vel
# 启动壁障算法
roslaunch rvo_ros rvo_node_true.launch
# 设置目标点
bash node_0_true.sh
============================ 以下可以忽视 ==========================
ORCA是主要的避障算法
ORCA需要一个自定义话题的输入,也就是一个包含速度和位置的消息
但c++和python自定义消息稍有不同,不能直接引用头文件,然后直接用消息名称使用,如下
#include "UAVPosVel.h"
void rvo_true_velCallback(const UAVPosVel::ConstPtr &sub_msg);
首先,#include可能难以直接定位到UAVPosVel.h,需要在cmakelist中的include_directories添加其生成路径,即xxx/devel/include/package_name
其次,UAVPosVel.h中的类不叫UAVPosVel,他生成了一个模板函数,所以使用时应该重新定义
总结如下:
include_directories(include${catkin_INCLUDE_DIRS}${PROJECT_SOURCE_DIR}/include/3d_library # 确保这里包含了3d_library目录/home/tju/catkin_ws_orca/devel/include/rvo_ros
)
#include "UAVPosVel.h"
typedef rvo_ros::UAVPosVel_<std::allocator<void>> UAVPosVel;
void rvo_true_velCallback(const UAVPosVel::ConstPtr &sub_msg);
相关文章:
基于激光雷达的无人机相互避障
本框架是基于激光雷达的无人机群自主避障代码: 其主体框架利用ORCA算法,他是经典的多智能体相互避障算法,此版本只能规避动态障碍物,不能规避环境形成的静态障碍物我们对ORVA算法稍作修改,使其可以分布式部署ÿ…...
Zookeeper基本原理
1.什么是Zookeeper? Zookeeper是一个开源的分布式协调服务器框架,由Apache软件基金会开发,专为分布式系统设计。它主要用于在分布式环境中管理和协调多个节点之间的配置信息、状态数据和元数据。 Zookeeper采用了观察者模式的设计理念,其核心…...
【生日视频制作】西游记孙悟空师徒提笔毛笔书法横幅AE模板修改文字软件生成器教程特效素材【AE模板】
生日视频制作教程西游记孙悟空师徒提笔毛笔书法横幅AE模板修改文字特效广告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】西游记孙悟空师徒提笔毛笔书法横幅AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 下载AE模板 安装AE…...
春日美食汇:基于SpringBoot的订餐平台
2 系统关键技术 2.1JSP技术 JSP(Java脚本页面)是Sun和许多参与建立的公司所提倡的动态web技术。将Java程序添加到传统的web页面HTML文件()。htm,。Html) [1]。 JSP这种能够独立使用的编程语言可以嵌入在html语言里面运行,正因为JSP参照了许多编程语言的特性…...
微信小程序中如何监听元素进入目标元素
Page({onLoad: function(){// 如果目标节点(用选择器 .target-class 指定)进入显示区域以下 100px 时,就会触发回调函数。wx.createIntersectionObserver().relativeToViewport({bottom: 100}).observe(.target-class, (res) > {res.inter…...
华为 HCIP-Datacom H12-821 题库 (6)
有需要题库的可以看主页置顶 V群仅进行学习交流 1.转发表中 FLAG 字段中B 的含义是? A、可用路由 B、静态路由 C、黑洞路由 D、网关路由 答案:C 解析: 可用路由用U 表示,静态路由用 S 表示,黑洞路由用 B 表示&#x…...
常见的pytest二次开发功能
pytest框架的二次开发主要是为了满足特定的测试需求或扩展其功能。以下是一些常见的pytest二次开发的功能及其实例,以及如何进行开发的大致步骤: 常见的pytest二次开发功能 定制化测试报告: 功能描述:pytest默认生成的测试报告可…...
Linux下安装MySQL8.0
一、安装 1.下载安装包 先创建一个mysql目录,在将压缩包下载到此 # 下载tar包 wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz等待下载成功 2.解压mysql8.0安装包 tar xvJf mysql-8.0.20-linux-glibc2.12-x86…...
【Python】CSV文件的简单使用
1.读取CSV文件 import csvpath "123.csv"with open(path) as f: # 打开csv文件csvReader csv.reader(f) # 读文件建立Reader对象listReader list(csvReader) # 将数据转换成列表print(listReader)2.写入CSV文件 import csvpath "123.csv"with ope…...
jobs命令
jobs命令是Unix/Linux shell中的一个内置命令,用于显示当前shell中正在运行的作业(job)的状态。作业是指在后台执行的命令或命令序列。 jobs命令的基本用法 显示所有作业的状态 当你在终端中启动一个命令并在其后加上&符号时ÿ…...
《深入浅出WPF》读书笔记.11Template机制(上)
《深入浅出WPF》读书笔记.11Template机制(上) 背景 模板机制用于实现控件数据算法的内容与外观的解耦。 《深入浅出WPF》读书笔记.11Template机制(上) 模板机制 模板分类 数据外衣DataTemplate 常用场景 事件驱动和数据驱动的区别 示例代码 使用DataTemplate实现数据样式…...
C语言程序设计(算法的概念及其表示)
一、算法的概念 一个程序应包括两个方面的内容: 对数据的描述:数据结构 对操作的描述:算法 著名计算机科学家沃思提出一个公式: 数据结构 +算法 =程序 完整的程序设计应该是: 数据结构+算法+程序设计方法+语言工具 广义地说,为解决一个问题而采取的方法和步骤…...
【最新华为OD机试E卷-支持在线评测】猜数字(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-E/D卷的三语言AC题解 💻 ACM金牌🏅️团队| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,…...
上海亚商投顾:深成指、创业板指均涨超1%,华为产业链反复活跃
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 大小指数昨日走势分化,沪指全天震荡调整,2800点失而复得,深成指、创业板指…...
【H2O2|全栈】Markdown | Md 笔记到底如何使用?【前端 · HTML前置知识】
Markdown的一些杂谈 目录 Markdown的一些杂谈 前言 准备工作 认识.Md文件 为什么使用Md? 怎么使用Md? 编辑 怎么看别人给我的Md文件? Md文件命令 切换模式 粗体、倾斜、下划线、删除线和荧光标记 分级标题 水平线 引用 无序…...
C++17: 用折叠表达式实现一个IsAllTrue函数
前言 让我们实现一个 IsAllTrue 函数,支持变长参数,可传入多个表达式,必须全部计算为true,该函数才返回true。 本文记录了逐步实现与优化该函数的思维链,用到了以下现代C新特性知识,适合对C进阶知识有一定…...
【IPV6从入门到起飞】2-2 获取你的IPV6(Teredo隧道)
【IPV6从入门到起飞】2-2 获取你的IPV6(Teredo隧道) 1 打工人的忧伤2 Teredo介绍2.1 背景2.2 工作原理 3 Linux 服务器获取IPV63.1 安装3.2 设置开机自启动和启动3.3 开放防火墙 UDP 35443.4 查看IPV6以及ping包测试3.5 修改Teredo服务器3.6 重启服务3.7…...
Linux 安全弹出外接磁盘
命令行操作 首先,需要卸载硬盘上的所有分区,可以使用umount来卸载分区 清空系统缓存,将所有的数据写入磁盘 sync 列出已挂载的文件系统 使用lsblk或者df命令来查找要卸载的分区 lsblk or df -h确保没有文件正在使用 使用lsof 命令来…...
面试准备-6
NIO底层是用Selector、Channel和ByteBuffer来实现的。主线程在循环使用select方法进行阻塞等待,当有acceptable(可连接)、readable(可读)或者writable(可写)事件发生的时候,循环就会…...
context canceled 到底谁在作祟?
一、背景 在工作中,因报警治理标准提高,在报警治理的过程中,有一类context cancel报警渐渐凸显出来。 目前context cancel日志报警大致可以分为两类。 context deadline exceeded 耗时长有明确报错原因 context canceled 耗时短无明确报错…...
基于无监督机器学习与静止系参数的伽马射线暴物理起源分类研究
1. 项目概述与核心思路伽马射线暴(GRB)是天文学中最具挑战性的谜题之一。这些来自宇宙深处的剧烈爆炸,在几秒到几分钟内释放的能量,可能超过太阳一生释放的总和。长久以来,我们一直试图回答一个核心问题:这…...
FactoryBluePrints:戴森球计划终极蓝图仓库使用指南
FactoryBluePrints:戴森球计划终极蓝图仓库使用指南 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是《戴森球计划》游戏中最大规模的工厂蓝…...
SPSS+Excel搞定SCI必备技能:零代码绘制Logistic回归亚组交互效应图
SPSSExcel零代码绘制Logistic回归亚组交互效应图:临床研究者的可视化救星"统计结果显著,但图表被审稿人打回重做"——这可能是临床研究者最头疼的问题之一。亚组交互效应分析作为高分SCI文章的"黄金标配",其可视化呈现直…...
ARM SME架构下的浮点外积运算优化实践
1. ARM SME架构与浮点外积运算概述在当代处理器设计中,SIMD(单指令多数据)架构已成为提升计算性能的关键技术。ARMv9引入的SME(Scalable Matrix Extension)指令集将这种并行计算能力提升到了矩阵运算层面,特…...
GetQzonehistory:如何永久保存你的QQ空间记忆
GetQzonehistory:如何永久保存你的QQ空间记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾在深夜翻看QQ空间,突然发现那些记录着青春点滴的说说正在逐…...
基于决策树与Boosting的暗网流量多阶段分类系统设计与实践
1. 项目概述:为什么暗网流量分类是个“硬骨头”?在网络安全这个没有硝烟的战场上,流量分类技术就像是前沿阵地的“雷达”和“声呐”。它的任务很简单:从海量、混杂的网络数据流中,快速、准确地识别出哪些是正常的网页浏…...
企业级多模型聚合平台选型,如何通过用量看板实现成本精细化管理
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级多模型聚合平台选型,如何通过用量看板实现成本精细化管理 当企业技术团队决定将大模型能力深度融入业务流程时&a…...
【小红书算法偏爱的文案结构】:ChatGPT无法自学的3层语义嵌套技巧(含2024Q2平台最新流量权重白皮书节选)
更多请点击: https://kaifayun.com 第一章:小红书算法偏爱的文案结构本质解构 小红书的推荐算法并非仅依赖关键词或标签匹配,其核心是通过多模态语义理解与用户行为反馈闭环,对文案的信息密度、情绪节奏和结构可读性进行加权评估…...
CentOS 7 SSH端口修改实战:SELinux、firewalld与密钥登录全闭环
1. 为什么改SSH端口不是“换把锁”,而是重构服务器的第一道防线很多人第一次接触Linux服务器安全,第一反应就是“改个SSH端口不就完事了?”——结果改完发现连不上,慌得重装系统;或者改完以为高枕无忧,三天…...
告别命令行!在Ubuntu标题栏实时显示网速和CPU的保姆级教程(Indicator-Sysmonitor)
在Ubuntu标题栏打造个性化系统监控中心:Indicator-Sysmonitor终极指南每次打开终端查看系统资源占用是否让你感到繁琐?作为长期使用Ubuntu的开发者,我深刻理解高效监控系统状态的重要性。Indicator-Sysmonitor这款轻量级工具彻底改变了我的工…...
