主要内容

矢量字段直方图

矢量场直方图(VFH)算法基于范围传感器读数计算机器人的无障碍转向方向。范围传感器读数用于计算极性密度直方图以识别障碍物位置和接近度。基于指定的参数和阈值,这些直方图被转换为二进制直方图,以指示机器人的有效转向方向。机器人尺寸和转向半径的VFH算法因子输出机器人的转向方向,以避免障碍物并遵循目标方向。

机器人尺寸

要计算转向方向,必须指定有关机器人大小及其驱动功能的信息。VFH算法仅需要用于机器人的四个输入参数。这些参数是属性Controllervfh.对象:Robotradius.SafetyDistanceMinturningRadius.,distancelimits.

  • Robotradius.指定可以环绕机器人所有部分的最小圆的半径。这个半径可以确保机器人根据自身大小避开障碍物。

  • SafetyDistance可选地指定在顶部的附加距离Robotradius..在导航环境时,可以使用此属性添加安全系数。

  • MinturningRadius.指定以所需速度行进的机器人的最小转弯半径。机器人可能无法在高速度下变急转弯。这种在障碍物周围导航并给予足够的空间来操纵的因素。

  • distancelimits.指定避障时要考虑的距离。你指定一个二元向量的极限,(低上).这降低Limit用于忽略与机器人部件相交的传感器读数、传感器短距离不准确或传感器噪声。这限制是传感器的有效范围或基于您的应用程序。您可能不想考虑完整传感器范围内的所有障碍。

笔记

关于范围传感器读数的所有信息都假定您的Range Finder安装在机器人的中心。如果距离传感器安装在其他地方,将您的范围传感器读数从激光坐标帧转换为机器人基础框架。

成本函数的权重

利用成本函数权值计算最终转向方向。VFH算法考虑基于您当前、以前和目标方向的多个转向方向。通过设置CurrentDirectionweight.PreviousDirectionWeight,TargetDirectionWeight属性,您可以修改机器人的转向行为。改变这些权重影响机器人的响应性以及它如何对障碍物作出反应。使机器人头朝向其目标位置,设置TargetDirectionWeight高于其他重量的总和。这很高TargetDirectionWeight值有助于确保计算的转向方向接近目标方向。根据您的应用程序,您可能需要调整这些权重。

直方图属性

VFH算法基于给定范围传感器数据计算直方图。它围绕机器人围绕着一切方向,并将它们转换为所指定的角扇区numangularsectors.财产。此属性是不可调优的,并且在Controllervfh.调用对象。范围传感器数据用于计算在这些角度扇区上的极性密度直方图。

笔记

使用一个小numangularsectors.值可能导致VFH算法错过较小的障碍物。未缺少的障碍物不会出现在直方图上。

该直方图显示蓝色的角扇区和粉红色中的直方图阈值。这直方图察列属性是一个双元素矢量,确定蒙版直方图的值,指定为(低上).高于上阈值的极性障碍物密度值在掩蔽直方图中表示为占用空间(1)。小于较低阈值的值表示为自由空间(0)。落在限制之间的值被设置为先前二进制直方图中的值,其中默认是自由空间(0)。蒙面的直方图也是因素MinturningRadius.RobotSize,SafetyDistance

极性密度图具有以下相应的屏蔽直方图图。该图显示了目标和转向方向,范围读数和距离限制。

调谐参数使用显示

在使用a时Controllervfh.对象,您可以使用显示功能。该方法显示极性密度绘图和屏蔽二进制直方图。它还显示VFH的算法参数和输出转向方向。

然后,您可以调整参数,以帮助您创建避障应用程序的原型。例如,如果你看到某些障碍没有出现在戴面具的极柱状图情节(右),然后在极地障碍密度图,考虑调整直方图阈值到适当的值。在你做了调整之后戴面具的极柱状图图中,距离传感器读数(红色)应与隐藏直方图(蓝色)中的位置相匹配。同时,你可以看到目标和方向。你指定目标方向。转向方向是VFH算法的主要输出。调整成本函数的权重可以帮助您调整输出的最终转向方向。

尽管你可以用显示方法,由于图形绘制的原因,降低了计算速度。如果您正在为实时应用程序运行此算法,请在不同的操作中获取并显示VFH数据。

也可以看看