ROS学习笔记(16):夹缝循迹

0.前言

在笔记的第15期对巡墙驾驶的原理进行了简单讲解,而这期我们来讲一下夹缝循迹,也常被叫follow the gap,也更新一些概念。

1.探索式路径规划与避障

1.概念

无预先建图的路径规划叫探索式路径规划,例如巡墙循迹和夹缝循迹,在使用slam技术进行建图前我们往往需要探索式路径规划来进行全局探索来完成建图。

2.巡墙循迹和夹缝循迹的差别

1.巡墙循迹

第15期我们重点讲了巡墙循迹的运行原理,可能有些眼尖的同学会思考一个关键问题——如果我的道路中间出现了障碍物该怎么办?很显然在现实生活中路道中间出现障碍物是时有发生的,但巡墙循迹并没有考虑到这个问题的出现。(这里建议去仔细思考一下巡墙循迹的原理)

ROS学习笔记(15)小车巡墙循迹-CSDN博客

在道路均匀顺滑的情况下巡墙循迹是真的很好用,只是这种算法泛用性太低了。任何产品需要考虑泛用性的问题。

2.夹缝循迹

夹缝循迹考虑到了道路不顺滑有障碍物在道路中间的情况。夹缝循迹采用了局部避障(反应式避障,无任何预先建图)。

3.夹缝循迹原理

1.获取雷达与障碍物关系

构建一张图来表示雷达弧度和障碍物距离的关系

图片1

注释:图中y轴是障碍物和雷达间的距离,x轴为雷达扫描的弧度,当得出弧度与距离的关系时我们就可以得知在那个方向上有障碍物、距离多远,这就为我们的避障提供了感知基础。

提示:雷达的运行本质上还是通过光的反射来进行,因此雷达有一个巨大的弊端-——对透光物体的感知极易失效。(这里也还是泛用性的问题,未来的某个环节我们还会加入视觉,将视觉和雷达进行联合运作来提高泛用性。)

2.车体问题

当我们得出了雷达与障碍物间的关系后,我们的到了几个避障的方向

图片2

但是还有一个问题需要我们去解决——夹缝的大小是否支持我们通过,小车和机器人本身是具有体积的,不是每一个夹缝都能通过。因此我们需要动态的去判断夹缝大小与机器人本身大小间的关系(这里依然是使用三角公式进行简单的判断——如下图3)来帮助判断能否通过。

图3

注释:a和b是超出我们的设定的距离阈值值

3.全向式运动问题与解决思路

在运动当中有两个类型:全向运动和非全向式运动。

1.全向式运动

全向式运动就是能无需调整姿态进行运动,典型例子是麦克纳姆轮(又称全向轮,可左右平移)。

图4

2.非全向式运动

非全向式运动是需要调整姿态进行运动,典型例子是阿克曼小车(有舵机转向结构,转向需前进一段距离。)

图5

3.全向式运动问题

图6

如图6显示阿克曼小车与物体间的关系,我们提到阿克曼小车需要进行前进来调整小车,如果此时已跳跃距离(BC距离)的中点为转向目标点就可能导致小车碰撞到物1。

4.解决思路

使用膨胀法进行处理。

图7

1.膨胀处理(也称安全气泡处理)

