主要内容

controllerVFH

避免使用向量场直方图障碍

自从R2019b

描述

controllerVFH系统对象™使您的车辆以避免障碍范围基于传感器数据使用向量场直方图(VFH)。鉴于激光扫描数据和目标方向开车,对象计算一个无障碍指导方向。

controllerVFH具体使用VFH +算法来计算一个无障碍的方向。首先,该算法从激光扫描数据的范围和角度位置和构建一个极地直方图障碍。然后,输入直方图阈值用于计算二进制直方图表示占领和自由的方向。最后,算法计算一个蒙面的直方图,从二元直方图计算基于车辆的最小转弯半径。

算法选择多个转向方向基于开放空间和可能的行驶方向。成本函数,权值对应于前,电流,和目标方向,计算不同的成本可能的方向。对象返回一个无障碍方向以最小的成本。使用无障碍的方向,您可以输入命令来移动你的车在那个方向。

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

找到一个无障碍转向方向:

  1. 创建controllerVFH对象并设置其属性。

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

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

例子

VFH= controllerVFH返回一个向量场直方图对象计算无障碍使用指导方向VFH +算法。

VFH= controllerVFH (的名字,价值)返回一个向量场直方图对象由一个或多个指定附加选项名称,值对。的名字是属性名和值对应的值。名称必须出现在单引号(' ')。您可以指定几个名称-值对参数在任何顺序Name1, Value1,…,的家。没有指定属性保留默认值。

属性

全部展开

向量场的角部门数量柱状图,指定为一个标量。该属性定义了垃圾箱用来创建直方图的数量。这个属性是non-tunable。你只能将这个对象时初始化。

限制读数范围,指定为一个2-element向量元素以米。数据调用对象时指定范围被认为是只有属于距离限制。使用距离下限忽视假阳性来自贫困传感器性能较低的范围。使用上限忽略障碍太远离汽车。

车辆的半径米,指定为一个标量。这维定义最小的循环,它可以限制你的车辆。车辆半径是用来占车辆大小计算无障碍时的方向。

在车辆安全距离,指定为一个标量米。这是一个安全的距离离开周围的车辆位置的值RobotRadius参数。车辆半径和安全距离的总和是用来计算无障碍的方向。

最小转弯半径米以当前车辆的速度,指定为一个标量。

成本函数体重朝着目标方向,指定为一个标量。遵循一个目标方向,设置这个重量比的总和CurrentDirectionWeightPreviousDirectionWeight属性。忽略成本目标方向,设置这个重量为零。

成本函数体重移动机器人在当前的运动方向,指定为一个标量。更高的值这重量产生有效的路径。忽视当前方向成本,设置这个重量为零。

成本函数体重朝着前面选择的指导方向,指定为一个标量。这个重量产生平滑路径的值更高。忽略前一个方向成本,设置这个重量为零。

对于二元直方图计算阈值,指定为一个2-element向量。该算法使用这些阈值来计算二进制密度直方图从极地障碍。极地障碍密度值高于上部阈值表示为(1)占用空间的二元直方图。值小于低阈值被表示为自由空间(0)。限制之间的值,设置为在前面的二元直方图的值,默认是自由空间(0)。

使用lidarScan对象作为扫描输入,指定为真正的

使用

描述

例子

steeringDir= vfh (扫描,targetDir)找到一个无障碍转向方向使用VFH +算法的输入lidarScan对象,扫描。目标方向是基于目标位置。

要启用这种语法,你必须设置UseLidarScan财产真正的。例如:

制程= monteCarloLocalization (“UseLidarScan”,真正的);[isUpdated,姿势,协方差]=制程(odomPose,扫描);

steeringDir= vfh (范围,,targetDir)用两个向量定义了激光雷达扫描:范围

输入参数

全部展开

激光雷达扫描阅读,指定为一个lidarScan对象。

依赖关系

使用这个参数,你必须设置UseLidarScan财产真正的

恢复期。使用LidarScan = true;

从扫描数据范围值,指定为一个向量在米。这些范围值在给定距离传感器。向量必须对应相同的长度向量。

从扫描角值数据,指定为一个向量在弧度。这些角值给定的特定角度范围。向量必须对应相同的长度范围向量。

目标方向的车辆,指定为一个标量的弧度。车辆的前进方向是零弧度,用积极的角度测量逆时针。

输出参数

全部展开

车辆的转向方向,指定为一个标量的弧度。这个无障碍方向计算基于VFH +算法。车辆的前进方向是零弧度,用积极的角度测量逆时针。

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

显示 显示VectorFieldHistogram信息图窗口
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

这个例子展示了如何计算基于输入激光扫描数据的指导方向。

创建一个controllerVFH对象。设置UseLidarScan财产真正的

vfh = controllerVFH;vfh。使用LidarScan = true;

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

范围= 10 * 1 (1500);范围(1225:275)= 1.0;角= linspace(π-π,500);targetDir = 0;

创建一个lidarScan对象指定范围和角度。

扫描= lidarScan(范围、角度);

计算一个无障碍的指导方向。

steeringDir = vfh(扫描,targetDir);

可视化VectorFieldHistogram计算。

h =图;集(h,“位置”[50 50 800 400])显示,(vfh)

引用

[1]伯伦斯坦,J。科伦,y。“向量场直方图——快速移动机器人避障。”IEEE Journal of Robotics and Automation. Vol. 7, Number 3, 1991, pp.278–88.

[2]乌尔里希,我。,和J. Borenstein. "VFH : Reliable Obstacle Avoidance for Fast Mobile Robots."诉讼。1998年IEEE机器人与自动化国际会议上。(1998):1572 - 1577。

扩展功能

版本历史

介绍了R2019b