lidarScan

创建对象存储2-D激光雷达扫描

描述

一个lidarScan对象包含单次2d激光雷达(光探测和测距)扫描的数据。激光雷达扫描是一种距离为二维平面的激光扫描(范围)从传感器到环境中障碍物的特定角度测量()。使用这个激光扫描对象作为输入到其他机器人算法,如matchScans,controllerVFH,或monteCarloLocalization

创建

描述

例子

扫描= lidarScan (范围,)创建一个lidarScan对象的范围,表示从激光雷达传感器收集到的数据。的范围输入是长度相同的向量,直接设置为范围属性。

扫描= lidarScan ()创建一个lidarScan对象,使用输入的笛卡尔坐标作为n2矩阵。的笛卡儿属性直接从该输入设置。

扫描= lidarScan (scanMsg)创建一个lidarScan对象从一个提升ROS消息对象。

属性

全部展开

激光雷达的距离读数,指定为矢量。这个向量和,矢量元素以米为单位。

数据类型:|

激光雷达的距离读数角度,指定为矢量。这个向量和范围,矢量元素以弧度表示。角度是绕正电荷逆时针方向测量的z设在。

数据类型:|

激光雷达读数的笛卡尔坐标,以a(x, y)矩阵。在激光雷达坐标系中,为正x积极主动y在左边。

数据类型:|

激光雷达读数的数量,作为标量返回。这个标量也等于范围向量或行数笛卡儿

数据类型:

对象的功能

情节 显示激光或激光雷达扫描读数
情节 显示激光或激光雷达扫描读数
removeInvalidData 删除无效的范围和角度数据
transformScan 基于相对位姿变换激光扫描

例子

全部折叠

指定激光雷达数据作为范围和角度的矢量。这些值包括传感器范围之外的读数。

x = linspace (2, 2);范围= abs ((1.5)。* x。^ 2 + 5);范围(45:55)= 3.5;角= linspace(-π/ 2,π/ 2,元素个数(范围);

创建一个激光雷达扫描指定范围和角度。绘制激光雷达扫描的所有点。

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

根据指定的最小和最大范围删除无效点。

minRange = 0.1;maxRange = 7;scan2 = removeInvalidData(扫描,“RangeLimits”,(minRange maxRange]);持有情节(scan2)传说(“点”,“有效点”)

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

refRanges = 5 * 1 (1300);refAngles = linspace(-π/ 2π/ 2300);refScan = lidarScan (refRanges refAngles);

翻译激光扫描由一个(x, y)偏置的(0.5,0.2)

transformedScan = transformScan(refScan,[0.5 0.2 0]);

将激光扫描旋转20度。

rotateScan = transformScan (refScan(0, 0,函数(20)]);

创建一个参考激光雷达扫描使用lidarScan。指定范围和角度为向量。

refRanges = 5 * 1 (1300);refAngles = linspace(-π/ 2π/ 2300);refScan = lidarScan (refRanges refAngles);

使用transformScan函数,生成第二次激光雷达扫描x, y偏置的(0.5,0.2)

currScan = transformScan(refScan,[0.5 0.2 0]);

匹配参考扫描和第二次扫描,以估计它们之间的位姿差异。

构成= matchScans (currScan refScan);

使用transformScan函数的作用是:通过使用相对位姿差将第二次扫描转换为第一次扫描的帧来对齐扫描。绘制原始扫描和对齐扫描。

currScan2 = transformScan (currScan,姿势);次要情节(2,1,1);持有情节(currScan)情节(refScan)标题(“原始扫描”)举行次要情节(2,1,2);持有情节(currScan2)情节(refScan)标题(“对齐扫描”) xlim([0 5])保持

扩展功能

介绍了R2019b