Bug系列路径规划算法原理介绍(三)——Tangent BUG算法

news2024/12/23 5:48:55

在这里插入图片描述


   本系列文章主要对Bug类路径规划算法的原理进行介绍,在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展,整理了13种BUG系列中的典型算法,从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、Tangent BUG、I-BUG、RandomBug、BugFlood等算法。


   本篇文章作为本系列文章第三篇文章,主要对Tangent BUG算法进行介绍

   本系列其他文章见:BUG系列路径规划算法原理介绍——总结篇


   一、Tangent BUG 算法的提出

   1996年 I. Kamon和E. Rivlin在论文《A new range-sensor based globally convergent navigation algorithm for mobile robots》中提出了TangentBug算法

   (1)论文链接:https://ieeexplore.ieee.org/abstract/document/503814

   (2)论文DOI: 10.1109/ROBOT.1996.503814


   二、Tangent BUG 算法

   Tangent BUG算法是对BUG2算法的改进算法。它利用机器人上搭载的激光雷达等传感器对障碍物做出提前规避。

   借助传感器,我们可以测得每束光线到达传感器探测范围内障碍物的距离。假设传感器的探测半径为R,当探测光线在探测半径内没有遇到障碍物时,我们便规定该条探测光线与障碍物的距离为无穷远,当探测光线在探测半径内遇到障碍物时,可得到其到障碍物的距离ρ(x,θ),如下式所示,其中x是机器人当前位置,θ是当前探测光线的角度。

   根据上式,可以计算获得每条探测光线距离障碍物的距离,并可得到障碍物距离不连续的探测光线(即与相邻的探测光线相比,距离障碍物的距离发生突变的探测光线),如下面左图中的黑色粗线所示,易知这些探测光线出现在与探测范围内的障碍物相交与不相交的临界位置,这些探测光线与障碍物的交点记为Oi,如下面的右图中的O1 ~ O8所示,下面右图中的黑色粗线表示ρ(x,θ)连续的区间。


   了解以上内容之后,下面对Tangent BUG 算法的流程进行介绍,Tangent BUG 算法依然包括朝目标点移动和绕行障碍物两种行为,首先机器人从起始点沿着直线向目标运动,直到感应到位于自身和目标连线之间的障碍物,并得到ρ(x,θ)发生突变的边界点Oi,根据设定的规则,选取最佳的Oi点,比如我们可以选择d(x,oi)+d(oi,goal)最小的点作为最佳的Oi点,即选择Oi点中,机器人当前位置到该Oi点之间的距离与该Oi点到目标点的距离之和最小的点作为最佳Oi点。

   在下面左图中的例子中,在O1~O4中,d(x,o2)+d(o2,goal)的值最小,即选取O2作为最佳Oi点,同理在下面右图的例子中选取O4作为最佳Oi点。

   得到当前的最佳Oi点后,机器人开始朝着当前最佳Oi点移动,需要注意的是在机器人移动过程中传感器的探测光线与障碍物之间的距离和交点是实时变化的,Oi点和最佳Oi点的位置也是实时变化更新的,因此其运动轨迹会相对平滑一些,如下图所示。

   在朝着目标移动行为中,当机器人在朝着Oi点移动的过程中,d(x,oi)+d(oi,goal)的值应该是逐渐减小的,若发现d(x,oi)+d(oi,goal)的值不再减少,而将要开始增加,则开始执行绕行障碍物行为,沿障碍物边界运动。

   将障碍物区分为跟随障碍物(Followed obstacle)和阻挡障碍物(Blocking obstacle),跟随障碍物即为当前机器人正在感知的障碍,阻挡障碍物即为与从机器人当前位置到目标点之间的连线相交的障碍物。与此对应的也定义了两种距离:d_reach是机器人已感应到的边界与目标之间的最短距离。d_followed是在阻挡障碍物和目标之间的最短距离。

   与朝目标运动过程相同,在绕行障碍物行为中,机器人会继续朝选定最佳Oi运动,并不断更新d_reach和d_followed值,当 d_reach<d_followed时,机器人终止绕行障碍物行为,停止沿障碍物边界运动。转而开始执行朝目标点移动行为,继续朝目标点移动,以此循环,直至到达目标点。


   下面举一个例子来辅助理解以上内容,在下图所示的例子中,机器人从起始点开始朝着目标点直线,在移动过程中搭载的激光雷达会首先探测到障碍物WO2,然而该障碍物与机器人当前位置与目标点之间的连线不相交,即该障碍物不会影响机器人到达目标点,机器人回继续执行,直至机器人探测到障碍物WO1,即下面左图所示的状态,发现WO1与机器人当前位置与目标点之间的连线相交,停止朝目标点直行,开始朝最佳Oi点移动,在下面左图的状态中,即开始朝O2移动,在移动过程中会不断更新最佳Oi点的位置,直至d(x,oi)+d(oi,goal)的值不再减小,则开始绕行障碍物行为,并不断更新d_reach和d_followed值,在下面右图中的例子中,M点所在位置即为机器人观测到的障碍物距目标距离最近点,即d_followed=d(M,goal),当 d_reach<d_followed时,机器人终止绕行障碍物行为,停止沿障碍物边界运动。转而开始执行朝目标点移动行为,继续朝目标点移动,以此循环,直至到达目标点。

   上面右图中画出的运动轨迹中,实线部分为机器人朝目标点直行轨迹,虚线部分为朝目标点移动过程中的朝最佳Oi点移动轨迹,点线部分为绕行障碍物行为中朝最佳Oi点移动轨迹。


   下图中分别给出了传感器的探测半径为0和R时的两种轨迹


   Tangent BUG 算法的伪代码如下:


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]计算机毕业设计基于Springboot作业查重系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

