VFH & VFH+ & VFH*—— Path Planning

2023-05-16

版权声明:本文为博主原创博文,未经允许不得转载,若要转载,请说明出处并给出博文链接

              

       最近在学习VFH算法,感觉蛮神奇,特意从维基百科扒来了资料,供学习研究。。。

       在机器人技术中,Vector Field Histogram(VFH,向量场直方图)是Johann Borenstein和Yoram Koren在1991年[1]提出的一种实时路径规划算法。VFH通过所谓的直方图网格利用机器人环境的统计表示,因此非常重视处理来自传感器和建模误差的不确定性。与其他避障算法不同,VFH考虑了机器人的动力学和形状,并返回特定于平台的转向指令。VFH作为一个局部路径规划器而非全局路径规划器,已被证明产生接近最优路径。

        原VFH算法是基于 Virtual Force Field虚拟力场的局部路径规划算法。VFH在1998年由Iwan Ulrich和Johann Borenstein[2]更新,并重新命名为VFH+(非官方的“增强VFH”)。这个方法在2000年由Ulrich和Borenstein再次更新,并被重新命名为VFH*[3]。 VFH是目前移动机器人中最受欢迎的局部路径规划器之一,与后来开发的动态窗口方法竞争。许多机器人开发工具和仿真环境都内置了对VFH的支持。

 

VFH的目标是计算效率,鲁棒,不敏感的误读。在实践中,VFH算法被证明是快速和可靠的,特别是在穿越密集的障碍。VFH算法的中心是通过直方图网格使用障碍物的统计表示。这样的表示非常适合不准确的传感器数据,并适应多传感器读数的融合。

  • VFH算法包含三个主要部分:

①直角直方图网格:利用机器人的距离传感器,如声纳或激光测距仪,构建二维直角直方图网格。网格不断实时更新。
②极坐标直方图:将围绕机器人瞬间位置的笛卡尔坐标直方图降低,构造一维极坐标直方图。
③候选谷:根据与目标方向的接近度,选择极障碍密度低于阈值的连续扇区,称为候选谷。
一旦选定的候选方向的中心被确定,机器人的方向被引导。机器人在迎面接近障碍物时降低速度。

VFH 2D simulation

  • VFH+算法改进包括:

①阈值迟滞:迟滞增加了计划轨迹的平滑性。
②机器人体型尺寸:考虑不同体型的机器人,不需要通过低通滤波器手动调整参数。
③障碍物前视:被障碍物阻挡的扇区在VFH+中被遮蔽,这样引导角度就不会直接进入障碍物。
④成本函数:添加了一个成本函数来更好地表征算法的性能,并通过改变成本函数或其参数来提供行为切换的可能性。

  • VFH*算法

2000年8月,Iwan Ulrich和Johann Borenstein发表了一篇描述VFH*的论文,声称改进了原来的VFH算法,明确地处理了局部规划算法在全局最优性没有得到保证的缺点。在VFH*中,算法通过最小化代价和启发式函数来验证A*搜索算法生成的转向命令。虽然在实践中很简单,但在实验结果中表明,这种向前看的验证能够成功地处理原VFH和VFH+无法处理的问题情况(产生的轨迹是快速和平滑的,没有明显的减速存在障碍)。

 

