文档

lidarScan

创建存储二维激光雷达扫描的对象

描述

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

创建

描述

例子

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

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

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

属性

全部展开

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

数据类型:|

从激光雷达读取的距离角度,指定为矢量。这个向量的长度等于范围,矢量元素以弧度为单位。角度是逆时针绕正极测量的z设在。

数据类型:|

激光雷达读数的笛卡尔坐标,返回为(x, y)矩阵。在激光雷达坐标系中,正x是积极向上的y是在左边。

数据类型:|

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

数据类型:

对象的功能

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

例子

全部折叠

指定激光雷达数据为距离和角度的向量。这些值包括传感器范围以外的读数。

X = linspace(-2,2);范围= abs((1.5).*x。^2 + 5);Ranges (45:55) = 3.5;角度= linspace(- /2, /2,numel(ranges));

通过指定范围和角度创建一个激光雷达扫描。画出激光雷达扫描的所有点。

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

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

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

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

refanges = 5*ones(1300);refAngles = linspace(-pi/2,pi/ 2300);refScan = lidarScan(refanges,refAngles);

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

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

将激光扫描旋转20度。

rotateScan = transformScan(refScan,[0,0,deg2rad(20)]);

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

refanges = 5*ones(1300);refAngles = linspace(-pi/2,pi/ 2300);refScan = lidarScan(refanges,refAngles);

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

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

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

pose = matchScans(currScan,refScan);

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

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

扩展功能

在R2019b中引入