主要内容

pcviewset

管理基于点云的视觉里程计和SLAM的数据

描述

pcviewset对象存储点云里程计和同时定位和映射(SLAM)数据作为一组视图和视图之间的成对连接。

创建

描述

例子

vSet= pcviewset创建一个带有默认属性名的pcviewset对象。使用对象函数来执行添加、修改或删除视图或连接等操作。

属性

全部展开

此属性是只读的。

视图属性,指定为一个三列表。该表包含该表中描述的列。

描述
ViewID 视图标识符,指定为整数。视图标识符对特定视图是唯一的。
AbsolutePose 视图的绝对姿态,指定为rigid3d对象。
PointCloud 点云,指定为pointCloud对象。

此属性是只读的。

视图之间的两两连接,指定为一个四列表。该表包含该表中描述的列。每一行对应一个连接。

描述
ViewID1 第一个视图的视图标识符,指定为唯一整数。
ViewID2 第二个视图的视图标识符,指定为唯一整数。
RelativePose 第二个视图相对于第一个视图的相对姿态,指定为rigid3d对象。
InformationMatrix 信息矩阵,指定为一个6 × 6矩阵。信息矩阵表示测量误差的不确定度,是协方差矩阵的倒数。

此属性是只读的。

指定为非负整数的视图数。

此属性是只读的。

连接数,指定为非负整数。

对象的功能

addView 向视图集添加视图
updateView 更新视图集中的视图
deleteView 从视图集中删除视图
hasView 检查视图是否在视图集中
addConnection 在视图集中添加视图之间的连接
updateConnection 更新视图集中视图之间的连接
deleteConnection 删除视图集中视图之间的连接
hasConnection 检查两个视图之间的连接是否在视图集中
findView 查找与视图标识符关联的视图
findConnection 查找与视图标识符相关联的连接
connectedViews 视图集中的连接视图
提出了 与视图集中的视图相关联的绝对姿势
createPoseGraph 创建构成图
optimizePoses 使用相对位姿约束优化绝对位姿
情节 图视图集视图和连接

例子

全部折叠

创建一个视图集来保存里程数。

vSet = pcviewset;

创建一个Velodyne阅读器来读取点云。

veloReader = velodyneFileReader (“lidarData_ConstructionRoad.pcap”“HDL32E”);ptCloud = readFrame (veloReader);

预处理一帧,去除地平面,下采样点云。

elevationDelta = 25;gridStep = 0.2;groundPtsIdx = segmentGroundFromLidarData (ptCloud,...“ElevationAngleDelta”, elevationDelta);ptCloud = select(ptCloud, ~groundPtsIdx,“输出”“全部”);ptCloud = pcdownsample (ptCloud,“gridAverage”, gridStep);

初始化第一个视图的属性。

absPose = rigid3d;relPose = rigid3d;

将第一个视图添加到点云视图集。

absPose vSet = addView (vSet, 1日,“PointCloud”, ptCloud);

使用第一个视图初始化一个点云图。

ptCloudMap = (ptCloud)复印件;skipFrames = 5;prevViewId = 1;prevPtCloud = ptCloud;

循环遍历帧以更新里程计和点云图。

viewId = 6: skipFrames: 50%读点云。ptCloud = readFrame (veloReader viewId);%进行预处理。groundPtsIdx = segmentGroundFromLidarData (ptCloud,...“ElevationAngleDelta”, elevationDelta);ptCloud = select(ptCloud, ~groundPtsIdx,“输出”“全部”);ptCloud = pcdownsample (ptCloud,“gridAverage”, gridStep);%注册新的点云对上一个。regGridStep = 5;relPose = pcregisterndt(ptCloud, prevPtCloud, regGridStep,...“InitialTransform”, relPose);更新绝对转换。absPose = rigid3d(relPose.T*absPose;T);添加新的视图和连接到前一个视图。vSet = addView (vSet viewId absPose,“PointCloud”, ptCloud);vSet = addConnection (vSet prevViewId、viewId relPose);prevPtCloud = ptCloud;prevViewId = viewId;结束

在默认的2d视图中显示视图设置。

情节(vSet“ShowViewIds”“上”)视图(2)

Figure包含一个轴对象。axis对象包含一个graphplot类型的对象。

介绍了R2020a