主要内容

向量场直方图

矢量场直方图(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数据。

另请参阅