多机器人编队避障算法(1)
文章目录
- 前言
- 一、基于感知的避障
- 1.基于感知的Epuck2避障思路(理论)
- 2.基于感知的Epuck2避障实现(现实)
- 3.距离传感器结合红外传感器修复避障Bug
- 4.问题
- 5.代码逻辑图
- 二、基于人工势场力的避障
- 1.基于人工势场的Epuck2避障思路(理论)
- 2.基于人工势场力的Epuck2避障实现(现实)
- 三、两种避障方法的对比分析
- 总结
前言
今天闲的没事,正好是10/24,CSDN有活动,就把之前做的一些多机器人编队避障算法(主要是纯控制避障)梳理小结下( •̀ ω •́ )✧
一、基于感知的避障
1.基于感知的Epuck2避障思路(理论)

Ri为人工势场的斥力项,假设在k时刻机器人可得到一定范围内的障碍物坐标Xobs ,障碍物会对机器人 的速度产生一个斥力的影响R:
R的计算公式为:

其中M为障碍物个数,dm为探测距离,在此时刻避障响应R(k)会对机器人的速度控制产生一个影响。
2.基于感知的Epuck2避障实现(现实)
在Epuck2实机避障时,最终的控制输出Ui是线速度和角速度。


其中position_difference和angular_difference是机器人与期望位置/角度的差值。
avoid_delta按照上述公式进行计算。
然后当Epuck2探测到障碍物距离小于0.1m时,计算产生避障项使linear_velocity为负值机器人远离障碍物,并且产生正向或反向的角速度使机器人转向。当与障碍物距离大于0.1m时避障项为0,机器人向期望位置前进。
3.距离传感器结合红外传感器修复避障Bug
前面所说的Epuck2避障思路,但最终呈现出的效果却是机器人在障碍物前徘徊,无法绕过障碍物。
原因是机器人接近障碍物后,距离小于0.1m后产生反方向的速度,使距离拉大。当距离大于0.1m后避障项为0,机器人又受到引力作用向前,进而又使距离缩小,虽然会产生角速度使机器人转向,但只要靠近障碍物距离小于0.1m即产生反方向速度使机器人无法前进,原地徘徊。
解决:没有对人工势场项进行更改,而是通过距离和红外传感器反馈的距离来细化何时添加避障项,进行避障。

如图所示为Epuck2距离传感器(ToF)和8个红外传感器(Prox)的位置,通过代码可以分别获得他们检测到的与障碍物的距离信息(距离传感器的探测距离为2m,红外传感器的探测距离为0.05m)。
距离传感器探测到的距离记为r,8个红外传感器探测到的距离依次记为p0,p1,p2…p7(依图中标号)。
(1)避障项avoid_delta的计算
避障项的计算不变,但触发条件改变,之前通过动捕计算机器人中心位置与障碍物中心位置的距离(是否小于0.1)进行触发。改为由Epuck2前方的1个距离传感器和4个红外传感器触发,如图所示。

程序设置当r小于0.08m或p0,p1,p7,p6返回的探测距离中有一个小于0.04m时,表明机器人的前侧方遇到障碍物,返回测得的最小距离代入公式计算 ,否则将其赋值为0
(2) 机器人线速度的计算

当机器人前侧方遇到障碍物后,计算产生了一个负的避障项avoid_delta,在乘以设定的系数k_avoid,使其与期望位置产生的正向速度叠加,最终产生一个负的线速度,使机器人向远离障碍物方向移动。
当机器人传感器没有检测到障碍物时,避障项avoid_delta为0,机器人根据与期望位置的距离产生正的引力(线速度),使其朝着期望位置移动。
(3) 机器人角速度的计算
为了模拟出机器人受到(目标点吸引力和障碍物斥力叠加产生的合力)的效果,对机器人的角速度进行以下设计。
3.1)当障碍物位于机器人前进方向的右侧

如图所示当机器人前进方向的右侧出现障碍物时,受到目标位置引力和障碍物位置斥力的叠加,应产生向前进方向左侧的力。
我是这样模拟给这个力的:如图所示当机器人前进方向右侧遇到障碍物时,机器人右侧的两个红外传感器能够检测到与障碍物的距离p0,p1,当他们中有一个的距离小于0.04m时就产生这样一个角速度:

由于检测到障碍物时计算产生的 项为负,前面加负号产生一个正的角速度,使机器人逆时针旋转,并且为了使机器人不因 项产生负的线速度使机器人后退,设置当机器人角速度绝对值大于0时(即机器人旋转时),机器人线速度赋值为0。

如图所示,当转到机器人右侧的两个红外传感器检测到与障碍物的距离都大于0.04m时, avoid_delta项变为0,机器人的角速度为0,机器人停止旋转。但并没有结束,为了使机器人朝目标位置移动,此时会判断当前机器人角度与期望航向角的差值,若差值大于设定的阈值,即产生角速度使差值减小。

