
110、激光SLAM:LOAM系列从特征提取到实时建图的SLAM系统昨晚调了一台16线速腾的驱动,跑LOAM的时候发现地图在转弯处直接糊掉,点云像被揉过的纸团。查了半天,不是标定问题,是特征提取的曲率阈值设得太死,把本该保留的角点全滤掉了。这种问题在LOAM系列里太典型了——你以为算法在帮你干活,其实它在帮你丢信息。从那个被揉烂的地图说起LOAM(Lidar Odometry and Mapping in Real-time)是Ji Zhang在2014年提出的经典方案,后来有了LeGO-LOAM、A-LOAM、F-LOAM这些变体。核心思想一句话:把SLAM拆成两个并行模块——一个高频低精度的里程计(odometry)负责帧间配准,一个低频高精度的建图(mapping)负责把当前帧对齐到全局地图。两个模块共享同一套特征提取结果,但优化目标不同。这套设计有个很实际的好处:里程计只跟最近一帧比,计算量小,能跑实时;建图跟局部地图比,精度高,但慢。两个模块用不同频率跑,互不阻塞。我第一次看论文的时候觉得这有什么难的,直到自己写代码才发现,两个线程之间的数据同步和坐标系转换才是真正的坑。特征提取:曲率不是万能的,但没它万万不能LOAM的特征提取基于一个朴素假设:激光扫描同一圈上,点的局部曲率能区分平面点和角点。具体做法是取当前点前后各5个点(共10个),计算这些点到当前点的距离差平方和作为曲率值。曲率大的当角点,曲率小的当平面点。代码里有个细节特别容易踩坑——点云索引的边界处理。扫描一圈的点是环形存储的,取前后5个点时