Core Algorithms 核心算法

激光SLAM 系统的计算瓶颈往往不在传感器驱动,而在点云索引、几何估计与后端优化三个环节的算法实现。eroam 针对这三个环节设计了六组核心算法,覆盖从原始数据预处理到因子图优化的完整 pipeline。这些算法并非孤立存在:KD 树索引为平面估计和点云匹配提供近邻查询能力;格式归一化层屏蔽传感器异构性;边缘化机制控制后端优化规模。理解它们之间的数据流动与依赖关系,是掌握整个系统架构的关键。

本页提供算法全景图与快速导航。每个算法条目包含一句话定位、典型应用场景说明,以及指向详细文档的链接。如需修改参数或集成新传感器,建议先阅读对应算法的接口契约与复杂度分析。


算法依赖关系

graph TD A[DVS事件相机Rosbag数据预处理
guide-core-algorithms-03] --> B[异构点云格式归一化转换
guide-core-algorithms-04] B --> C[增量式KD树动态维护
guide-core-algorithms-01] B --> D[静态关键帧KD树近邻搜索
guide-core-algorithms-06] C --> E[动态平面参数估计
guide-core-algorithms-02] D --> F[点云匹配/配准] E --> F F --> G[SLAM因子边缘化
guide-core-algorithms-05] G --> H[滑动窗口优化输出] style A fill:#e1f5fe style G fill:#fff3e0

数据流向说明:原始 DVS 事件数据经预处理后,与激光点云统一转换为内部格式;增量式 KD 树维护当前帧动态点云,静态 KD 树管理历史关键帧;两者分别为平面估计(几何特征提取)和点云匹配(位姿估计)提供近邻查询;最终因子图通过边缘化控制规模,输出优化后的状态估计。


算法详解

增量式 KD 树动态维护算法

→ 详细文档

面向激光 SLAM 场景重新设计的增量式 KD 树实现。支持点云动态增删、多线程重建与高效近邻搜索,将点云匹配阶段的暴力搜索复杂度从 O(n) 降至近似 O(log n)。该模块是 SLAM 定位建图的核心索引基础设施,直接决定前端里程计的实时性上限。


动态平面参数估计算法

→ 详细文档

基于点云近邻搜索的平面拟合算法,可从三维点云数据中鲁棒估计平面模型参数。针对动态场景设计,支持局部平面检测与参数更新,为点云配准、障碍物识别等上层功能提供几何特征支撑。算法依赖增量式 KD 树提供的近邻查询接口。


DVS 事件相机 Rosbag 数据预处理算法

→ 详细文档

事件 SLAM 的离线数据预处理模块。实现 DVS 事件数据的坏点过滤、时间片段截取与事件块格式归一化,消除原始数据中的噪声事件与时间戳异常,为后续 SLAM 处理提供标准化输入。脏数据在此层拦截,避免污染下游几何估计与优化环节。


异构点云格式归一化转换算法

→ 详细文档

ROS PointCloud2 消息、内部自定义点类型与 Eigen 向量类型之间的无损转换层。统一多传感器(激光雷达、RGB-D、事件相机投影点云)的数据格式标准,消除上层业务模块重复的转换逻辑冗余。所有点云数据进入核心算法前须经过此层。


SLAM 因子边缘化算法

→ 详细文档

后端优化的规模控制机制。实现滑动窗口中旧状态变量的边际化处理,通过 Schur 补运算保留历史约束信息,同时将优化问题维度限制在固定规模。该算法在实时性与估计精度之间取得平衡,是保障 SLAM 系统长期运行的关键。


静态关键帧 KD 树近邻搜索算法

→ 详细文档

针对静态关键帧点云批量查询场景的定制优化。支持近似最近邻搜索(ANN)与多线程并行查询,相比通用 KD 树进一步提升回环检测与地图匹配阶段的查询效率。与增量式 KD 树形成分工:动态数据走增量树,历史关键帧走静态树。