小议2019机器人顶会上的3D 激光紧耦合里程计——Lio-mapping, R_LINS , 和IN2LAMA

笔者想结合自己移动机器人的实际工作简单谈谈2019年的激光imu紧耦合slam。

谈讨论的这三篇都是基于Loam的二次开发的。

lio-mapping[1]七月份最先出来。完全基于vins mono框架改编。loam的特征基于nearest neighbor完全是很弱的匹配。图结构里面为了把所有滑窗的pose vertices串起来,只能每滑窗帧都去相对fixed frame(pivot)提nearest neighbors,这个非常耗时的。在滑窗帧中,每帧的激光观测都是与第一帧关联。除毗邻帧间用imu观测串起来外, 为了建立激光帧相互间的联系,必须边缘化掉第一帧,这个其实也挺耗时的,而且违背FEJ。其实loam中边优化,边重新计算nearest neighbors,相当于观测重新采样了剔除了outlier。 但是 lio-mapping中放到滑窗中统一优化,没有重新计算nearest neighbors环节。实际上,每帧都提nearest neighbors算力已经吃不消了,在优化中更新nearest neighbors激光观测是不现实的。这样导致没有剔除的outlier会随着边缘化后产生的prior传递给后面的信息矩阵。总结:算法资源挺耗的, 计算的信息也没有充分利用,但是很好的展现了vins-mono框架可以在其它传感器上迁移应用。该作者还回避了一个业界痛点: 数据同步!

lio-mapping后该课题组改良了实时性的问题,回归并尊重了loam算法的本质,并用上了lego-loam的前端数据预处理策略。在R_LINS[2] 中,用iterated Kalman filtering来改写loam的帧间匹配。图结构上可以理解为window size为2的一个滑窗。总结:删繁就简,返普归真,但是为什么还是回避了数据同步!

同期还有一篇[3] 。也是做了一些loam的改良。我看到了time shift temporal optimization, 看到了添加time 的error state represetation在预积分中,似乎看到了希望。 但报着理性批判的内心又有如下疑问:

1. 这个time shift在预积分公式里和bias搅在一起可观吗? 实际上,原版预积分的bias抵掉了一部分time shift带来的误差。再搞个time shift变量意义大吗?

2. 就算是time shift可优化。 笔者认为加一个time shift error state其实能修正的作用不大。由于imu数据高频,数据不同步实际导致的是,你的这个imu raw data是观测到了前一个预积分里还是后一个里。就算想矫正,这几个观测全该repropagate吧。 而错误的preintegration不能指导该用哪些raw data去构建本次preintegration。

总结: 现在没有比较好的软同步方法下,只有希望硬件兄弟们给力点了,能不能做个硬同步方案了。

 

参考文献:

ICRA2019:

·[1] Tightly Coupled 3D Lidar Inertial Odometry and Mapping

IROS2019:

[2] R_LINS: A Robocentric Lidar-Inertial State Estimator for Robust and Efficient Navigation

[3] IN2LAMA: INertial Lidar Localisation And MApping

你可能感兴趣的:(Fusion,SLAM)