Laser Scans

lidarScan

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

lidarScan 对象包含一次二维激光雷达(光探测和测距)扫描的数据。激光雷达扫描是对一个 2-D 平面的激光扫描,包括从传感器到环境中特定角度(角度)的障碍物之间的距离(范围)。将此激光扫描对象作为其他机器人算法的输入,如 matchScans(导航工具箱)、controllerVFH(导航工具箱)或 monteCarloLocalization(导航工具箱)。

语法

scan = lidarScan(ranges,angles)

​​​​​​scan = lidarScan(cart)m

描述

scan = lidarScan(ranges,angles)根据范围和角度创建 lidarScan 对象,表示从激光雷达传感器收集到的数据。输入的范围和角度是相同长度的矢量,并直接设置为范围和角度属性。

scan = lidarScan(cart) 使用输入的笛卡尔坐标(n 乘 2 矩阵)创建 lidarScan 对象。笛卡尔属性直接由该输入设置。

scan = lidarScan(scanMsg) 从 LaserScan(ROS 工具箱)ROS 消息对象创建 lidarScan 对象。

属性

ranges - 激光雷达的范围读数,以米为单位
矢量
激光雷达的测距读数,以米为单位的矢量。该矢量的长度与角度相同,矢量元素以米为单位。

数据类型:单

Angles - 激光雷达读数的角度,单位为弧度
矢量
激光雷达读数的角度,以矢量形式指定。该矢量的长度与 "ranges "相同,矢量元素以弧度为单位。角度围绕正 Z 轴逆时针测量。

数据类型:单