原生JavaScript实现日志搜索高亮的解决方案

前言 最近在做一个日志管理的功能&#xff0c;其中有一个功能是这样的&#xff0c;在一个页面上会显示千上万条日志&#xff0c; 需要做一个搜索的功能&#xff0c;并能将搜索结果一一显示在视口中&#xff0c;通过控制滚动条。 这里使用html原生js实现了一个简单的demo&#…

Win10常见知识点及部分命令

Win10常见知识点及部分命令 1 常见知识点&#xff08;通用&#xff09; 1.1 用户、用户组 1.2 DNS服务器 Domain Name Server&#xff0c;域名解析服务器 1.3 DHCP服务器 Dynamic Host Configuration Protocol&#xff0c;动态主机配置协议 1.4 Web服务器 Web服务器&#xf…

DJ13-1 汇编语言程序设计-2

目录 一、段定义伪指令 1. 段名 2. 定位类型 3. 组合类型 4. 类别名 二、设定段寄存器伪指令 1. 设定段寄存器伪指令 2. 段寄存器的初始化方法 三、过程定义伪指令 一、段定义伪指令 伪指令 SEGMENT 和 ENDS 用于定义一个逻辑段。 使用时必须配对&#xff0c;分别表…

木聚糖-聚乙二醇-聚乙烯亚胺|PEI-PEG-Xylan|聚乙烯亚胺-PEG-木聚糖

木聚糖-聚乙二醇-聚乙烯亚胺|PEI-PEG-Xylan|聚乙烯亚胺-PEG-木聚糖 中文名称&#xff1a;木聚糖-聚乙烯亚胺 英文名称&#xff1a;Xylan-PEI 别称&#xff1a;聚乙烯亚胺修饰木聚糖&#xff0c;PEI -木聚糖 提供PEG接枝修饰木聚糖&#xff0c;木聚糖-聚乙二醇-聚乙烯亚胺&a…

CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection 解读

paper: CenterFusion: Center-based Radar and Camera Fusion for 3D Object Detection code: https://github.com/mrnabati/CenterFusion 0 引言 自动驾驶的感知应用中&#xff0c; 通常会融合多模态传感器&#xff0c; 如lidar和camera的融合。 单纯基于radar做感知的研究工…

[附源码]Python计算机毕业设计Django网上书城网站

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

在 python 中使用 Haar-Cascade 进行人脸检测

