主要内容

findPose

点云定位在地图使用正态分布变换(无损检测)算法

自从R2021a

描述

例子

currPose= findPose (ndtMap,ptCloud,initPose)造成所在的点云ptCloud在无损检测图ndtMap使用无损检测算法。子映射函数限制搜索空间,指定的SelectedSubmap财产的ndtMap对象。

currPose= findPose (___,名称,值)指定选项使用一个或多个名称参数除了输入参数在以前的语法。例如,“MaxIterations”, 30岁设置最大迭代数函数之前停止无损检测算法。

例子

全部折叠

加载一个正态分布变换(无损检测)地图从垫文件。

data =负载(“ndtMapParkingLot.mat”);ndtMap = data.ndtMapParkingLot;

从第二个加载点云扫描和姿势估计垫文件。

data =负载(“parkingLotData.mat”);ptCloudScans = data.parkingLotData.ptCloudScans;initPoseEsts = data.parkingLotData.initPoseEsts;

无损检测地图显示。

显示(ndtMap)

改变视角的顶视图。

视图(2)

选择submap围绕第一个估计。

中心= initPoseEsts (1) .Translation;深圳= (70 50 20);ndtMap = selectSubmap (ndtMap,中心、深圳);

为可视化的当前位置和半径的距离阈值更新子映射。

半径= 0.5;distThresh = 15;

循环的点云,在地图上定位,并根据需要更新选中的子映射。

numScans =元素个数(ptCloudScans);n = 1: numScans ptCloud = ptCloudScans (n);initPose = initPoseEsts (n);poseTranslation = initPose.Translation;[isInside, distToEdge] = isInsideSubmap (ndtMap poseTranslation);submapNeedsUpdate = ~ isInside% submap外电流构成| |任何(distToEdge (1:2) < distThresh);%当前姿势接近submap边缘如果submapNeedsUpdate ndtMap = selectSubmap (ndtMap poseTranslation, sz);结束%的点云扫描定位地图。currPose = findPose (ndtMap ptCloud initPose);%的位置估计显示为一个圈。pos = [currPose.Translation(1:2)半径);showShape (“圆”、pos、“颜色”,“r”);%停下来查看变化。暂停(0.05)结束

图包含一个坐标轴对象。坐标轴对象包含一个散射类型的对象。

输入参数

全部折叠

无损检测地图,作为一个指定pcmapndt对象。

点云的传感器坐标系,指定为一个pointCloud对象。

初始估计构成传感器的地图,指定为一个rigidtform3d对象。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“MaxIterations”, 30岁经过30迭代停止无损检测算法。

预期对正态分布比例的异常值,指定为一个标量范围在[0,1)。无损检测算法假定一个点是由一个正态分布的混合窗和异常值的均匀分布。更大的价值OutlierRatio减少异常值的影响。

数据类型:|

最大数量的迭代无损检测算法停止之前,指定为一个非负整数。

数据类型:|

公差之间连续无损检测迭代,用负的值指定为一个2-element向量。向量,TdiffRdiff),代表着宽容绝对差的平移和旋转,分别在连续无损检测的迭代估计。Tdiff措施两个翻译之间的欧几里得距离向量。Rdiff测量角度的差异度。估计算法停止时区别刚性转换在最近连续迭代低于指定的公差值。

数据类型:|

显示进度信息,指定为一个逻辑0()或1(真正的)。集详细的真正的显示进度信息。

数据类型:逻辑

输出参数

全部折叠

姿态传感器的地图,作为一个返回rigidtform3d对象。子映射函数限制搜索空间,指定的SelectedSubmap的属性ndtMap

提示

  • 为了提高定位的准确性和效率,考虑将采样点云pcdownsample在使用这个函数。

引用

[1]Biber, P。,and W. Strasser. “The Normal Distributions Transform: A New Approach to Laser Scan Matching.” In诉讼2003 IEEE / RSJ智能机器人和系统国际会议(2003年——)(猫。No.03CH37453)3卷,2743 - 48。美国内华达州拉斯维加斯:IEEE 2003。https://doi.org/10.1109/IROS.2003.1249285。

[2]Magnusson,马丁。“三维正态分布变换:一种有效表示注册、表面分析,和循环检测。”PhD thesis, Örebro universitet, 2009. http://urn.kb.se/resolve?urn=urn:nbn:se:oru:diva-8458 urn:nbn:se:oru:diva-8458.

扩展功能

C / c++代码生成
生成C和c++代码使用MATLAB®编码器™。

版本历史

介绍了R2021a

全部展开