主要内容

insertRay

插入激光扫描观察的射线

描述

例子

insertRay (地图构成扫描maxrange在占用网格中插入一个或多个激光雷达扫描传感器观测,地图,使用输入lidarScan对象,扫描,得到射线端点。如果输入扫描范围低于此值,则认为射线端点为自由空间maxrange.被占用时观察到的细胞更新为0.7。沿着射线的所有其他点都被视为无障碍,并使用0.4的观测值进行更新。端点之上maxrange不会更新。值被忽略。这种行为与反向传感器模型相关。

insertRay (地图构成范围maxrange将范围读数指定为输入定义的向量范围而且

insertRay (地图startpt端点在从起点到终点的线段之间插入观测值。用0.7的概率观测值更新端点。线段上的单元格更新为观察值0.4。

insertRay (___invModel在两元向量中插入具有更新概率的射线,invModel,这对应于无障碍和占用观测。使用任何前面的语法来输入光线。

例子

全部折叠

创建一个空的占用网格地图。

map = occuancymap (10,10,20);

指定车辆的姿态、范围、角度和激光扫描的最大范围。

姿态= [5,5,0];range = 3*ones(100,1);Angles = linspace(-pi/2,pi/2,100);Maxrange = 20;

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

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

将激光扫描数据插入占用地图。

insertRay(地图,姿势,扫描,maxrange);

显示地图,查看激光扫描的插入结果。

显示(图)

图中包含一个轴对象。标题为Occupancy Grid的axes对象包含一个image类型的对象。

检查车辆正前方车位的占用情况。

getOccupancy(地图,5 [8])
Ans = 0.7000

添加第二个读数并查看占用值的更新。额外的阅读增加了阅读的信心。自由和占有的价值变得更加明显。

insertRay(地图,姿势,扫描,maxrange);显示(图)

图中包含一个轴对象。标题为Occupancy Grid的axes对象包含一个image类型的对象。

getOccupancy(地图,5 [8])
Ans = 0.8448

输入参数

全部折叠

映射表示,指定为occupancyMap对象。这个对象代表了车辆的环境。对象包含一个矩阵网格,其中的值表示占用该单元格的概率。接近1的值表示单元格包含障碍物的概率很高。接近0的值表示单元未被占用且无障碍物的概率很高。

车辆的位置和方向,指定为xyθ向量。载具姿势是一个x而且y带角方向的位置θ(以弧度为单位)从x设在。

激光雷达扫描读数,指定为alidarScan对象。

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

来自扫描数据的角度值,指定为以弧度测量的元素矢量。这些角度值与给定值相对应范围.向量的长度必须与对应的向量相同范围向量。

激光距离传感器的最大距离,以米为单位的标量指定。范围值大于或等于maxrange在射线的整个长度上被认为是自由的,直到maxrange

射线的起始点,指定为两个元素向量,xy,在世界坐标系中。所有的射线都是从这一点开始的线段。

射线的端点,指定为n的-by-2矩阵xy对在世界坐标系中,其中n的长度范围.所有的射线都是线段,原点在startpt

逆传感器模型值,指定为两元向量,对应于无障碍和占用概率。沿着射线的点根据逆传感器模型和指定的范围读数进行更新。范围值被忽略。范围值大于maxrange不会更新。看到逆传感器模型

更多关于

全部折叠

逆传感器模型

逆传感器模型确定如何沿着从距离传感器读数到地图中的障碍物的射线设置值。中空闲位置和已占用位置的不同概率可以自定义此模型invModel论点。范围值被忽略。范围值大于maxrange不会更新。

包含距离读数的网格位置会根据已占用概率进行更新。读取之前的位置用自由概率更新。读取后的所有位置都不会更新。

版本历史

R2019b引入