主要内容

Controllervfh.

避免使用矢量字段直方图的障碍

描述

Controllervfh.System Object™使您的车辆能够避免使用矢量字段直方图(VFH)基于范围传感器数据的障碍物。给定激光扫描读数和朝向的目标方向朝向,物体计算出无障碍的转向方向。

Controllervfh.具体使用VFH +算法来计算无障碍方向。首先,该算法从激光扫描数据中获取范围和角度,并为障碍物位置构建极性直方图。然后,输入直方图阈值用于计算指示占用和自由方向的二进制直方图。最后,算法计算屏蔽直方图,基于车辆的最小转弯半径从二进制直方图计算。

该算法基于开路空间和可能的驱动方向选择多个转向方向。具有对应于先前的电流和目标方向的重量的成本函数计算不同可能的方向的成本。然后,对象以最小的成本返回无障碍方向。使用无障碍方向,您可以输入命令以将车辆移动到该方向。

要为自己的应用程序和环境使用此对象,必须调整算法的属性。属性值取决于车辆的类型,范围传感器和您使用的硬件。

找到无障碍的转向方向:

  1. 创造Controllervfh.对象并设置其属性。

  2. 使用参数调用对象,就像它是一个函数。

要了解有关系统对象如何工作的更多信息,请参阅什么是系统对象?

创建

描述

例子

vfh.= ContractervFH.返回一个矢量字段直方图对象,使用该对象计算无障碍的转向方向vfh +.算法。

vfh.= controlyervfh(名称价值返回矢量字段直方图对象,其中包含一个或多个指定的其他选项名称,价值对。名称是属性名称和值是相应的值。名称必须出现在单引号内('')。您可以以任何顺序指定多个名称值对参数name1,value1,...,namen,valuen。未指定的属性保留其默认值。

特性

展开全部

矢量字段直方图中的角扇区数,指定为标量。此属性定义用于创建直方图的频体数。此属性是不可调音的。您只能在初始化对象时设置此项。

范围读数的限制,指定为2元素向量,其中元素以米为单位测量。仅在调用对象时指定的范围读数仅在距离限制范围内进行考虑。使用较低距离限制忽略较低范围内的传感器性能差的误报。使用上限忽略离车辆太远的障碍物。

车辆的半径以米为单位,指定为标量。该尺寸定义了可以绕出您的车辆的最小圆圈。在计算无障碍方向时,车辆半径用于考虑车辆尺寸。

车辆周围的安全距离,指定为米的标量。除了值的价值之外,这是一个安全距离围绕车辆位置留下Robotradius.范围。车辆半径和安全距离的总和用于计算无障碍方向。

最小转换半径为米为车辆以其当前速度移动,指定为标量。

成本函数重量用于向目标方向移动,指定为标量。要遵循目标方向,请将此重量设置为高于CurrentDirectionweight.以前的重量特性。要忽略目标方向成本,请将此权重设置为零。

用于在当前标题方向上移动机器人的成本函数重量,指定为标量。此重量的更高值会产生有效的路径。要忽略当前方向成本,请将此权重设置为零。

在以前选择的转向方向上移动的成本函数重量,指定为标量。这种重量的更高值会产生更平滑的路径。要忽略先前的方向成本,请将此权重设置为零。

二进制直方图计算的阈值,指定为2元素向量。该算法使用这些阈值来计算来自极性障碍密度的二进制直方图。高于上阈值的极性障碍物密度值在二进制直方图中表示为占用空间(1)。小于较低阈值的值表示为自由空间(0)。落在限制之间的值被设置为先前二进制直方图中的值,其中默认是自由空间(0)。

采用Lidarscan.对象作为扫描输入,指定为真的要么错误的

用法

描述

例子

转向迪尔= VFH(扫描TargetDir.使用VFH +算法为输入找到无障碍的转向方向Lidarscan.目的,扫描。基于目标位置给出目标方向。

要启用此语法,必须设置USELIDARSCAN.财产真的。例如:

Mcl = montecarlolocalization('USELIDARSCAN',真的);......[ISUPDATED,POSE,协方差] = MCL(履历,扫描);

转向迪尔= VFH(范围角度TargetDir.使用两个向量定义LIDAR扫描:范围角度

输入参数

展开全部

LIDAR扫描读数,指定为aLidarscan.目的。

依赖性

要使用此参数,必须设置USELIDARSCAN.财产真的

mcl.uselidarscan = true;

扫描数据的范围值,指定为以米为单位的向量。这些范围值是来自给定的传感器的距离角度。矢量必须与相应的长度相同角度向量。

来自扫描数据的角度值,指定为弧度中的向量。这些角度值是给定的特定角度范围。矢量必须与相应的长度相同范围向量。

车辆的目标方向,指定为弧度的标量。车辆的向前方向被认为是零弧度,逆时针测量正方角。

输出参数

展开全部

用于车辆的转向方向,指定为弧度的标量。基于VFH +算法计算这种无障碍方向。车辆的向前方向被认为是零弧度,逆时针测量正方角。

对象功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,要发布命名的系统对象的系统资源obj.,使用此语法:

释放(obj)

展开全部

显示 展示VectorFieldHistograph数字窗口中的信息
跑步系统对象算法
发布 释放资源并允许更改系统对象属性值和输入特性
重置 重置内部状态系统对象

例子

全部收缩

该示例显示了如何基于输入激光扫描数据计算转向方向。

创建一个Controllervfh.目的。设定USELIDARSCAN.财产真的

vfh = controlyervfh;vfh.uselidarscan = true;

输入激光扫描数据和目标方向。

范围= 10 * =(1,500);范围(1,225:275)= 1.0;角度= linspace(-pi,pi,500);targetDir = 0;

创建一个Lidarscan.通过指定范围和角度来指定对象。

扫描= LIDARSCAN(范围,角度);

计算无障碍的转向方向。

steeringdir = vfh(扫描,targetdir);

可视化VectorFieldHistograph计算。

h =图;套(h,'位置',[50 50 800 400])显示(VFH)

参考

[1] Borenstein,J.和Y.Koren。“矢量场直方图 - 移动机器人的快速避免避免。”IEEE机器人与自动化杂志。卷。7,第391,1991号,第278-88页。

[2] Ulrich,I.和J. Borenstein。“VFH:快速移动机器人的可靠障碍避免。”诉讼程序。1998年IEEE机器人和自动化国际会议。(1998):1572-1577。

扩展能力

在R2019B中介绍