A-LOAM建图

@TOC

基础知识

采集得到的点云数据 不利于点云后续特征的提取,因此需要通过相应的滤波算法去除噪声数据。常用的点云滤波算法有:体素网格滤波、直通滤波、半径滤波、统计滤波器,双边滤波器,卷积滤波,高斯滤波,条件滤波等
LOAM论文中使用体素网格滤波器:对稠密的点云进行降采样,将3D空间划分成多个小体素,然后将每个体素网格的中心点作为该网格内的唯一点,体素网格滤波可以在减少数据量的同时很好的保留原始点云的几何结构。

PCL 点云库中通过 VoxelGrid 函数进行体素网格滤波,使用 setLeafSize 函数来设置网格的大小, leafSize 越大表示每个网格的体积越大,保留的点云数量越少

论文阅读

框架实现

在laserOdometry中通过skipFrameNum去控制里程计输出的特征点的数据(用于在地图中寻找匹配的特征点)
请添加图片描述在laserMapping.cpp的建图环节中,通过ros::Subscriber函数 订阅从laserOdometry中订阅的node信息。并调用后面的回调函数处理ros::node节点接收到的数据信息。
请添加图片描述回调函数如下:
请添加图片描述请添加图片描述以cornerfeature的timestamp为基准 进行timestamp alignment

请添加图片描述
同样判断是否已经满足时间对齐。
请添加图片描述对已经进行完成时间对齐的数据进行parse解析——输出当前解析时刻经过laserOdometry得到的优化估计的四元数位姿以及平移向量
请添加图片描述通过transformAssociateToMap函数将里程计的局部位置转换成全局位置(world frame框架中),相当于做了一次坐标系的转换 转换到全局坐标系用于建图(Mapping)
请添加图片描述

3D激光点云的栅格化地图处理

**点云栅格化的原因:**将空间中无序的点云划分成均匀分布的若干个栅格,每个栅格会存储相应的点云信息。方便对于点云数据的处理与分析。
栅格地图:考虑存储当前分析帧的附近较近的点云作为部分地图进行分析submap。通过将地图划分成为212111的栅格形式,每个栅格代表边长50m的正方体,地图逐渐累加时候,栅格外的数据舍弃。
网络上对于点云栅格化部分的代码分析我没太看明白什么意思 下面是我自己的分析过程:

这里首先是通过 const int laserCloudNum = laserCloudWidth * laserCloudHeight * laserCloudDepth; //4851设置了一个用于存放研究点云数据的点云栅格地图212111
然后在process()函数中,有如下代码:
请添加图片描述这段代码我认为:首先根据t_w_curr当前位姿的信息,计算出该位姿状态可能对应的在栅格位置中的坐标,同时加laserCloudCenWidth等价于将当前帧的位置尽量贴合submap的中心位置
针对于下面的三个if语句,我的理解:
因为可以理解成为 其实在(t_w_curr + 25.0)在[-50,50]区间都是向0取整的,所以为了进行区分,我们采用向下取整的方式 也就是(t_w_curr + 25.0)如果属于[-50,0]则将对应的centercubeindex-1实现(t_w_curr + 25.0)小于0 以及(t_w_curr + 25.0)大于0的区分

**如果带估计优化位姿偏向左侧 那么整体向右侧移动 **

这里需要明确:点云存储在一个一维的数组中 可以通过点云通过for循环 索引cube 立方体的width height depth看出——这里需要明确一下:一个立方体的移动先是在laserCloudDepth方向移动 然后在laserCloudHeight方向移动 然后在laserCloudWidth整体向右移动 那么最左侧的元素块就需要清0 所以直接赋值为右侧指针 然后clear即可
请添加图片描述
同理 优化位姿偏向右侧
请添加图片描述
对于centerCubeI ,centerCubeJ ,centerCubeK 做相同的类似操作

醍醐灌顶的一句话:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去
**PCA主成分分析的最终目标将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。
**
PCA优化目标:优化目标变成了寻找一个矩阵P,满足PCPT是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件

参考博客
SVD分解 详细
ICP点云配准原理
点云去中心化
基变换的原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值