主要内容

向量场直方图

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

另请参阅

Baidu
map