如图7所示小车的半径为r_1,两物体半径分别为r_2r_3,现实生活中我们无法忽视小车的体积进行任意穿梭,而当我们对物体的半径进行膨胀处理(物体半径膨胀一个r_1)后就可将小车近似一个点,此时可以穿梭了。(但我更推荐膨胀多一点,且动态调整,当距离越近时膨胀半径就越大

2.思路

图8

图8我们在阶跃点进行了碰撞处理后再次给出中点计算得到转向弧度。(但我更推荐对离小车最近且低于阈值的点进行膨胀处理。)

课本上也有另一种安全气泡:

4.最佳问题(贪心问题)

我们希望小车能越快越好(这是对性能的表现),但不是任何时候我们都应该全速行驶,这压力太大了。这时候我们就进行分段处理,每个阶段设置一个速度和一个安全气泡,这样就能保证速度和安全的平衡。

图9

5.直角问题和缓解思路

1.直角问题

图10

在遇到直角和一些特殊情况时会有b>a,小车向b方向进转向调整(正确方向应该是a),这就可能导致混乱(转向角和速度太大时可能会导致掉头)。

2.缓解思路

这个问题我还不知道如何完美解决,但使用中心点是可以缓解的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/651799.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

操作系统 - 文件管理

文件管理 考纲内容 文件 文件的基本概念;文件元数据和索引节点(inode) 文件的操作:建立,删除,打开,关闭,读,写 文件的保护;文件的逻辑结构;文件的物理结构目录 目录的基…

ubuntu_概念

su(switch user) wget(Web Get) cd(change directory) dpkg(Debian Packager)为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。 chmod(Change Mode)用于改变文件或目录的权限 ps(Process Status)进程状态 grep(Global Regular Expression Print)…

Linux shell编程学习笔记50:who命令

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。比如,我们可以使用who命令来收集当前已登陆系统的用户信息,当前运行级别等信息。 1. who命令 的功能、格式和选项…

亚马逊高效广告打法及数据优化,亚马逊高阶广告打法课

课程下载:https://download.csdn.net/download/m0_66047725/89342733 更多资源下载:关注我。 课程内容: 001.1-亚马逊的广告漏斗和A9算法的升级变化.mp4 002.2-流量入口解析和广告的曝光机制.mp4 003.3-标签理论 .mp4 004.4-不同广告类…

AI智能体研发之路-模型篇(四):一文入门pytorch开发

博客导读: 《AI—工程篇》 AI智能体研发之路-工程篇(一):Docker助力AI智能体开发提效 AI智能体研发之路-工程篇(二):Dify智能体开发平台一键部署 AI智能体研发之路-工程篇(三&am…

计算机组成原理易混淆知识点总结(持续更新)

目录 1.机器字长,存储字长与指令字长 2.指令周期,机器周期,时钟周期 3.CPI,IPS,MIPS 4.翻译程序和汇编程序 5.计算机体系结构和计算机组成的区别和联系 6.基准程序执行得越快说明机器的性能越好吗? 1.机器字长,存储字长与指令字长 不同的机器三者…

QGraphicsView实现简易地图17『涟漪效果』

前文链接:QGraphicsView实现简易地图16『爆炸效果』 模仿水波荡漾时的涟漪效果,参考了echarts中的散点图 支持设置散点大小、颜色、涟漪线条宽度。 动态演示效果 静态展示图片 核心代码 #pragma once #include "../AbstractGeoItem.h" #incl…

ios:Command PhaseScriptExecution failed with a nonzero exit code

问题 使用 xcode 跑项目真机调试的时候,一直报错 Command PhaseScriptExecution failed with a nonzero exit code。 解决 最终靠以下方法解决 删除Podfile.lock文件删除Pods文件删除.xcworkspace文件Pod installCommandShiftK 清理一下缓存 亲测有效

JavaWeb开发 1.Web开发 介绍

我的生命是一万次的春和景明 —— 24.5.27 一、什么是Web Web: 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 Web网站的工作流程 学习流程

JAVASE总结一

1、 2、引用也可以是成员变量(实例变量),也可以是局部变量;引用数据类型,引用, 我们是通过引用去访问JVM堆内存当中的java对象,引用保存了java对象的内存地址,指向了JVM堆内存当中…

MER 2024 第二届多模态情感识别挑战赛

多模态情感识别是人工智能领域的一个活跃研究课题。它的主要目标是整合多种模态来识别人类的情绪状态。当前的工作通常为基准数据集假设准确的情感标签,并专注于开发更有效的架构。然而,现有技术难以满足实际应用的需求。 清华大学陶建华教授联合中国科学…

在大厂工作还有哪些好处?

昨晚和好朋友聊天,聊到了这个在大厂工作的利弊,很多想换工作的同学或者准备校招的大学生可能会有疑虑,到底是进小公司好呢?还是进大公司好? 相比之下,大厂抗风险能力更强,内部员工的发展也更稳定…

Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录 1. 现象: 2. 原因分析: 3. 解决方案: 写法一:扩展Preflight 写法二: 4. 禁用 Preflight 1. 现象: Antd Vue项目引入TailwindCss之后出现svg icon下移,不能对齐显示的情况&#xff0…

数据集006:中药材识别数据集(含数据集下载链接)

数据集简介: 中药材共5类 900张图片 分别是百合 枸杞 党参 槐花 金银花 部分代码: def get_data_list(target_path,train_list_path,eval_list_path):生成数据列表#存放所有类别的信息class_detail []#获取所有类别保存的文件夹名称data_list_pat…

区间预测 | Matlab实现GRU-Attention-KDE核密度估计多置信区间多变量回归区间预测

区间预测 | Matlab实现GRU-Attention-KDE核密度估计多置信区间多变量回归区间预测 目录 区间预测 | Matlab实现GRU-Attention-KDE核密度估计多置信区间多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现GRU-Attention-KDE门控循环单元注意力…

基于EV54Y39A PIC-IOT WA的手指数量检测功能开发(MPLAB+ADC)

目录 项目介绍硬件介绍项目设计开发环境及工程参考总体流程图硬件基本配置光照传感器读取定时器检测逻辑 功能展示项目总结 👉 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指数量检测功能开发 👉 Github: EmbeddedCamerata/PIC-IOT_finger_recognition 项…

图解 BERT 模型

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学. 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总合集&…

PHP:集成Xunsearch生成前端搜索骨架

如果是安装宝塔,我们在集成xunsearch的时候就会比较简单,后面我们在介绍其他的接入方式; 首先我们进入到宝塔管理后台:【软件商店】-【输入xun】-【点击xunsearch】直接安装即可 安装成功之后,会自动在www/server中创…

Qt | QTabBar 类(选项卡栏)

01、上节回顾 Qt | QStackedLayout 类(分组布局或栈布局)、QStackedWidget02、简介 1、QTabBar类直接继承自 QWidget。该类提供了一个选项卡栏,该类仅提供了一个选项卡, 并没有为每个选项卡提供相应的页面,因此要使选项卡栏实际可用,需要自行为每个选项卡设置需要显示的页…

Android刮刮卡自定义控件

效果图 刮刮卡自定义控件 import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import …