参考文献:

  1.  Borenstein, J.; Koren, Y. (1991). "The vector field histogram-fast obstacle avoidance for mobile robots". IEEE Transactions on Robotics and Automation7 (3): 278–288.     ——>   VFH(原始paper)
  2. ^ Ulrich, I.; Borenstein, J. (1998). "VFH+: reliable obstacle avoidance for fast mobile robots". Robotics and Automation, 1998. Proceedings. 1998 IEEE International Conference on2.   ——>     VFH+(原始paper)
  3. ^ Ulrich, I.; Borenstein, J. (2000). "VFH: local obstacle avoidance with look-aheadverification". Robotics and Automation, 2000. Proceedings. ICRA'00. IEEE International Conference on3.   ——>     VFH*(原始paper)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VFH & VFH+ & VFH*—— Path Planning 的相关文章

  • 如何找出 rubocop 正在使用哪个配置文件?

    我很清楚 rubocop 遵循的规则来查找它用来构建它使用的警察列表的配置文件或文件 解释如下 RuboCop 配置 https docs rubocop org rubocop configuration html 然而 这些规则允许几种
  • Jython 不会将 PYTHONPATH 加载到 sys.path 中

    根据我读到的内容 sys path 应该由 PYTHONPATH 设置 在 Python 中 它是这样工作的 但在 Jython 中则不然 我可以绕过 Dpython path 但我想知道为什么 Jython 表现不佳 qa Scantro
  • 如何在不使用 try-catch 的情况下检查路径是否有效?

    我想检查文件夹是否存在 如果不存在则创建它 但我不知道提供的路径是否有效 当路径无效时 会发生以下情况 string path this is an invalid path if Directory Exists path Directo
  • 如何在Eclipse中引用不在src中的文件

    我正在尝试获取 MyBatis 的资源 该教程指出我的连接工厂中需要以下内容 String resource org mybatis example Configuration xml Reader reader Resources get
  • 保存的图像未显示在画廊颤振中

    我创建了一个在外部目录中创建文件夹的函数 之后 我从互联网下载图像并将其保存到 图库图像 文件夹中 图像正在保存在文件夹中 但在厨房中不可见 我错过了什么吗 Code void createFolder async String direc
  • Python os.path是ntpath,怎么办?

    谁能告诉我Python如何 别名 os path to ntpath gt gt gt import os path gt gt gt os path
  • 具有可变动作的强化学习

    All the 强化学习 http en wikipedia org wiki Reinforcement learning我读过的算法通常应用于具有固定数量操作的单个代理 是否有任何强化学习算法可以在考虑可变数量的动作的同时做出决策 例如
  • python 路径 django

    我怎样才能添加一些东西到我的 Pythonpath 文件到底位于哪里 我必须更改以添加到我的 pythonpath 中 我到底要添加什么到我的 Pythonpath 中 如果Python调用 Library Frameworks Pytho
  • 为 Eclipse 设置正确的 PATH

    我最近改变了我的路径 这样我就可以继续阅读 Head First Java 一书 而且我之前也用过 Eclipse 现在 当我尝试再次进入 Eclipse 时 它 无法打开 因为它说无法在我的目录中找到要使用的 JRE 或 JDK 我已经移
  • 当由不同模块导入时,如何访问 Python 2.7 中的相对路径

    目标 使用从各种 python 模块调用的通用实用程序函数时访问 写入相同的临时文件 背景 我正在使用 python Unittest 模块来运行一组自定义测试 这些测试通过 pySerial 与仪器接口 因为我使用的是unittest模块
  • 使用 xcopy 命令时出现“复制的无效路径 0 个文件”错误

    您好 我有一个小命令可以批量复制文件 这会有所帮助 因为我每天会多次执行此特定复制 使用 xcopy 命令时会出现此问题 一切都按顺序进行 但我收到此错误 复制的路径 0 文件无效 这是代码 C Windows System32 xcopy
  • 在python中使用windows资源管理器浏览器存储文件路径

    我在 python 中编写了一些加密代码 它从用户那里获取原始输入消息 然后使用 AES 对其进行加密和解密 现在我想增强工作 我希望我可以从代码中打开 Windows 资源管理器并浏览到计算机上的任何文件 选择它 当我按 确定 按钮时 文
  • 在 Web.Config 的 Location Path 元素中指定多个目录

    在我的 ASP NET 的 Web 配置文件中 我定义了以下位置元素
  • 如何在Linux中使用相对路径打开文件?

    我有一个程序 它使用相对路径 例如 打开文件 现在的问题是 当我从另一个目录执行程序时 相对路径不是相对于程序而是相对于工作目录 因此 如果我使用 path to program myprog 启动程序 它将无法找到该文件 有没有办法独立于
  • Twig 链接到当前路线但更改区域设置

    我会在现有网站中添加一些指向不同区域设置版本的链接 效果很好 但是很丑 li a href img src alt es a li li a href a li
  • 有人可以解释一下 arcTo 的最后两个参数吗?

    我正在尝试绘制一个带圆角的矩形 我有一个 javascript 路径可以执行此操作 但 javascript arcTo 方法采用一个矩形 定义其椭圆形 然后采用一个参数来设置扫描 然而 在Android版本中有三个参数 矩形椭圆形 我认为
  • 使用 getPathMatcher 的全局模式

    从 OCP 考试的 Kathy Sierra Bert Bates 书中我找到了以下代码 public class FileTest public static void matches Path path String glob Path
  • 正则表达式:验证没有查询参数的 URL 路径

    我不是正则表达式专家 我正在绞尽脑汁尝试做一个看起来非常简单并且在 python 2 7 中工作的事情 在没有查询字符串的情况下验证 URL 的路径 无主机名 换句话说 以 开头的字符串允许字母数字值 并且不允许任何其他特殊字符 除了这些
  • spring 类路径资源中的相对路径

    我有一堆 spring 配置文件 所有这些文件都位于各个子包的 META INF 目录下 我一直在使用如下所示的导入
  • 计算MKPolyline路径的距离?

    我想获取 MKPolyline 路径的米数 以便我可以告诉用户完成路径还剩多少米 我一直在寻找一些东西来做这件事 但我什么也没得到 Thanks 尽管听起来很乏味 但除非您想自己进行数学计算 否则您可能必须迭代该行的思想points 将每个