Cartesian - 激光雷达读数的笛卡尔坐标(单位:米
[x y] 矩阵
激光雷达读数的笛卡尔坐标,以 [x y] 矩阵形式返回。在激光雷达坐标框架中,正 x 表示向前,正 y 表示向左。

数据类型: 单

Count - 激光雷达读数的数量
标量
激光雷达读数的数量,以标量形式返回。该标量也等于 "范围 "和 "角度 "向量的长度或笛卡尔行数。

数据类型: 双

例子

绘制激光雷达扫描图并删除无效点


% 将激光雷达数据指定为范围和角度向量。这些值包括传感器范围之外的读数。
x = linspace(-2,2);
ranges = abs((1.5).*x.^2 + 5);
ranges(45:55) = 3.5;
angles = linspace(-pi/2,pi/2,numel(ranges));

% 通过指定范围和角度创建激光雷达扫描。绘制激光雷达扫描的所有点。
scan = lidarScan(ranges,angles);
plot(scan)

% 根据指定的最小和最大范围删除无效点。
minRange = 0.1;
maxRange = 7;
scan2 = removeInvalidData(scan,'RangeLimits',[minRange maxRange]);
hold on
plot(scan2)
legend('所有点','有效点')

 

Figure contains an axes object. The axes object with title LiDAR Scan, xlabel X, ylabel Y contains a line object which displays its values using only markers.

 

Figure contains an axes object. The axes object with title LiDAR Scan, xlabel X, ylabel Y contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent All Points, Valid Points.

变换激光扫描

% 创建 lidarScan 对象。以矢量形式指定范围和角度。
refRanges = 5*ones(1,300);
refAngles = linspace(-pi/2,pi/2,300);
refScan = lidarScan(refRanges,refAngles);
plot(refScan)

% 以 [x y] 偏移量 (0.5,0.2) 来平移激光扫描仪。
transformedScan = transformScan(refScan,[0.5 0.2 0]);
plot(transformedScan)

% 将激光扫描仪旋转 20 度
rotateScan = transformScan(refScan,[0,0,deg2rad(20)]);
plot(rotateScan)

对象函数

plot

显示激光或激光雷达扫描读数

语法

plot(scanObj)

plot(___,Name,Value)

linehandle = plot(___)

描述

plot(scanObj) 绘制 scanObj 中指定的激光雷达扫描读数。

plot(___,Name,Value) 提供由一个或多个 Name,Value 对参数指定的附加选项。

linehandle = plot(____)使用前面语法中的任意参数返回线性数列句柄的列向量。创建线性数列后,可使用 linehandle 修改其属性。

例子

输入参数

scanObj - 激光雷达扫描读数
lidarScan 对象
激光雷达扫描读数,指定为 lidarScan 对象。

Parent - 轴的父对象
轴对象
轴的父对象,以逗号分隔,包括 "Parent(父对象)"和绘制激光扫描的轴对象。默认情况下,激光扫描绘制在当前使用的坐标轴上。

MaximumRange - 激光扫描范围
scan.RangeMax (默认) | 标量
激光扫描范围,以逗号分隔的 "MaximumRange "和标量组成的参数对指定。指定此名-值对参数后,将根据指定值设置 x 轴的最小、最大和 y 轴的最大限制。最小 y 轴限值由激光扫描仪的打开角度自动决定。

只有输入 scanMsg 作为激光扫描数据时,该名值对才会起作用。

输出参数

linehandle - 一个或多个图表线条对象
标量 | 向量
一个或多个图表线对象,以标量或矢量形式返回。这些都是唯一标识符,可用于查询和修改特定图表线的属性。

removeInvalidData

删除无效的量程和角度数据

语法

validScan = removeInvalidData(scan)

validScan = removeInvalidData(scan,Name,Value)

描述

validScan = removeInvalidData(scan)返回一个新的 lidarScan 对象,其中删除了输入扫描中的所有 Inf 值和 NaN 值。相应的角度读数也会被移除。

validScan = removeInvalidData(scan,Name,Value)提供了由一个或多个 Name,Value 对指定的附加选项。

例子

输入参数

scan - 激光雷达扫描读数
lidarScan 对象
以 lidarScan 对象形式指定的激光雷达扫描读数。

RangeLimits - 量程读数限制
双元素向量
量程读数限制,指定为双元素向量 [minRange maxRange],单位为米。超出这些范围限制的所有量程读数和相应角度都会被删除

数据类型:单

AngleLimits - 角度限制
双元素向量
角度限制,以[minAngle maxAngle](弧度)为单位的双元素矢量指定。超出这些角度限制的所有角度和相应量程读数都会被删除。

角度围绕正 Z 轴逆时针测量。

数据类型:单

输出参数

validScan - 激光雷达扫描读数
lidarScan 对象
激光雷达扫描读数,指定为 lidarScan 对象。所有无效的激光雷达扫描读数都会被删除。

transformScan

根据相对姿态变换激光扫描

语法

transScan = transformScan(scan,relPose)

[transRanges,transAngles] = transformScan(ranges,angles,relPose)

描述

transScan = transformScan(scan,relPose) 使用指定的相对位置 relPose 转换扫描中指定的激光扫描。

[transRanges,transAngles] = transformScan(ranges,angles,relPose) 使用指定的相对姿态 relPose 转换以范围和角度指定的激光扫描。

输入参数

scan - 激光雷达扫描读数
lidarScan 对象
以 lidarScan 对象形式指定的激光雷达扫描读数。

ranges - 来自扫描数据的范围值
矢量
扫描数据的范围值,以米为单位的矢量指定。这些范围值是传感器在指定角度的距离。矢量的长度必须与相应的角度矢量相同。

angles - 扫描数据中的角度值
矢量
扫描数据中的角度值,以弧度为单位的矢量指定。这些角度值是指定范围的特定角度。矢量的长度必须与相应的范围矢量相同。

relPose - 当前扫描的相对姿态
[x y theta]
当前扫描的相对姿态,指定为 [x y theta],其中 [x y] 是以米为单位的平移,θ 是以弧度为单位的旋转。

输出参数

transScan - 经过变换的激光雷达扫描读数
lidarScan 对象
经过变换的激光雷达扫描读数,指定为 lidarScan 对象。

transRanges - 转换扫描的范围值
矢量
转换扫描的范围值,以米为单位的矢量返回。这些范围值是指定变换角度处与传感器的距离。该向量的长度与相应的 transAngles 向量相同。

transAngles - 来自扫描数据的角度值
矢量
转换扫描的角度值,以弧度为单位的向量形式返回。这些角度值是指定变换范围的特定角度。该向量与相应的范围向量长度相同。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值