VFH+避障/局部路径规划算法


做个正直的人

这篇文章是我看论文《VFH+: Reliable Obstacle Avoidance for Fast Mobile Robots》(Iwan Ulrich and Johann Borenstein)的笔记,所以说是文章的翻译也可以。想看原paper的可以自己去找,看过VFH算法的话,这个VFH+算法还是非常好懂的。

我前面写过一篇讲VFH算法的文章,感兴趣的可以去看看。
VFH局部路径规划算法

我在讲VFH算法的最后,写了一点我对VFH算法的评价,主要有两点,一是VFH算法涉及的参数比较多,很麻烦;二是机器人总是会像个傻子一样在原地摆头,我设置了一个不灵敏区域稍微缓解了一下摆头的问题,但是这导致机器人对障碍物的灵敏性降低。

今天看了VFH+算法,才发现原来这些问题前人们早就研究过了。VFH+对VFH提出了几点修正,VFH还带了个正号,这是增强版的意思吗?hhhhhhhh…接下来进入正题。
VFH+算法同样分成四个部分,不过和VFH的四个部分可是不一样。

1、第一部分:映射到极坐标系

VFH算法的第一部分就是把局部地图从笛卡尔空间映射到极坐标系,VFH+算法的做法跟VFH一样,只不过VFH+不再像VFH那样采用正方形的工作空间(可以当成是局部地图),而是采用了圆形的工作空间,本来就该是圆形的好吧,VFH那是为了简便而已。这工作空间一旦变成圆形,就有了一个性质——机器人原地旋转感知到的局部地图是不变的,这称为旋转不变性。

VFH+对VFH的改进——考虑机器人的宽度&对障碍物进行膨胀

VFH并没有考虑机器人的宽度,而是采用一个低通滤波器进行补偿,这个滤波器的参数的设置还比较麻烦。
VFH+考虑到了机器人的宽度 r r r_r rr ,这里假定机器人是正圆盘形状。同时为了安全起见又设置了一个距离障碍物的安全距离 d x d_x dx ,基于此,我们就可以得到需要对障碍区进行膨胀的幅度 r r + x = r r + d x r_{r+x}=r_r+d_x rr+x=rr+dx 。这样我们就可以把机器人完全看做一个点来进行规划,是不是感觉事情变得简单了。
在这里插入图片描述
从上图可以看出,如果障起舞膨胀幅度为 r r + x = r r + d x r_{r+x}=r_r+d_x rr+x=rr+dx ,机器人距离障碍物的距离为
d i j d_{ij} dij ,此时这一个障碍物对应的张角为 2 γ i , j 2\gamma_{i,j} 2γi,j 。其中 γ i , j = a r c s i n ( r r + x / d i , j ) \gamma_{i,j}=arcsin(r

  • 13
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VFH算法(Vector Field Histogram Algorithm)是一种用于机器人导航和避障算法。它通过分析环境中的障碍物信息,构建一个直方图,然后根据直方图进行路径规划。 在Matlab中实现VFH算法,可以按照以下步骤进行: 1. 首先,需要获取机器人的传感器数据,例如激光雷达数据或超声波传感器数据。这些数据用于检测环境中的障碍物。可以使用Matlab提供的传感器接口进行数据获取。 2. 接下来,根据传感器数据,将环境划分为一系列的扇形区域。每个扇区表示一个特定角度范围内的障碍物信息。可以使用Matlab的向量和矩阵操作来进行扇区划分。 3. 然后,分析每个扇区中的障碍物数据,并将其转换为极坐标。根据障碍物的位置和距离,计算其相对于机器人的极坐标表示。绘制这些障碍物的极坐标表示,并将其加入到直方图中。 4. 构建直方图后,可以根据直方图中的信息进行路径规划。通过分析直方图的形状和障碍物的分布,选择一条不会与障碍物相交的安全路径。 5. 最后,使用Matlab提供的控制命令将路径转化为机器人的运动指令。根据路径规划结果,控制机器人的运动方向和速度。 通过以上步骤,就可以在Matlab中实现VFH算法,并实现机器人的导航和避障功能。在实际应用中,还可以对算法进行优化和改进,以提高导航和避障的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值