主要内容

selectSubmap

选择子映射在地图

描述

例子

ndtMapOut= selectSubmap (ndtMapIn,roi)选择一个submap无损检测中的地图ndtMapIn使用指定的地区的利益roi

使用这个函数限制搜索空间定位在使用粗位置估计。

ndtMapOut= selectSubmap (ndtMapIn,中心,深圳)选择一个submap指定的中心中心和大小深圳子映射。

例子

全部折叠

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

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对象。

感兴趣的区域,指定为一个6-element向量的形式xminxmaxyminymaxzminzmax]。

中心的submap转换指定为向量的形式xcyc]。

submap沿着每个轴的大小,转换指定为向量的形式xszyszzsz]。

输出参数

全部折叠

无损检测地图,作为一个返回pcmapndt对象与一个更新SelectedSubmap财产。

如果选定的子映射区域地图的限制之外,所选的子映射限制地图限制所描述的XLimits,YLimits,ZLimits的属性pcmapndt对象。

提示

  • 使用submap规模大到足以包含位置估计的不确定性和传感器的使用范围findPose。一个更大的子映射可以增加计算时间在每个调用findPose函数,但它也可以减少子映射的频率更新。

扩展功能

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

版本历史

介绍了R2021a

另请参阅

对象

功能