CloudCompare源代码学习

目的

想使用一下CloudCompare自带的八叉树,替换掉nanoflann。nanoflann在某些特殊场景下返回的结果是有问题的,导致程序出现异常。

关于控制点检核的一些思考

使用地面控制点检核ALS点云精度

任务描述

​ 使用地面布设的外业控制点GCP来检核ALS点云条带平差之后的绝对位置精度。如下图所示,红圈中的是GCP点,紫色和灰色是两个条带的ALS点云。图中显示了在\(z\)方向上的偏差。

​ 通过观察,有一部分控制点是在平面区域采集的,有一些是在边缘比较锋利的区域采集的。

目前存在的问题

​ 本身ALS点云就比较稀疏,再加上GCP也是离散的布设的,导致很难找到对应同名关系,想要找到对应位置的值就只能通过内插来实现。

​ 内插方法有很多,但是直接在ALS里面内插不是很现实,可以考虑转成格网,mesh的形式,然后基于新的数据表达方式再内插。例如可以用arcgis生成DTM,DEM,内插到高分辨率,然后再采样点和GCP做计算。

解决方案

最终论证,通过地面控制点应该是无法做到水平精度检核的,只能做到高程方向的检核。

Kinematic mapping trajectory estimation

Integrated trajectory estimation for 3D kinematic mapping with GNSS, INS and imaging sensors: A framework and review1

方法分类

  1. 多步方法。

​ 流程:首先用Kalman filtering 将GNSS和IMU融合到一起,如果轨迹足够准确,可以直接获得3D点云。也可以在后面加一个平差步骤,结合影像传感器的观测实现融合传感器定向,目的是:1)改正轨迹;2)传感器定向和标定;3)获取3D模型数据,e.g.点云。

​ 需要有一些假设:通常假设轨迹误差是由于缓慢变化的 GNSS 误差或未补偿的惯性传感器漂移造成的,因此是低频的,而轨迹的较高频率分量相对准确。 实际上,校正要么与飞行几何相关联,作为每条带的固定偏移,要么建模为缓慢时变。 由于轨迹误差在带内也可能变化很大,因此这种调整在实践中通常需要高度灵活的校正模型,而这也是的模型有较高的过拟合风险,导致点云中出现全局的变形。

​ 这些问题是的在传感器层级进行统一的误差建模的方法开始流形。

Hdl_graph_slam论文及代码解析_后端优化

1. 针对性设计的平面提取方法

​ 因为这里使用的传感器其实一个组装的VLP16型多线激光雷达+相机+imu的背包激光扫描仪,作者考虑到LiDAR有一定的安置误差(提前肯定标定了的,e.g.倾角),而本文使用的又是室内场景平面,因此需要根据一个仪器安装的先验确定z轴方向指向哪里(默认传感器的坐标系为右前上,z轴指向天空)。得到这个倾角主要是为了修正LiDAR坐标系的z轴方向。这对后续的高度滤波和地面点判断都有一定的影响。

​ 在提取平面时,为了提升效率,首先基于扫描仪的高度,通过高度滤波将一定高度之外的点去掉,同时对剩下的点云计算法向量(通过提前性的点云剔除,可以提升这里的计算效率)进行过滤,和z方向进行比较,保留地面点(和z轴夹角小就说明方向近似),用RANSAC的方式拟合平面参数方程。 这样就可以以较快的速度从单帧点云中提取出一个合适的平面。注意:原文中写的是直接用RANSAC提取平面的,这个非常的费时间,实际操作并不是这样子来的。

Hdl_graph_slam论文及代码解析_回环检测

回环检测

​ 闭环的作用就不多说了,koide采用的闭环检测方法其实挺简单的,就是一般闭环检测的基础准则。

候选准则

  • 候选帧不能离当前帧太近,场景变化不大的话,会引入过多的冗余匹配,对实时应用不合适;
  • 候选帧和当前帧的位姿之间的距离要足够小,这个是前提,如果都不小,那说明大概率不是闭环了,但是也不排除前端飘得确实很厉害的情况;小范围内,这个条件还是可以满足的,室外更大的场景,这种就不行了,可能飘得很厉害,只能上特征了。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×