ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

揭秘 MULLS 的 4 个鲁棒性技巧:地面分割、运动补偿、动态物体移除与距离反比采样

揭秘 MULLS 的 4 个鲁棒性技巧:地面分割、运动补偿、动态物体移除与距离反比采样 揭秘 MULLS 的 4 个鲁棒性技巧地面分割、运动补偿、动态物体移除与距离反比采样【免费下载链接】MULLS MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA 21]项目地址: https://gitcode.com/gh_mirrors/mu/MULLSMULLSVersatile LiDAR SLAM via Multi-metric Linear Least SquareICRA 2021是一套高效、低漂移、多场景通用的激光雷达 SLAM 开源方案既能跑实时里程计也能完成建图与回环优化。对新手来说MULLS 最值得学习的不是它跑得多准而是它如何通过一组工程化技巧让 LiDAR SLAM 在城市场景、高速路段、复杂路口里保持鲁棒。本文从源码层面拆解 MULLS 提升鲁棒性的 4 个关键技巧地面分割、运动补偿、动态物体移除与距离反比采样帮你快速理解这套系统的设计思路。技巧一基于网格双阈值的快速地面分割地面点在每一帧点云中占比极高如果全部参与配准不仅计算量大还会干扰特征匹配。MULLS 采用了一种双阈值网格地面分割策略核心实现在 cfilter.hpp 的fast_ground_filter函数中大致流程是构建 2D 网格把点云按水平面投影到网格统计每个格子的最低点min_z邻域比较若某格子的最低点与 8 邻域最低点相差超过阈值 1则该格子整体视为非地面格内二次筛选其余格子中高于格内最低点阈值 2 的点归为非地面剩余归为地面。这套思路比直接 RANSAC 拟合平面更快、对坡度更宽容还能顺带估计地面法向量支持固定半径、k 近邻、格内 RANSAC 三种方式。分割后地面点会被随机降采样非地面点则进入下一步的特征提取为后续多度量配准提供干净输入。技巧二基于匀速运动模型的点云运动补偿旋转式激光雷达一帧扫描需要几十毫秒车辆在这段时间内的位移会让点云产生运动畸变scan distortion高速行驶时尤为明显。MULLS 用匀速运动模型做运动补偿实现在 cfilter.hpp 的simple_motion_compensation与apply_motion_compensation中。原理很直观假设帧间运动已知则每个点根据其扫描时刻的比例系数 s 做线性插值——最早扫到的点畸变最大、补偿最多最后扫到的点几乎不动。插值用四元数球面线性插值slerp完成旋转和平移分别处理。代码还针对不同雷达做了适配Velodyne HDL-64 从 x 轴负方向起扫、Hesai Pandar 从 y 轴负方向起扫通过scan_begin_ang参数区分若点云自带时间戳也可以走simple_motion_compensation_with_timestamp按真实时间比例补偿。这一步直接决定了配准初值的质量是低漂移的关键前提。技巧三双重动态物体移除策略行驶中的车辆、行人会在地图上留下鬼影把动态点误当作静态特征参与配准是 LiDAR SLAM 漂移的主要来源之一。MULLS 提供两层动态物体移除手段基于语义掩码的前置剔除在 Semantic KITTI 数据上cfilter.hpp 的filter_with_dynamic_object_mask_pre直接利用神经网络预测的语义标签把 moving-car、moving-person 等动态类别标签 252–259在进入特征提取前就过滤掉基于局部地图的后验剔除这才是 MULLS 的亮点。map_manager.cpp 的map_based_dynamic_close_removal把当前帧的非地面点与局部地图做 kd-tree 最近邻搜索若某点到地图最近邻的距离落在异常区间过近或过远就判定它属于动态物体并删除。由于配准前地图已建好这套方法不依赖额外传感器纯 LiDAR 也能稳定工作。此外scanner_filter 还会剔除车体自身的点与地面以下的鬼点进一步净化输入。技巧四距离反比采样让远处点不消失激光雷达点云密度随距离急剧衰减——近处密密麻麻、远处稀稀拉拉。如果均匀降采样远处本就不多的点会被进一步稀释导致配准约束不足。MULLS 的距离反比采样distance inverse sampling专门解决这个问题参数入口在 cfilter.hpp 的extract_semantic_pts中distance_inverse_sampling_method: 0关闭1线性权重2二次权重 standard_distance: 权重为 1 的参考距离默认 15 米实现时以标准距离 / 点到雷达距离作为采样权重近处点被更狠地降采样远处点则尽量保留且二次权重比线性权重更激进。这样配准时远近特征点分布更均衡长距离场景如高速公路的鲁棒性明显提升。想体验的话在 run_mulls_slam.sh 指定的配置文件中即可调整对应参数不同场景还有现成配置可参考比如 lo_gflag_list_kitti_urban.txt 与 lo_gflag_list_kitti_highway.txt。快速上手体验这 4 个技巧共同撑起了 MULLS 的鲁棒性而体验它们并不难。仓库自带 16 帧示例数据demo_data目录无需任何配置即可运行git clone https://gitcode.com/gh_mirrors/mu/MULLS sh script/run_mulls_slam.sh # 跑完整 SLAM sh script/run_mulls_reg.sh # 跑两帧点云配准小结地面分割减少计算干扰、运动补偿消除畸变、动态物体移除防止漂移、距离反比采样均衡特征分布——这 4 个技巧环环相扣让 MULLS 在保持高效的同时具备低漂移、多场景通用的能力。对于正在学习 LiDAR SLAM 的你与其对着公式发愁不如直接读读 cfilter.hpp 与 map_manager.cpp 里这些短小精悍的实现很快就能把工程上的鲁棒性思维带进自己的项目。【免费下载链接】MULLS MULLS: Versatile LiDAR SLAM via Multi-metric Linear Least Square [ICRA 21]项目地址: https://gitcode.com/gh_mirrors/mu/MULLS创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进