介绍在本文中&#xff0c;我们将讨论在 OpenCV python 中使用 Haar Cascade&#xff08;级联&#xff09;实现人脸检测器。识别图像中的给定对象称为对象检测。可以使用多种技术来完成此任务&#xff0c;但在本文中&#xff0c;我们将使用带有预训练 XML 文件的 haar 级联。这是…

毕业设计 单片机多功能红外空调遥控器 - 嵌入式 物联网

文章目录0 前言1 简介2 主要器件3 实现效果4 硬件设计空调遥控器原理原理图解码IR信号5 软件说明代码与Homekit进行连接5 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩…

3D nunuStudio脚本开发入门

在 3D应用集成开发环境 nunuStudio 中&#xff0c;脚本是使用 javascript 语言编写的&#xff0c;javascript 是用于开发网页的语言&#xff0c;它是一种易于学习的语言&#xff0c;本教程不需要任何编程知识。 但我建议你在继续学习下一个教程之前学习 javascript 编程的基础知…

JSP | oa项目增加用户登录的功能

目录 一&#xff1a;实现用户登录的功能 &#xff08;1&#xff09;当前oa应用还存在的问题&#xff1f; &#xff08;2&#xff09;实现登录功能&#xff1f; &#xff08;3&#xff09;最终达到的结果&#xff1f; &#xff08;4&#xff09;目前存在的问题&#xff1f;…

ASEMI-GBU808整流桥如何测好坏

编辑-Z 整流桥是将交流转化为直流的集成电路设备&#xff0c;主要用于开关电源或逆变电源的整流电路。接下来&#xff0c;让我们了解GBU808整流桥&#xff0c;以及GBU808整流桥如何测好坏的方法。 整流桥GBU808的结构 整流桥GBU808有四只脚分别是AC输入两只脚&#xff0c;用符…

​win10下安装 RabbitMQ​

下载安装包&#xff1a;RabbitMQ-Windows版.7z-Java文档类资源-CSDN下载 下载RabbitMQ一定要保持 Erlang 和 RabbitMQ 的版本匹配 1、安装 Erlang 安装 RabbitMQ 之前需要先安装 Erlang 环境 Erlang 下载地址 https://www.erlang.org/downloads 2、安装 RabbitMQ RabbitMQ 下…

【网络层】RIP协议详解(应用层)、慢收敛、OSPF协议(适合大网络)

注&#xff1a;最后有面试挑战&#xff0c;看看自己掌握了吗 文章目录路由选择分类RIP--距离向量路由选择------简单-------每个路由器维护一个到其他的最佳距离向量记录---------跳数最少-----RIP距离最高16&#xff08;不可达&#xff09;最多15个网络-------只适合小的互联网…

Springboot集成activiti7

在pom文件中添加SpringBoot集成Activiti7的依赖 <!--添加activiti和SpringBoot整合的依赖内置的MyBatis版本与外面的会有冲突&#xff0c;所以需要排除--> <dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-start…

毕业设计-深度学习身份证号码检测识别-python-opencv

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

Spring Security HTTP认证

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 HTTP提供了用户权限控制和认证的通用方式&#xff0c;这种认证方式通过HTTP请求头来提供认证信息&#xff0c;而不是通过表单…

[附源码]计算机毕业设计基于Springboot校园运动会管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

opencv c++ 霍夫圆检测

1、原理 a&#xff09;对某点&#xff0c;以其为圆心的圆为无数&#xff08;一圈圈的圆&#xff09;&#xff0c;将其从x-y平面坐标系上转换到r-θ极坐标系上后&#xff0c;则变成了以r、θ为自变量&#xff0c;为固定值&#xff0c;x、y为因变量的式子&#xff1a; b&#xff…

一文带你走进JS语法(最全笔记)

目录 基本语法 1.引入方式 2.注释 3.输入输出语句 4.变量和常量 5.原始数据类型 6.运算符 7.流程控制语句 8.数组 9.函数 DOM 1.概述 2.元素对象的操作 3.元素内属性操作 4.元素内文本操作 事件 面向对象 1.定义类的方式 2.继承 内置对象 1.Number对象 2…