随机推荐

  • Eigen使用方法

    看了这边博客之后总结一下https blog csdn net augusdi article details 12907341 xff0c 感谢原作 xff01 看了之后学到了好多 xff01 1 矩阵定义 不管是向量还是矩阵 xff0c
  • Linux C 书籍推荐

    建议学习路径 xff1a 首先先学学编辑器 xff0c vim emacs什么的都行 然后学make file文件 xff0c 只要知道一点就行 xff0c 这样就可以准备编程序了 然后看看 C程序设计语言 K amp R xff0c 这样
  • Lidar与imu外参标定

    目录 网上资料 方案1 方案2 Lidar与IMU的相对旋转 实现 总结 附录 xff1a 最近由于工作需要 xff0c 花了几天时间了解激光与imu的标定方法 xff1b 因为项目需要 xff0c 且这里是个人认识的一个整理 xff0c
  • ROS的tf包中坐标变换的方法

    1 setRotation函数的参数 在坐标变换的时候常有这样的写法 xff1a tfTutorialsAdding a frame C 43 43 transform setOrigin tf Vector3 0 0 2 0 0 0 tr
  • 转载-自定义ros消息 vector

    原创 xff1a https blog csdn net m zhangjingdong article details 79617966 1 我在ros程序包中新建一个msg文件夹 xff0c 用于存储msg消息相关定义 xff0c 之后
  • 学神的“诞生”-2014清华大学本科生特等奖学金答辩观后感

    清华的特奖与交大的竢实扬华 偶然间在学堂在线上留意到有这样的一场现场答辩 xff0c 很想知道最高学府的最高荣誉花落谁家 xff0c 得此殊荣的又是些怎样的 学神 xff0c 几点感受记录之 1 经历 gt gt 证书 清华的学生更注重大学
  • qt中 美化 问题列表

    1 QTabWidget 中tab xff0c tab bar xff0c pane属性分布 2 使用qss美化时 xff0c tab标签上和pane中都能美化成功 xff0c 但tab最右侧的tab bar却始终没有成功 设置控件的背景
  • AttributeError: module 'cv2.cv2' has no attribute 'createLBPHFaceRecognizer'

    AttributeError module cv2 cv2 has no attribute createLBPHFaceRecognizer 在某一次做人脸识别的小demo的过程中遇到了这个问题 下面直接上产生问题的源代码 span cl
  • CAN总线ACK响应问题

    CAN总线的应答位 xff08 ACK xff09 用来表示节点已经收到有效的帧 任何节点如果准确无误地接收到帧 xff0c 则要向总线上发送显性位 xff0c 该显性位将掩盖发送节点输出的隐性位 xff0c 使总线上表现为显性 如果发送节
  • 嵌入式书籍推荐

    嵌入式书籍推荐 Linux基础 1 Linux与Unix Shell 编程指南 C语言基础 1 C Primer Plus xff0c 5th Edition 美 Stephen Prata着 2 The C Programming Lan
  • 调试中关于__FILE__, __LINE__ 及 __FUNCTION__ 用法

    在C语言中 FILE xff1a 打印相应的文件名 LINE xff1a 打印语句在源代码中相应的行 FUNCTION xff1a 打印语句在源代码中相应的函数名
  • 看技术书籍坚持不下来的,看这里,记录增量学习法

    今天 xff0c 在阅读 软技能 代码之外的生存指南 这本书的过程中 xff0c 学习到了番茄工作法 定额工作法 xff0c 受此启发 xff0c 突然脑海里冒出了一个方法论 xff0c 这是我独创的一个学习方法论 xff0c 我把它称作
  • ubuntu16.04安装realsense2环境与SDK(D435)

    关于realsense2环境的安装以及SDK的使用现在的文档还不是很多 xff0c 就分享下我的过程 xff0c 希望对大家有帮助 我安装是从源码构建的 xff0c 以下是我参考的资料链接 第一个链接是官网 xff0c 我是以它为主 xff
  • C++服务器研发精进

    一袭青衫闯帝都 xff0c 回首已然四春秋 壮志未酬心未老 xff0c 抚膺身衰发已疏 转眼间已经工作四年有余 xff0c 回想刚毕业的懵懂无知 xff0c 仿佛就在昨日 xff0c 成长乎 xff1f 徒增岁月矣 理想中的职业生涯应该是目
  • [kernel 启动流程] (第二章)第一阶段之——设置SVC、关闭中断

    1 kernel启动流程第一阶段简单说明 arch arm kernel head S kernel入口地址对应stext ENTRY stext 1 第一阶段要做的事情 xff0c 也就是stext的实现内容 设置为SVC模式 xff0c
  • opencv 2.4.9编译踩坑笔记

    为了跑GSLAM xff0c 一直遇到opencv版本的问题 xff0c 本机之前是4 1 0 xff0c 作者回答用的版本是opencv2 4 9 xff0c 没办法 xff0c 再装一个 最终我的CMAKE指令 xff1a cmake
  • 如何使用APM固件飞控来使能外部位置控制

    在三维激光雷达平台上我们飞控采用pixhawk2的飞控 官方给我说这个支持APM和PX4的固件 xff0c 但是对APM固件的支持性比较好 xff0c 因此就选用了APM的飞控 在一开始装好飞机后 xff0c 第一次飞还好好的 xff0c
  • CentOS 8中安装docker时报错的解决

    CentOS 8中安装docker时报错的解决 Problem package podman span class token operator span 3 span class token punctuation span 2 span
  • 四旋翼飞行器(QuadCopter--Parrot mini drone)—— 基于模型设计(Model Based Design)

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 最近一段时间 xff0c 朋友圈被MATLAB禁止哈工大 哈工程等科研院校使用刷屏了 xff0c 顿时各种声
  • VFH & VFH+ & VFH*—— Path Planning

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 最近在学习VFH算法 xff0c 感觉蛮神奇 xff0c 特意从维基百科扒来了资料 xff0c 供学习研究