主要内容

向量场直方图

矢量场直方图(VFH)算法根据距离传感器读数计算机器人的无障碍转向方向。距离传感器读数用于计算极密度直方图,以识别障碍的位置和接近程度。根据指定的参数和阈值,将直方图转换为二值直方图,为机器人指明有效的转向方向。VFH算法考虑机器人的尺寸和转弯半径,输出机器人避开障碍物和跟随目标方向的转向方向。

机器人的尺寸

要计算转向方向,必须指定机器人大小和驾驶能力的信息。VFH算法对机器人只需要四个输入参数。这些参数是controllerVFH对象:RobotRadiusSafetyDistanceMinTurningRadius,DistanceLimits

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

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

  • MinTurningRadius指定机器人以期望速度运行时的最小转弯半径。机器人可能无法在高速下急转弯。这一属性有助于绕过障碍物,并给了它足够的机动空间。

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

请注意

关于距离传感器读数的所有信息都假定测距仪安装在机器人的中心。如果距离传感器安装在其他地方,将激光坐标系上的距离传感器读数转换到机器人底座框架上。

成本函数的权重

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

直方图特性

VFH算法根据给定的距离传感器数据计算直方图。它将机器人周围的所有方向转换成由NumAngularSectors财产。此属性是不可调优的,并且在controllerVFH调用对象。距离传感器数据用于计算这些角扇区的极密度直方图。

请注意

使用一个小NumAngularSectors值会导致VFH算法错过较小的障碍物。错过的障碍物不会出现在直方图上。

这个直方图显示了蓝色的角扇区和粉红色的直方图阈值。的HistogramThresholds属性是一个二元向量,它确定蒙版直方图的值,指定为(低上).在屏蔽直方图中,高于上阈值的极障碍物密度值表示为已占用空间(1)。小于下限阈值的值被表示为空闲空间(0)。在限制之间的值被设置为上一个二进制直方图中的值,默认值为空闲空间(0)MinTurningRadiusRobotSize,SafetyDistance

极性密度图有如下对应的屏蔽直方图图。此图显示了目标和转向方向、距离读数和距离限制。

调优参数使用显示

当与一个controllerVFH对象,您可以使用显示函数。该方法显示极性密度图和屏蔽二值直方图。给出了VFH的算法参数和输出转向方向。

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

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

另请参阅