这样又会使机器人产生负的角速度,转向障碍物,以至于机器人在原地来回偏转,我通过位于机器人轮子旁的红外传感器p3来解决这个问题,当机器人位于图3.4所示的位置时,判断红外传感器p3返回的距离信息,如果小于0.045m,把角速度设置为0,这样当机器人的角速度为0,当机器人角速度为0时允许产生线速度,并且机器人前侧的距离和红外传感器测得的障碍物距离大于设定值, avoid_delta项为0,产生正的线速度使机器人前进。当机器人前进到如图所示位置时。

红外传感器测得的距离p3大于设定值0.045m,此时再根据当前角度与期望航向角的差值计算产生负的角速度,使机器人顺时针偏转绕开障碍物朝着目标位置前进。
3.2)当障碍物位于机器人前进方向的左侧
基本思路相同,在机器人左侧红外传感器检测到p7,p6小于0.04m时,产生一个负的角速度使机器人顺时针旋转,绕过障碍物。
3.3)其他情况
除了这两种情况,还有可能是恰好障碍物位于机器人前进方向的正中间(只有距离传感器测得的距离r小于设定值),或者是遇到墙壁障碍物(前侧所有障碍物检测的距离都小于设定值)。此时不论机器人朝那个方向旋转都可以。
4.问题
虽然解决了机器人的避障问题,但理论方面并没有改进,只是在实机实验的过程中,遇到问题解决问题,相当于人为的把所有可预见的情况,设置了相应的机器人应对办法,好处是直接,坏处是泛化性差,可能有一些没有预见到的复杂情况,只用不断测试完善才能确保机器人的避障效果。并且根据机器人与障碍物距离计算产生的避障项作用不大不能很好体现出其优势。
5.代码逻辑图

距离传感器(ToF)测得的距离为r,红外传感器顺时针旋转依次测得距离依次为p1,p2,p3….p7,代码逻辑如下:

基于感知的避障
二、基于人工势场力的避障
1.基于人工势场的Epuck2避障思路(理论)
前一个方法虽然通过人工势场公式给机器人加了引力斥力,但力是根据机器人与目标点/障碍物间的距离作用于机器人的线速度和角速度。由于通过距离远近来改变力的大小而影响速度,故没办法控制力的方向。为能够实现当机器人陷入局部最优时给机器人速度方向垂直的力,引入方向向量设计如下:




2.基于人工势场力的Epuck2避障实现(现实)
以机器人前方方向左侧遇到障碍物进行受力分析,并说明代码实现思路:







基于人工势场力的避障
三、两种避障方法的对比分析
首先是两种避障方法的路径结果对比,设置相同的起始位置(0.229,0.367),目标位置设为(2,0.367),在前进方向设置障碍物如图所示。

分别采用两种不同的避障策略,记录各策略三次避障的路径结果如下:首先采用基于传感器感知的避障方法,路径结果记录如下。
(1) 基于传感器感知的避障



(2) 基于人工势场加速度方向垂直力的避障方法




