目的
想使用一下CloudCompare自带的八叉树,替换掉nanoflann。nanoflann在某些特殊场景下返回的结果是有问题的,导致程序出现异常。
想使用一下CloudCompare自带的八叉树,替换掉nanoflann。nanoflann在某些特殊场景下返回的结果是有问题的,导致程序出现异常。
使用地面布设的外业控制点GCP来检核ALS点云条带平差之后的绝对位置精度。如下图所示,红圈中的是GCP点,紫色和灰色是两个条带的ALS点云。图中显示了在\(z\)方向上的偏差。
通过观察,有一部分控制点是在平面区域采集的,有一些是在边缘比较锋利的区域采集的。
本身ALS点云就比较稀疏,再加上GCP也是离散的布设的,导致很难找到对应同名关系,想要找到对应位置的值就只能通过内插来实现。
内插方法有很多,但是直接在ALS里面内插不是很现实,可以考虑转成格网,mesh的形式,然后基于新的数据表达方式再内插。例如可以用arcgis生成DTM,DEM,内插到高分辨率,然后再采样点和GCP做计算。
最终论证,通过地面控制点应该是无法做到水平精度检核的,只能做到高程方向的检核。
流程:首先用Kalman filtering 将GNSS和IMU融合到一起,如果轨迹足够准确,可以直接获得3D点云。也可以在后面加一个平差步骤,结合影像传感器的观测实现融合传感器定向,目的是:1)改正轨迹;2)传感器定向和标定;3)获取3D模型数据,e.g.点云。
需要有一些假设:通常假设轨迹误差是由于缓慢变化的 GNSS 误差或未补偿的惯性传感器漂移造成的,因此是低频的,而轨迹的较高频率分量相对准确。 实际上,校正要么与飞行几何相关联,作为每条带的固定偏移,要么建模为缓慢时变。 由于轨迹误差在带内也可能变化很大,因此这种调整在实践中通常需要高度灵活的校正模型,而这也是的模型有较高的过拟合风险,导致点云中出现全局的变形。
这些问题是的在传感器层级进行统一的误差建模的方法开始流形。
因为这里使用的传感器其实一个组装的VLP16型多线激光雷达+相机+imu的背包激光扫描仪,作者考虑到LiDAR有一定的安置误差(提前肯定标定了的,e.g.倾角),而本文使用的又是室内场景平面,因此需要根据一个仪器安装的先验确定z轴方向指向哪里(默认传感器的坐标系为右前上,z轴指向天空)。得到这个倾角主要是为了修正LiDAR坐标系的z轴方向。这对后续的高度滤波和地面点判断都有一定的影响。
在提取平面时,为了提升效率,首先基于扫描仪的高度,通过高度滤波将一定高度之外的点去掉,同时对剩下的点云计算法向量(通过提前性的点云剔除,可以提升这里的计算效率)进行过滤,和z方向进行比较,保留地面点(和z轴夹角小就说明方向近似),用RANSAC的方式拟合平面参数方程。 这样就可以以较快的速度从单帧点云中提取出一个合适的平面。注意:原文中写的是直接用RANSAC提取平面的,这个非常的费时间,实际操作并不是这样子来的。
闭环的作用就不多说了,koide采用的闭环检测方法其实挺简单的,就是一般闭环检测的基础准则。