- 博客(67)
- 问答 (1)
- 收藏
- 关注
原创 Surf 点构造点到面残差详细流程
在优化中,LIO-SAM 会把当前帧 Surf 点通过当前估计位姿变换到 map 坐标系,然后在局部 SurfMap 中寻找最近的 5 个历史平面点,并拟合局部平面。若这 5 个点都能较好贴合该平面,则认为该平面约束有效。随后计算当前点到该平面的有符号距离,作为 Surf 点到面残差。优化器会将所有有效 Surf 残差与 Corner 点到线残差一起构建最小二乘问题,通过迭代求解当前帧位姿增量,使当前点云不断贴近局部地图中的线、面特征,最终获得更准确的 scan-to-map 位姿估计。
2026-07-14 10:51:39
322
原创 第 7 步: laserMapping.cpp中 h_share_model(),FAST-LIO LiDAR 前端观测模型的核心
本文解析FAST-LIO前端观测模型核心函数h_share_model()。该函数作为iEKF测量模型,完成三个任务:将LiDAR点云通过IMU位姿与外参转换至世界坐标系,利用ikd-Tree匹配局部平面;计算点到平面距离作为观测残差并筛选有效点;构造残差对状态(位置、姿态、外参等)的12维雅可比矩阵,通过叉乘矩阵处理旋转扰动,区分是否启用外参估计。该模型在iEKF迭代中动态更新,提供实时LiDAR观测,与IMU预测互补,构成高精度状态估计的核心闭环。
2026-07-14 10:51:24
408
原创 第 6 步:include/IKFoM_toolkit/esekfom/esekfom.hpp
本文介绍FAST-LIO中迭代误差状态卡尔曼滤波器(ESKF)的核心实现。该滤波器作为通用框架,通过predict()进行IMU状态预测,通过update_iterated_dyn_share_modified()基于LiDAR残差迭代修正。文章阐明状态定义、误差状态更新(boxplus/boxminus)及迭代必要性,强调流形状态(如SO3姿态)与向量状态的区别,并分析残差构造与雅可比计算。该滤波器紧耦合IMU预测与LiDAR观测,输出位姿、速度、IMU零偏等多维状态的高频精确估计。
2026-07-10 17:02:05
283
原创 2D-SLAM 真实数据处理与多传感器工程落地:时间同步、异常过滤、标定对齐和系统调试
在2D-SLAM中,LiDAR、里程计、IMU等传感器频率差异大,时间同步至关重要,否则将导致地图重影与定位跳变。硬件同步(PPS/PTP)效果最佳,软件同步则依赖缓存插值与容忍窗口。数据处理需过滤无效点、去噪、剔除动态障碍物及检测丢帧。传感器标定需精确测量外参,并通过直墙测试等验证。数据对齐需统一时间、坐标系、单位及语义,确保数据正确转换。工程中应优先排查时间戳、TF树及外参,再调整算法,以解决漂移与地图失真问题。
2026-07-10 17:01:54
338
原创 Cartographer 和 AMCL 的“抗局部动态变化”能力
在动态环境中,Cartographer依赖静态历史地图,预先过滤动态物体,并通过限制临时子地图维持稳定,永久变化需重建地图。AMCL则利用BeamSkipping跳过动态障碍激光束,但需合理设置阈值。两者共同点:动态物体需过滤或降权,短期依赖里程计/IMU,长期需维护独立稳定地图。工程中需根据环境变化频率,权衡适应性与精度选择方案。
2026-07-09 20:46:12
418
原创 ROS2 topic / tf / bag 详细解释
本文介绍ROS2中topic、tf与bag在2D激光SLAM系统中的作用与调试方法。topic用于模块间通信,需关注频率、时间戳等;tf维护坐标变换链(map→odom→base_link→laser),需保证连通性与外参准确;bag实现数据录制与复现,支持离线分析。三者构成SLAM数据链路,工程师需掌握从传感器数据检查、坐标变换、时间同步到问题复现的完整调试流程,这是解决实际工程问题的关键基础。
2026-07-09 19:01:10
367
原创 Cartographer Pose Graph 与 LIO-SAM Factor Graph:从对象、约束、残差到优化结果
Cartographer与LIO-SAM分别为基于位姿图与因子图的SLAM后端框架。Cartographer优化Node与Submap位姿,融合局部匹配、回环及里程计约束,采用Ceres求解全局一致性。LIO-SAM联合优化位姿、速度与IMU零偏,通过IMU预积分、LiDAR校正及GPS因子,基于GTSAM iSAM2增量求解。Cartographer侧重2D场景,调参聚焦约束权重;LIO-SAM适合3D紧耦合,通过IMU高频预测与LiDAR修正动态估计零偏。两者均基于加权残差优化,适应不同传感器融合需求。
2026-07-08 10:30:49
743
原创 FAST-LIO /IKFoM完整流程解释:从 IMU 预测,到 LiDAR 修正,再到下一轮循环
FAST-LIO 每轮通过“IMU 高频预测 + LiDAR 低速修正”构成闭环。系统维护 23 维状态(位姿、速度、bias、外参、重力),IMU 传播状态与协方差,LiDAR 通过点到平面残差构造几何约束。优化目标在 IMU 先验与 LiDAR 观测间权衡,通过 IESKF 迭代求解 23 维修正量,并利用协方差耦合间接修正速度与 bias。最终更新状态与协方差,进入下一轮,实现高频、低漂移的紧耦合里程计。
2026-07-08 10:29:50
336
原创 GMapping 完整流程详解:RBPF 粒子滤波、栅格扫描匹配与 Occupancy Grid 建图
GMapping是一种基于Rao-Blackwellized粒子滤波的二维激光SLAM算法。它通过多个粒子维护不同的轨迹假设,每个粒子包含位姿、地图和权重。流程包括:运动模型传播位姿、扫描匹配修正、权重更新及自适应重采样。该算法能有效应对里程计漂移,通过激光匹配修正map→odom变换,输出栅格地图与全局位姿。在长走廊、重复货架等退化环境中仍保持良好建图效果。
2026-07-06 16:30:35
667
原创 第 5 步:include/use-ikfom.hpp——FAST-LIO 的状态、IMU 模型与雅可比
use-ikfom.hpp 是 FAST-LIO 的理论核心,定义了 23 维状态(位姿、速度、外参、零偏、重力),其中姿态与重力采用流形表示保证几何约束。IMU 模型通过连续时间状态方程刻画状态演化,并量化误差传播路径;LiDAR 观测借助协方差交叉项间接修正速度与零偏,实现紧耦合。该文件与 IMU_Processing 协同,完成高频预测与几何校正的闭环,是系统数学引擎的核心构成。
2026-07-06 16:30:18
606
原创 laserMapping.cpp 中的 sync_packages() 详细讲解
sync_packages()是FAST-LIO的帧级数据同步器,将LiDAR点云与覆盖扫描时段的IMU打包为MeasureGroup,要求IMU时间戳覆盖扫描结束时刻。LiDAR结束时间由末点curvature计算,异常时用历史值兜底。仅消费不晚于结束时间的IMU,超时数据保留供下一帧,通过状态机防错帧。依赖点云时间排序且curvature单位为毫秒,不解决硬件时钟偏差。该函数为去畸变和状态估计提供对齐数据包,是系统实时性的关键。
2026-07-03 10:55:29
342
原创 FAST-LIO src/IMU_Processing.hpp 完整详细讲解
IMU_Processing.hpp是FAST-LIO前端核心,负责IMU驱动的状态传播与点云运动补偿。它将系统状态从上一帧递推至当前扫描终点,并将不同时刻采样的点云统一补偿到终点坐标系。流程分三阶段:初始化阶段通过静止统计估计重力方向与陀螺零偏;前向传播采用中值积分构建IMU轨迹;补偿阶段经四步坐标变换完成点云对齐。模块依赖精确时间同步、可靠外参与合理噪声配置,是保障LiDAR匹配精度的关键预处理环节。
2026-07-03 10:55:10
455
原创 FAST-LIO IMU_Processing.cpp 完整详细讲解
ImuProcess负责FAST-LIO点云去畸变,利用帧间IMU将状态预测至当前帧结束,并通过插值补偿点云至扫描结束时刻,消除运动畸变。涉及L、I、G坐标系转换及外参补偿,初始化时静止假设快速估计重力与零偏,IMU区间采用恒定角速度/加速度近似,高速运动可能引入误差。依赖点云curvature字段提供时间,无IMU则跳过。输出去畸变点云与预测状态,是IMU与LiDAR紧耦合的关键环节。
2026-07-02 10:16:27
269
原创 FAST-LIO preprocess.cpp 完整详细讲解
preprocess.cpp是FAST-LIO前端模块,负责原始点云预处理。功能包括适配多种雷达、提取逐点时间戳供IMU去畸变,过滤无效点并抽稀,以及可选的特征提取。关键风险是时间参数错误或配置不当会导致去畸变失效和地图拖影,需确保雷达线数、采样频率等参数准确。该模块输出直接影响后端精度,是系统稳定运行的基础。
2026-07-02 10:15:59
481
原创 AMCL 与粒子滤波:二维 LiDAR 地图定位完整原理
AMCL是一种基于粒子滤波的自适应蒙特卡洛定位算法,用于机器人在已知地图中的实时位姿估计。其核心通过粒子集表示位姿概率分布,每个粒子包含位姿假设与权重。算法利用运动模型预测粒子扩散,结合激光扫描与地图匹配进行观测更新,通过重采样保留高权重粒子,并自适应调整粒子数量。AMCL能处理环境相似性导致的定位模糊,支持全局定位与绑架恢复,输出位姿及协方差,并通过map→odom变换修正里程计漂移。系统在预测-校正循环中平衡精度与效率,适用于动态障碍环境下的结构化场景定位。
2026-07-01 10:58:26
1113
原创 FAST-LIO laserMapping.cpp 完整详细讲解
本文解析FAST-LIO中laserMapping.cpp核心流程。系统利用IMU连续预测运动,结合LiDAR点云几何校正,通过ikd-Tree维护局部地图。关键环节包括:时间同步处理数据对齐;IMU状态传播采用连续与离散积分;点云去畸变经四步坐标变换实现;IESKF迭代优化进行多轮状态更新;地图管理依赖ikd-Tree增量更新。文章阐明几何残差中12维Jacobian物理意义及23维状态向量组成,并总结调试要点,为理解紧耦合机制提供清晰视角。
2026-07-01 10:55:29
453
原创 Cartographer 源码解析(四):Trajectory、Node、Submap 与约束如何组成 Global SLAM
本文解析Cartographer后端核心机制。GlobalSLAM构建可优化空间关系系统,核心含Trajectory、Node、Submap三层级。Node经前端筛选后加入PoseGraph,携带时间戳与重力对齐点云。Node与Submap含两类约束:INTRA_SUBMAP维持局部骨架,INTER_SUBMAP实现回环校正。完整约束体系还包括LocalSLAM相对位姿、里程计、外部参考系及标志物等残差。优化器协调各类约束,保留局部结构同时修正长期漂移,形成全局一致地图。
2026-06-30 09:48:09
435
原创 Cartographer 源码解析(五):PoseGraph 如何调用 Ceres 进行全局位姿图优化并修正地图
本文介绍Cartographer全局优化模块的工作机制。当系统积累足够的回环与局部约束后,OptimizationProblem2D将约束统一送入Ceres求解器进行非线性优化,调整节点与子图的全局位姿。优化由工作队列调度,在节点积累或回环检测后批量执行;仅调整全局位姿,不影响局部位姿,保证局部运动连续性。系统融合局部匹配、回环、里程计及外部参考等多类约束协同优化,更新子图全局位置而不改变内部结构,实现地图整体闭合。分层设计使LocalSLAM保障实时性,GlobalSLAM处理长期一致性,有效抑制漂移。
2026-06-30 09:46:57
305
原创 Cartographer 源码解析(三):两个 Active Submap 如何轮换,并把激光点写入概率栅格地图
本文详细解析了Cartographer 2D SLAM中局部地图生成的完整流程。核心内容包括: 局部地图构建机制:采用双Submap重叠轮换策略,旧图用于扫描匹配,新图提前积累环境结构,确保平滑过渡。 关键处理流程: 扫描匹配获得可靠位姿后,将点云转换到局部坐标系 MotionFilter控制写入频率,避免重复更新 ActiveSubmaps2D管理两张活动地图的同时更新 每张Submap经历"新图-匹配图-冻结"的生命周期 概率栅格实现: 采用三值表示(未知/自由/占据) 通过查表高效
2026-06-27 19:09:45
365
原创 双目标定流程
本文记录了双目相机标定流程。相机输出2560×720图像(左右各1280×720),采用14×12棋盘格(边长19.7mm)标定,经异常诊断获得稳定结果:有效图片32对,左目RMS为0.39px,右目RMS为0.39px,双目RMS为0.41px,基线长度59.50mm。项目发现并解决了“单目RMS低但双目RMS高”问题,定位右目角点顺序异常并完成验证。标定结果可为立体校正与深度恢复提供基础,支撑后续YOLO目标三维定位。
2026-06-27 19:09:02
464
原创 轮速里程计编码器测程原理及其在PoseExtrapolator中的预测融合机制
差速轮式底盘里程计通过编码器脉冲计算轮速,经运动学积分得到底盘位姿。具体流程为:编码器脉冲转左右轮转角,乘有效半径得滚动距离,结合轮距推算出底盘位移与航向角,采用中间朝向法积分更新位姿。Cartographer接收连续两帧里程计数据,计算短期速度辅助激光位姿预测。该方法短时精度高,但易受打滑和轮径误差影响,需结合IMU与激光匹配修正。其优势在于提供连续运动估计,与其他传感器形成互补。
2026-06-26 20:09:17
223
原创 Cartographer 源码解析(二):一帧激光如何完成去畸变、位姿预测与 Scan-to-Map 匹配
本文深入解析Cartographer 2D Local SLAM前端的关键流程。系统通过逐点去畸变,依据激光点相对时间预测位姿并转换至Local坐标系;PoseExtrapolator融合历史位姿、IMU与里程计实现短时预测;扫描匹配采用实时相关粗搜索与Ceres精匹配的两阶段策略。完整链路涵盖多雷达同步、重力对齐、滤波降采样及位姿估计。文章分析核心参数调优方向,阐述运动畸变处理、局部地图维护与传感器融合机制。该前端通过精准时间同步、运动补偿与分层匹配,构建稳定可靠的局部定位能力。
2026-06-26 20:09:01
440
原创 LIO-SAM 完整链路:关键帧选择 → 关键帧 ID 检索 → 局部地图构建 → KD-Tree 最近邻 → 线面残差 → 位姿优化
LIO-SAM的scan-to-map匹配分为关键帧检索、局部地图构建与残差优化三个阶段。首先以当前位姿为中心通过KD-Tree半径搜索获取邻近关键帧ID;然后从对应容器中提取角点与面点点云,转换至地图系拼接为局部地图,并分别为两类特征建立KD-Tree;最后将当前帧点云变换至地图系,通过最近邻搜索构造点到线/面的残差进行位姿优化。关键设计包括分层KD-Tree分别用于检索与匹配、局部坐标系存储按需变换、位置降采样控制地图密度,以及仅在位姿变化显著时保存关键帧。该策略兼顾了匹配效率与全局一致性。
2026-06-25 14:51:03
535
原创 Cartographer 源码解析(一):系统总入口与传感器数据如何进入 Cartographer
本文深入解析了Cartographer的核心架构与数据流。系统由多模块协同构成,MapBuilder作为总装配器,负责管理PoseGraph、线程池及传感器排序器。传感器数据经ROS层传入后,通过时间排序与多传感器同步,由CollatedTrajectoryBuilder统一调度,GlobalTrajectoryBuilder衔接前后端。文章同时厘清了LocalTrajectoryBuilder与PoseGraph的分工、Collator与RangeDataCollator的区别,为源码理解提供了清晰指引。
2026-06-25 14:50:40
396
原创 A-LOAM、LeGO-LOAM、LIO-SAM、Cartographer 对 LiDAR 点云格式的要求
本文分析了四种主流LiDAR SLAM算法对点云输入格式的不同要求。A-LOAM核心依赖XYZ坐标,可自行推断扫描线编号与相对时间;LeGO-LOAM建议提供ring字段以构建距离图像;LIO-SAM严格要求ring与逐点time字段,用于IMU紧耦合去畸变;Cartographer 2D适配LaserScan,3D模式格式要求较为灵活。文中通过数据流对比,厘清了intensity复用、ring必要性及时间戳差异等易混淆细节,并提供传感器选型建议。最后强调,实际部署需根据输出字段合理选择框架,避免数据不适配
2026-06-24 15:05:19
375
原创 LIO-SAM 中 IMU 短时积分、速度状态与点云去畸变机制解析
摘要:角速度可通过单帧积分直接获得相对转角,因旋转去畸变只需本帧内的相对旋转变化,扫描起点可设为零。而平移去畸变不仅依赖当前帧加速度,还需初始速度、位置和姿态信息,匀速运动时加速度为零但位移仍存在。因此,LIO-SAM通过IMU预积分模块维护完整状态(位置、速度、姿态及零偏),结合LiDAR优化持续校正,为平移去畸变提供必要初始条件。标准实现中仅默认启用旋转去畸变,平移去畸变功能预留但未激活。
2026-06-24 15:04:43
322
原创 A-LOAM:从第二帧开始的“帧间位姿估计 + 去畸变 + Ceres 优化”完整流程
本文剖析了A-LOAM激光里程计中帧间位姿估计与点云去畸变的核心机制。首先阐明畸变源于扫描过程中传感器运动导致的点云形变,通过插值整帧相对运动实现逐点校正,其中旋转分量采用四元数球面插值,平移分量按时间比例线性插值。位姿优化采用两轮迭代,每轮最多四次,结合点到线/面残差与Huber核函数提升鲁棒性。系统从第二帧开始继承前一帧运动作为初值,默认配置不执行完整去畸变。最终通过帧间变换累积构建全局轨迹。本文结合公式与伪代码,揭示理论与实际实现的差异。
2026-06-23 14:57:43
1045
原创 LIO-SAM 中 LMOptimization() 的 scan-to-map 位姿优化详解
LIO-SAM的scan-to-map优化通过迭代求解六自由度位姿修正量实现点云配准。核心流程包括:利用IMU/里程计预测初始位姿;将当前帧角点与面点投影至地图系;通过cornerOptimization和surfOptimization分别构建点到线、点到面残差;在LMOptimization中建立雅可比矩阵并解算位姿增量。系统采用高斯牛顿法求解正规方程,结合特征值分析处理退化场景,抑制不可观方向的更新。迭代以旋转增量<0.05°、平移增量<0.05cm为收敛条件,最终输出精确位姿。
2026-06-23 14:57:24
349
原创 A-LOAM、LeGO-LOAM 与 LIO-SAM 回环检测和因子图优化机制对比分析
本文对比A-LOAM、LeGO-LOAM和LIO-SAM三款经典LiDAR SLAM框架,聚焦回环检测与因子图优化的实现差异。A-LOAM依赖Ceres进行局部scan-to-map优化,缺乏原生回环与全局位姿图;LeGO-LOAM在LOAM基础上引入关键帧机制、GTSAM/iSAM2位姿图及ICP回环检测,通过回环因子修正累积漂移;LIO-SAM则深度融合IMU预积分、GPS约束与回环检测,构建长期关键帧图与短期IMU图的协同优化框架。
2026-06-20 15:50:31
343
原创 LeGO-LOAM中transformFusion详细解读
本文分析了LeGO-LOAM的TransformFusion模块,其核心是衔接高频但漂移的前端里程计与高精度但低频的后端地图优化。该模块以最近优化后的关键帧位姿为基准,叠加当前帧相对该关键帧的前端运动增量,生成既保持连续性又修正漂移的最终位姿。文章详细解析了优化前后位姿、前端位姿及输出位姿的计算关系,指出源码通过三角函数实现三维位姿复合,并强调复用ROS消息字段等工程细节。该机制使后端优化结果持续影响后续帧,有效平衡了实时性与地图一致性。
2026-06-20 15:50:15
450
原创 Lego-LOAM中imageProjection详解解释
本文分析了LeGO-LOAM的ImageProjection模块。该模块将原始点云投影为距离图像,完成地面检测与点云分割,为后续特征提取和位姿估计提供结构化数据。关键步骤包括基于角度计算投影索引、利用扫描线几何关系检测地面、采用BFS聚类分离障碍物。创新在于将3D处理转为2D图像操作,提升效率,并通过几何约束有效分离地面特征,为地面车辆SLAM提供可靠预处理。
2026-06-18 10:34:17
348
原创 LeGO-LOAM 中mapOptimization详细解释
`mapOptimization` 是 LeGO-LOAM 后端核心,负责当前帧与局部地图的 scan-to-map 匹配及 GTSAM 位姿图维护。流程上,它接收前端输出,结合里程计增量与历史位姿获取当前帧初始估计;利用关键帧构建局部角点和平面地图,通过点线/点面残差求解位姿增量并更新。移动达标后保存为关键帧,加入先验或相邻约束。回环检测搜索近空间远时间的历史关键帧,进行 ICP 验证,成功后添加回环因子并触发全局位姿修正,有效抑制累计漂移。整体结构清晰,兼顾局部精度与全局一致性。
2026-06-18 10:33:35
482
原创 categrapher Pose Graph Optimization(位姿图优化)
本文解析了Cartographer后端优化机制,分2D和3D两部分。2D后端通过位姿图优化处理平面位姿(x,y,yaw),构建子地图内部约束、跨子地图回环约束、里程计约束、前端位姿约束、固定坐标系约束及地标约束六类,分别保障局部一致性、修正漂移、增强连续性与提供强校正。3D后端扩展至6自由度(x,y,z,roll,pitch,yaw),增加IMU旋转与加速度约束抑制姿态漂移和高度误差。系统将所有约束转为Ceres残差项,经非线性最小二乘全局优化,有效减少累计误差。文章结合代码详述了约束构建与优化细节。
2026-06-17 18:47:15
382
原创 LIO-SAM IMU 预积分残差解析:预测运动与优化变量如何构建误差
本文解析了LIO-SAM中IMU小图与LiDAR大图的双层优化框架。IMU小图通过预积分构建旋转、速度、位置三类残差约束状态变量,并融合LiDAR位姿先验与bias平滑因子。LiDAR大图利用scan-to-map匹配构建关键帧位姿约束,联合GPS绝对位置与回环检测因子进行全局优化。两层通过LiDAR位姿传递信息:IMU预积分为匹配提供初值,优化后的LiDAR位姿反馈约束IMU估计。系统以因子图统一处理多源传感器约束,借助iSAM2实现高效增量优化。
2026-06-17 18:46:59
310
原创 LeGO-LOAM 中 featureAssociation.cpp 详细讲解
本文分析了LeGO-LOAM的FeatureAssociation模块。作为激光SLAM前端核心,该模块接收分割后的点云与IMU数据,依次完成去畸变、特征提取和帧间位姿估计,输出里程计结果。关键技术包括:基于曲率提取角点与平面点,采用分块策略保证特征均匀分布;利用IMU进行运动补偿与位姿初始化;将位姿优化分为平面与角点两步,并加入退化检测。模块位于点云分割之后、建图优化之前,为后端提供初始位姿与特征点云。其核心是融合几何特征匹配与IMU短时预测,实现轻量稳定的激光里程计。
2026-06-16 10:26:47
364
原创 Cartographer详细讲解
Cartographer是Google开源的实时SLAM系统,支持2D/3D建图,融合激光、IMU、里程计等多传感器数据。其核心采用双层架构:前端LocalSLAM通过PoseExtrapolator预测位姿,经ScanMatching将扫描匹配到局部子地图(submap),构建概率栅格;后端GlobalSLAM基于位姿图优化全局一致性,通过分支定界加速回环检测,消除累积误差。创新在于局部submap模块化构建与分层优化,兼顾实时性与全局精度,适合大场景长期建图。参数调优对性能影响显著。
2026-06-16 10:26:27
629
原创 LeGO-LOAM 详细源码流程解读
LeGO-LOAM是一种高效的激光SLAM算法,通过结构化处理点云数据提升性能。**点云预处理**将点云投影为深度图,检测地面点并分割非地面点;**前端里程计**提取角点与平面点,通过scan-to-scan匹配估计位姿,采用两阶段LM优化;**后端优化**进行scan-to-map匹配,利用关键帧管理地图并执行位姿图优化与回环检测;**位姿融合**融合高频里程计与后端结果,输出平滑轨迹。该算法通过结构化处理提升特征匹配效率,分阶段优化兼顾了实时性与准确性。
2026-06-15 13:40:30
997
原创 A-LOAM 与 LeGO-LOAM 特征提取前处理差异分析
本文对比了A-LOAM与LeGO-LOAM在特征提取前处理阶段的差异。两者均基于局部曲率提取边缘点与平面点,但预处理策略不同:A-LOAM采用点级筛选,通过扫描线邻域分析剔除遮挡点与突变点,实现简单通用;LeGO-LOAM则先构建距离图像,进行地面检测与连通域分割,保留稳定区域后再提取特征,更适合低线束雷达和地面移动场景,特征稳定性更优。核心区别在于处理粒度:A-LOAM关注局部点的可靠性,而LeGO-LOAM侧重区域结构的整体稳定性。
2026-06-15 13:40:08
456
原创 A-LOAM中scanRegistration.cpp详细讲解
本文深入解析了A-LOAM系统中的点云预处理与特征提取模块scanRegistration.cpp。该模块接收原始Velodyne点云,依次执行:去除无效与近距离点、计算线束ID及相对时间、按扫描线组织点云、计算局部曲率、分段提取角点(sharp/lesssharp)与平面点(flat/lessflat),并对弱平面点降采样,最终输出五类特征点云供后续里程计与建图使用。文章详细剖析了曲率计算、特征点选取策略及邻域抑制机制等实现原理。该模块的特征提取质量直接影响整个SLAM系统的定位精度与建图效果。
2026-06-13 13:44:57
354
原创 A-LOAM中laserOdometry.cpp详细解读
本文分析了A-LOAM的前端激光里程计模块laserOdometry.cpp。该模块接收角点与平面点,通过scan-to-scan匹配估计相邻帧相对位姿,输出高频里程计。主要流程包括:同步接收五类特征点云;利用当前帧角点与上一帧两点构造点到线残差;利用当前帧平面点与上一帧三点构造点到面残差;基于Ceres优化位姿增量;累计输出里程计;并更新参考帧供下一帧匹配。该模块计算高效,但存在漂移,需配合后端laserMapping进行精修。
2026-06-13 13:44:39
385
求大家检查我这个代码有啥问题
2022-04-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