总结
这两种方法都存在较大的问题,也简单的尝试了将这两种方法应用于多机器人编队中,但结果远远低于预期,两种方法存在相同的缺陷,在编队行进过程中一旦遇到障碍物,编队就离散后面也很难继续保持编队前进。
目前也看了一些其他的避障方法,发现做出很好实机效果的多机编队,绝大多数采用基于轨迹引导的避障方法(代表EGO-Swarm多无人机编队),这种方法具有很大的优势,本文采用的两种避障方法遇到障碍物不断试探着去通过,而基于轨迹引导的避障具有预见性,在遇到障碍物前就已经开始规划进而调整整个编队中每个个体的控制策略,确保在避障的同时维持较好的编队效果。
写好多字了,就这样吧,还有一个基于二次规划的多机编队避障,下次再写o( ̄▽ ̄)ブ
相关文章:
多机器人编队避障算法(1)
文章目录 前言一、基于感知的避障1.基于感知的Epuck2避障思路(理论)2.基于感知的Epuck2避障实现(现实)3.距离传感器结合红外传感器修复避障Bug4.问题5.代码逻辑图 二、基于人工势场力的避障1.基于人工势场的Epuck2避障思路(理论)2.基于人工势场力的Epuck2避障实现(现实) 三、两…...
【网站项目】SpringBoot401超市收银系统
🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板ÿ…...
KD树详解:多维数据高效搜索的利器
摘要 在处理多维数据时,如何高效地进行搜索与查询成为一个关键问题。KD树(K-Dimensional Tree)作为一种高效的多维数据结构,广泛应用于计算机视觉、机器人导航、数据库检索等领域。本文将详细介绍KD树的基本概念、结构、构建算法…...
从裸机到70B大模型2:基础设施设置与脚本
从裸机到70B大模型2:基础设施设置与脚本 随着深度学习技术的不断发展,神经网络模型的规模逐渐扩大,从单个模型到大型70B模型,所需的计算资源和存储空间也在不断增加。为了训练这些大型模型,我们需要一套高效的基础设施…...
shodan4,挂黑网站查找,弱口令网站搜索
myip参数 shodan myip(查看自己的出口IP,哪个地址链接的公网)挂黑网站查找 我们今天看一看找一下,有些已经被黑的网站好吧,就是利用shodan查看一下哪些网站已经被黑了。 shodan search -limit 10 -fields ip_str,port http.title:hacked b…...
spring boot 整合Knife4j
项目依赖配置 在本项目中,我们使用了以下关键依赖,以支持 Spring Boot 和 API 文档生成。 1. Spring Boot 版本 为了构建一个可靠和高效的 Spring Boot 应用程序,我们使用以下父级依赖: <parent><groupId>org.springframework.boot</groupId><art…...
攻防世界的新手web题解
攻防世界引导模式 1、disabled_button 好,给了一个按钮,第一道题目就不会做 看的wp<input disabled class"btn btn-default" style"height:50px;width:200px;" type"submit" value"flag" name"auth&q…...
【国潮来袭】华为原生鸿蒙 HarmonyOS NEXT(5.0)正式发布:鸿蒙诞生以来最大升级,碰一碰、小艺圈选重磅上线
在昨日晚间的原生鸿蒙之夜暨华为全场景新品发布会上,华为原生鸿蒙 HarmonyOS NEXT(5.0)正式发布。 华为官方透露,截至目前,鸿蒙操作系统在中国市场份额占据 Top2 的领先地位,拥有超过 1.1 亿 的代码行和 6…...
pytest 单元框架里,前置条件
1.使用 setup 函数级的(setup_function、teardown_function)只对函数用例生效,而且不在类中使用类级的(setup_class、teardown_class)在类中使用,类执行之前运行一次,类执行之后运行一次 类中方…...
数字IC后端实现 | Innovus各个阶段常用命令汇总
应各位读者要求,小编最近按照Innovus流程顺序整理出数字IC后端项目中常用的命令汇总。限于篇幅,这次只更新到powerplan阶段。有了这份Innovus常用命令汇总,学习数字IC后端从此不再迷路!如果大家觉得这个专题还不错,想继…...
MySQL全文索引检索中文
MySQL全文索引检索中文 5.7.6版本不支持中文检索,需要手动修改配置 ft_min_word_len 1 ,因为默认配置 4 SHOW VARIABLES LIKE ft%; show VARIABLES like ngram_token_size;配置 修改 MySQL 配置文件 vim /etc/my.cnf在配置的 [mysqld] 下面添加**ft_…...
pikachu靶场-Cross-Site Scripting(XSS)
sqli-labs靶场安装以及刷题记录-dockerpikachu靶场-Cross-Site Scripting pikachu靶场的安装刷题记录反射型xss(get)反射型xss(post)存储型xssDOM型xssDOM型xss-xxss盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出 pikachu靶场的安装 刷题记录 反射型xss(get) …...
在数据库访问中,使用localhost、127.0.0.1和IP地址有什么差异
在数据库访问中,使用127.0.0.1和IP地址(在本地环境中通常指的是局域网IP或环回地址)的速度差异,实际上是非常微小的,甚至在很多情况下可以忽略不计。不过,为了更深入地理解这个问题,我们可以从以…...
C语言 | Leetcode C语言题解之第513题找树左下角的值
题目: 题解: #define MAX_NODE_SIZE 10000int findBottomLeftValue(struct TreeNode* root){int ret;struct TreeNode** queue (struct TreeNode **)malloc(sizeof(struct TreeNode) * MAX_NODE_SIZE);int head 0;int tail 0;queue[tail] root;whil…...
人工智能:改变未来生活与工作的无尽可能
随着科技的飞速发展,人工智能(AI)正成为推动全球变革的重要力量。无论是在医疗、企业,还是日常生活中,AI技术通过赋能各行业,正在深刻地改变我们的生活和工作方式。这些变化为我们提供了便捷与效率的同时&a…...
讲一讲 kafka 的 ack 的三种机制?
大家好,我是锋哥。今天分享关于【K讲一讲 kafka 的 ack 的三种机制?】面试题?希望对大家有帮助; 讲一讲 kafka 的 ack 的三种机制? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka的消息确认机制&…...
若依框架部署到服务器后头像资源访问404
排错过程 第一开始以为是代理出问题了 官网给出的解决方案 第一种是用代理后端接口,第二种是重写路径直接访问静态文件 接口通过捕获profile开头的路径/profile/avatar…,转为/home…/avatar找到我们在该路径下的文件 但是我想了一下,我ngin…...
纯GO语言开发RTSP流媒体服务器-RTSP推流直播、本地保存录像、录像回放、http-flv及hls协议分发
温馨提示:我们分享的文章是给需要的人,不需要的人请绕过,文明浏览,误恶语伤人! 前言 在软件开发中遇到使用流媒体音视频的行业比较多,如安防监控系统、无人机巡逻视频上云处理、直播平台、教育与企业培训…...
el-table相关的功能实现
1. 表格嵌套表格时,隐藏父表格的全选框 场景:当table表格设置复选(多选)功能时,如何隐藏表头的复选框,不让用户一键多选。 <el-table :header-cell-class-name"cellClass">// 表头复选框禁…...
衡石分析平台系统分析人员手册-展示类控件创建富文本攻略
富文本 富文本控件是一种常见的控件,可用来展示文本信息、用户属性信息,在数据分析中起到辅助分析的功能。 富文本常见的使用场景有: 仅展示纯文本信息。在富文本中展示数据集字段、指标、参数等信息。使用富文本展示用户属性相关信息。在…...
尤克里里的前世今生:这把“跳蚤小吉他”,凭什么火遍全世界?
提到尤克里里,大家脑海里瞬间浮现的,一定是阳光、沙滩、草裙舞、海风与欢快旋律的画面!这把小小的四弦乐器,颜值清新、音色治愈,上手零门槛,不管是小朋友启蒙、成年人解压,还是旅行随手弹&#…...
2026年选系统门窗,认准专业工厂的三大理由
系统门窗作为现代建筑节能与安全的重要组成,在2026年迎来了更高的性能需求。面对市场上琳琅满目的门窗品牌,消费者如何做出选择?一个关键标准是:是否选择专业工厂生产的系统门窗。专业工厂意味着更高的产品品质、更严格的工艺标准…...
国产替代之SFT1452-TL-W与VBE1251K参数对比报告
N沟道功率MOSFET参数对比分析报告一、产品概述SFT1452-TL-W:安森美(onsemi)N沟道硅功率MOSFET,耐压250V,低导通电阻,低输入电容,采用10V驱动,符合无卤素标准,具有ESD二极…...
码森防伪溯源系统:一站式构建产品信任桥梁,赋能品牌全流程数字化管理
在假冒伪劣产品屡禁不止、消费者对产品来源与真实性日益关注的今天,如何高效实现防伪、溯源、营销、管理一体化,已成为品牌方与技术开发者共同关注的核心问题。 防伪溯源系统,正是这样一套集低成本、易操作、强扩展性于一体的综合性解决方案。…...
从基础到智能体:RAG技术演进与实战避坑指南
1. 从基础到进阶:我眼中的RAG技术演进与实战价值如果你正在探索如何让大语言模型(LLM)变得更“靠谱”,尤其是在处理专业、实时或私有数据时,那么“检索增强生成”(RAG)技术几乎是你绕不开的路径…...
重构计算机历史叙事:挖掘被遗忘的贡献者与构建包容性科技未来
1. 项目概述:为什么我们需要重写计算机历史如果你问一个对计算机历史稍有了解的人,让他列举几位先驱,大概率会听到冯诺依曼、艾伦图灵、比尔盖茨、史蒂夫乔布斯这些名字。这个名单很长,但有一个共同点:他们几乎都是白人…...
repo2txt:从Git仓库到结构化文本的自动化提取工具详解
1. 项目概述:从代码仓库到纯文本的自动化提取最近在整理个人技术笔记和搭建内部知识库时,我遇到了一个挺普遍但有点烦人的问题:如何把分散在多个Git仓库里的代码、文档和配置文件,快速、完整地转换成结构清晰的纯文本文件…...
社交媒体运营实战指南:从算法逻辑到内容变现的完整技能树
1. 项目概述:社交媒体技能库的构建与价值在信息爆炸的今天,社交媒体早已不是简单的“发发状态、看看朋友”的平台。无论是个人品牌塑造、产品推广、内容创作,还是求职招聘、行业洞察,社交媒体都扮演着至关重要的角色。然而&#x…...
【无人机】基于动态反演和扩展状态观测器的无人机鲁棒姿态控制研究附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 完整代码获取 定制创新 论文复现点击:Matlab科研工作室🍊个人信条:格物致知,完整Matlab…...
数字永生:将意识上传云端的技术与伦理极限
——一个软件测试从业者的技术解构与风险分析各位同行,当你看到“数字永生”这四个字时,脑海里浮现的是什么?是马斯克口中2045年即将实现的意识上传,还是《黑镜》里那些被困在虚拟牢笼中的数字灵魂?作为一个每天与需求…...
