文档帮助中心文档
避免使用矢量字段直方图的障碍
导航工具箱/控制算法
的向量场直方图(VFH)块使您的车辆避免障碍物基于距离传感器数据。给定距离传感器的范围和角度读数,以及行驶的目标方向,VFH控制器计算一个无障碍的转向方向。
有关算法详细信息的详细信息,请参阅向量场直方图在算法下。
的范围和角度当为使用该块的模型生成代码时,输入被限制为4000个元素。
范围
角度
展开全部
扫描数据的范围值,指定为以米为单位的标量向量。这些量程值是指以特定角度到传感器的距离。这个向量必须和对应的向量一样长角度向量。
扫描数据的角度值,指定为以弧度为单位的标量向量。这些角度值是指定范围内的特定角度。这个向量必须和对应的向量一样长范围向量。
TargetDir.
车辆的目标方向,指定为弧度的标量。车辆的前进方向被认为是零弧度,以逆时针测量的正角度。你可以使用TargetDir.的输出纯粹的追求从一组航点生成控件时块。
steeringDir
车辆的转向方向,以弧度为标量指定。该无障碍方向的计算基于VFH+算法。车辆的前进方向被认为是零弧度,以逆时针测量的正角度。
角扇区数
180.
用于创建直方图的容器数,指定为标量。该参数不可调。该参数只能在初始化对象时设置。
距离限制(m)
[0.05 2]
米的范围读数的限制,指定为标量的两个元素矢量。如果它们落在距离限制范围内,则仅考虑范围读数输入。使用较低距离限制忽略较低范围内的传感器性能差的误报。使用上限忽略离车辆太远的障碍物。
直方图阈值
[3 10]
计算二值直方图的阈值,指定为标量的二元向量。该算法利用这些阈值从极障碍密度计算二值直方图。在二值直方图中,高于上阈值的极障碍密度值表示为占用空间(1)。小于下一个阈值的值表示为自由空间(0)。如果前一次迭代中存在一个计算的二值直方图,则在限制之间的值被设置为前一次计算的二值直方图的值。如果之前的直方图不存在,则将该值设为空闲空间(0)。
车辆半径(m)
0.1
车辆的半径,指定为米的标量。该尺寸定义了可以绕出您的车辆的最小圆圈。在计算无障碍方向时,车辆半径用于考虑车辆尺寸。
安全距离(m)
安全距离围绕车辆位置的瘾车辆半径,指定为米的标量。车辆半径和安全距离用于计算无障碍方向。
最小转弯半径(m)
以当前速度运动的车辆的最小转弯半径,以米为单位指定。
模拟使用
代码生成
解释执行
代码生成使用生成的C代码模拟模型。第一次运行模拟时,使用Simulink金宝app®为代码块生成C代码。只要模型不发生改变,C代码将用于后续的模拟。此选项需要额外的启动时间,但后续模拟的速度是相当的解释执行。
解释执行- 使用MATLAB模拟模型®翻译。此选项缩短了启动时间,但模拟速度较慢代码生成。在此模式下,您可以调试块的源代码。
可调:不
目标方向的重量
5
向目标方向移动的代价函数权值,指定为标量。为了遵循一个目标方向,将这个权重设置为高于之和电流方向的体重和以前的方向重量。要忽略目标方向成本,请将此重量设置为0。
0
电流方向的体重
2
车辆在当前航向方向上移动的成本函数权值,指定为标量。该权重值越高,产生的路径越有效。若要忽略当前方向开销,请将该权重设置为0。
以前的方向重量
在以前选择的转向方向上移动的成本函数重量,指定为标量。这种重量的较高值产生更平滑的路径。要忽略先前的方向成本,请将此重量设置为0。
在差分驱金宝app动机器人的路径下使用Simulink避免障碍物。这个示例使用ROS从基于MATLAB®的模拟器发送和接收信息。您可以用其他基于ros的模拟器(如Gazebo®)替换该模拟器。
该块使用VFH +算法来计算无障碍方向。首先,该算法从范围传感器数据中获取范围和角度,并为障碍物位置构建极性直方图。然后,它使用输入直方图阈值来计算指示占用和自由方向的二进制直方图。最后,算法计算屏蔽直方图,基于车辆的最小转弯半径从二进制直方图计算。
该算法基于开路空间和可能的驱动方向选择多个转向方向。具有对应于先前的电流和目标方向的重量的成本函数计算不同可能的方向的成本。然后,该算法以最小的成本返回无障碍方向。使用无障碍方向,您可以输入命令以将车辆移动到该方向。
要将此块用于您自己的应用程序和环境,您必须调优算法参数。参数值取决于车辆的类型,距离传感器,和您使用的硬件。有关VFH算法的更多信息,请参见Controllervfh.。
Controllervfh.
您点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站来获得可用的翻译内容,并看到当地的活动和提供。根据您所在的位置,我们建议您选择:。
您还可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。
联系您当地的办公室