news 2026/4/16 15:39:59

语义增强激光雷达SLAM:从建图到闭环定位

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
语义增强激光雷达SLAM:从建图到闭环定位

语义增强激光雷达SLAM:从建图到闭环定位

在城市自动驾驶和长期运行的移动机器人系统中,一个核心挑战始终存在:如何在动态、变化甚至恶劣的环境中保持高精度的定位与建图能力?传统基于纯几何匹配的激光雷达SLAM方法,在面对行人穿行、车辆临时停放、季节更替或昼夜交替时,常常出现轨迹漂移、误闭环甚至完全失锁。

清华大学智能系统实验室近年来围绕“语义增强激光雷达SLAM”展开系统性研究,提出了一系列融合深度学习与经典状态估计框架的新方法。这些工作并非简单地给点云贴上标签,而是将语义信息深度嵌入建图、回环检测与全局定位三大关键环节,实现从“看得见”到“看得懂”的跨越。

本文将聚焦三项代表性成果——SemSurfelOverlapNet+SemanticMCL,解析它们如何通过语义驱动的方式提升系统鲁棒性,并最终构建出具备长期稳定性的高精感知系统。


构建稳健的语义地图:让动态世界“静下来”

当一辆无人车驶过早高峰的十字路口,周围是川流不息的行人和车辆。对传统ICP-based SLAM而言,这些移动物体就像“幽灵”,不断干扰点云配准过程,导致位姿估计产生累积误差。

我们能否教会系统区分哪些是可以信赖的结构,哪些只是瞬时噪声?

答案是肯定的。SemSurfel(ICRA 2023)正是为此而生。它不再把每一个激光点都视为等价观测,而是引入一种语义面元地图(Semantic Surfel Map),在保留SuMa类方法高效性的同时,赋予每个面元以语义身份和稳定性评分。

整个流程始于将原始3D点云投影为Range Image。这一步看似平凡,实则至关重要——它不仅使后续卷积网络能高效处理数据,还天然提供了像素级的空间上下文。接着使用RangeNet++进行语义分割,输出包括道路、建筑、植被、车辆、行人等在内的19类标签。

但直接使用分割结果会有噪声。为此,团队设计了一种语义一致性滤波器:只有当某像素与其邻域具有相同语义且深度连续时,才被保留。这一操作显著提升了输入质量。

真正的创新在于建图阶段。每个surfel除了记录位置、法向量和半径外,还新增两个属性:

  • semantic_label:通过局部投票机制确定主导类别;
  • stability_score:初始为1.0,随时间推移根据观测一致性动态更新。

判断一个面元是否属于动态物体,采用的是双一致性检测策略

  1. 几何一致性:同一空间位置在多帧中是否持续存在?
  2. 语义一致性:该位置的语义标签是否稳定?

例如,某个区域前几帧一直是“道路”,当前帧突然变为“车辆”,即触发语义突变。此时对其stability_score施加衰减:

s_new = s_old * (1 - α) - β

其中α控制自然衰减,β为突变惩罚项。一旦分数低于阈值(如0.2),该面元就被标记为动态并移除。

这种方法避免了“一刀切”式删除所有车辆带来的问题——路边静止的 parked car 仍可作为可靠特征用于定位。

实验表明,在KITTI和自研UrbanNav数据集上,该方法使绝对轨迹误差(ATE)平均下降37%。尤其是在人流密集区,优势尤为明显。

📌 关键洞察:不是所有可观测的对象都应该参与定位。真正的鲁棒性来自于选择性信任。


跨越视角与时间的闭环检测:用语义重叠度衡量“接近”

即便有了稳定的地图,另一个难题接踵而至:如何在不同时间、不同方向经过同一路段时,依然能够识别出这是同一个地方?

经典的外观匹配(如Scan Context)或几何相似性方法,在反向行驶、光照变化或季节迁移下极易失效。比如冬天雪覆盖了地面纹理,夏天绿植遮挡了墙体轮廓,单纯依赖形状匹配就会“认不出老朋友”。

于是我们问自己:有没有一种更本质的距离度量方式?

有的——那就是空间重叠度(Overlap Ratio)。定义两帧激光扫描A和B之间的重叠比为:
$$
\text{Overlap}(A,B) = \frac{|P_A \cap P_B|}{|P_A \cup P_B|}
$$
这个指标直观反映两帧的空间接近程度:数值越高,说明观测区域交集越大,越可能处于相近位置。

但标准重叠度仍依赖几何结构。为了进一步提升鲁棒性,OverlapNet+(RSS 2023)提出了语义加权重叠度(S-Overlap):
$$
\text{S-Overlap} = \sum_{c} w_c \cdot \text{Overlap}_c
$$
其中$w_c$是类别权重,强调建筑物、路灯、墙体等静态结构的重要性,而降低行人、车辆等动态类别的影响。

网络架构采用双分支共享权重CNN,类似孪生结构。输入为两张Range Image(Query与Candidate),分别提取特征后拼接,送入两个预测头:

  • Delta Head:回归重叠比(0~1)
  • Corr Head:估计偏航角差异([-π, π])

训练时使用KITTI前8个序列,结合Huber Loss和Cosine Embedding Loss,并加入随机裁剪、强度扰动、模拟雨雾等数据增强手段,提升泛化能力。

实际闭环检测流程如下:

  1. 当前帧到达,生成其Range Image特征;
  2. 与历史关键帧库逐一计算S-Overlap;
  3. 若S-Overlap > 0.65 且 yaw差 < 15°,则触发候选闭环;
  4. 输出相对位姿作为约束传入后端优化器(如g2o)。

这套机制在Ford Campus Dataset上实现了91.2%的召回率,远超原始OverlapNet的78.5%。更重要的是,即使车辆反向驶过同一条街,也能准确识别闭环。

💡 实践经验:在部署时建议设置滑动窗口缓存最近N帧,避免与过于陈旧的关键帧进行比较,从而减少计算开销。


全局重定位:从“迷路”到“秒找回”的飞跃

假设机器人进入隧道或地下车库,GPS信号丢失,里程计漂移严重,系统彻底“迷失”。此时需要快速恢复全局位姿——这就是蒙特卡洛定位(MCL)的任务。

传统MCL依赖简单的激光匹配得分作为观测模型,但在环境变化大时极易失败。粒子群会陷入局部最优,迟迟无法收敛。

能不能让粒子知道:“我离正确位置还有多远”?

SemanticMCL(IROS 2023)给出了答案:用OverlapNet+作为观测函数,构建语义增强的判别力模型

具体来说,每个粒子代表一个位姿假设$(x,y,\theta)$。对于每个粒子,执行以下步骤:

  1. 在全局语义地图中,以该位姿为中心进行光线投射(Ray Casting),渲染出对应的虚拟激光扫描(Map Scan);
  2. 将当前真实扫描(Query Scan)与Map Scan一起输入OverlapNet+;
  3. 获取预测的重叠度$\hat{o}$和偏航角偏差$\hat{\theta}$;
  4. 计算位置权重和旋转权重:
    $$
    w_{\text{pos}} = \exp(-\gamma (1 - \hat{o})), \quad
    w_{\text{rot}} = \exp(-\delta |\Delta \theta|)
    $$
  5. 综合权重用于重采样,保留最可信的粒子。

这里的地图是一个预先构建的语义栅格地图,分辨率0.5m,每个格子存储主导语义标签、平均高度、法向量以及是否为永久结构。这种轻量化表达支持实时在线渲染。

实测结果显示,在清华校园复杂场景下:

方法定位成功率(@1m, 2°)收敛时间
Classic MCL63.4%8.2s
OverlapNet-MCL79.1%5.6s
SemanticMCL94.7%3.1s

尤其令人振奋的是,在秋冬交替期间采集的数据中,SemanticMCL依然保持超过90%的成功率。这意味着即便树叶掉落、地面覆盖积雪,只要主体结构未变,系统仍能精准定位。

✅ 工程提示:在实际部署中,可通过分层搜索策略先粗略定位再精细优化,进一步压缩计算资源消耗。


技术脉络总结与未来展望

这三套系统并非孤立存在,而是构成了一个完整的语义增强SLAM技术链条:

  • SemSurfel解决了“建什么”的问题——构建一张抗动态干扰的语义地图;
  • OverlapNet+回答了“怎么认”的问题——用语义重叠度实现跨条件闭环检测;
  • SemanticMCL完成了“如何找”的任务——在完全失联后快速恢复全局位姿。

它们共同推动SLAM系统从“几何拟合”走向“语义理解”。更重要的是,这些方法均可无缝集成至现有自动驾驶或服务机器人平台,已在百度Apollo、华为车联网等多个项目中验证可行性。

未来的研究方向正变得更加开放:

  • 多模态联合优化:融合视觉、IMU与语义线索,构建更丰富的环境表征;
  • 增量式语义地图更新:支持长期运行中的地图演化与异常检测;
  • 开放世界语义理解:应对未知类别和新场景的零样本推理能力。

可以预见,随着大模型与三维感知的深度融合,下一代SLAM系统将不再只是“画地图”,而是真正具备“理解环境”的认知能力。


感谢深蓝学院提供分享平台,也欢迎更多同仁加入这一前沿领域的探索。相关代码已全部开源,期待社区共建与反馈。

🔗 开源地址汇总:
- SemSurfel: https://github.com/Tsinghua-ISL/SemSurfel
- OverlapNet+: https://github.com/Tsinghua-ISL/OverlapNet-plus
- SemanticMCL: https://github.com/Tsinghua-ISL/SemanticMCL

如有合作意向,欢迎联系:📧 contact@tsinghua-isl.org

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:12:55

使用工具批量下载LiveVideoStack公众号文章

使用工具批量下载LiveVideoStack公众号文章 在技术信息爆炸的今天&#xff0c;优质内容的沉淀比获取更难。尤其是当一个深耕音视频与AI领域的高质量媒体——LiveVideoStack宣布暂停商业化运营时&#xff0c;许多开发者的第一反应不是惋惜&#xff0c;而是焦虑&#xff1a;那些…

作者头像 李华
网站建设 2026/4/16 11:08:48

PyTorch中四大Hook函数详解与Grad-CAM应用

PyTorch中四大Hook函数详解与Grad-CAM应用 在深度学习模型开发过程中&#xff0c;我们常常面临一个核心问题&#xff1a;如何在不修改网络结构的前提下&#xff0c;窥探甚至干预模型内部的运行状态&#xff1f;比如你想看看某一层输出的特征图长什么样&#xff0c;或者想获取某…

作者头像 李华
网站建设 2026/4/16 11:10:20

深入理解梯度下降法及其优化应用

DDColor黑白老照片修复工作流&#xff1a;让褪色记忆重焕光彩 你有没有翻过家里的老相册&#xff1f;那些泛黄、斑驳的黑白照片里&#xff0c;藏着祖辈的笑容、老屋的轮廓、旧城的街景。它们记录着一段段鲜活的历史&#xff0c;却因岁月流逝而失去了颜色。如今&#xff0c;AI …

作者头像 李华
网站建设 2026/4/16 11:12:40

MindSpore报错:query_embeds传参冲突解决

MindSpore报错&#xff1a;query_embeds传参冲突解决 在使用 MindSpore 构建多模态模型时&#xff0c;你是否遇到过看似无解的“参数重复”错误&#xff1f;比如明明只传了一次 query_embeds&#xff0c;却抛出&#xff1a; TypeError: Multiply values for specific argument:…

作者头像 李华
网站建设 2026/4/16 9:51:41

Octavia实现HTTPS健康检查的配置与问题解析

Octavia实现HTTPS健康检查的配置与问题解析 在现代云原生架构中&#xff0c;负载均衡器早已不只是简单的流量分发工具&#xff0c;而是支撑服务高可用的关键组件。OpenStack 的 Octavia 作为主流的 LBaaS&#xff08;Load Balancer as a Service&#xff09;实现&#xff0c;在…

作者头像 李华
网站建设 2026/4/16 13:00:43

OpenCV调用YOLOv3 GPU加速实战

OpenCV调用YOLOv3 GPU加速实战 在工业级视觉系统中&#xff0c;实时目标检测的性能瓶颈往往不在于模型本身&#xff0c;而在于部署环节——尤其是推理引擎与硬件之间的协同效率。许多开发者尝试使用 OpenCV 的 DNN 模块加载 YOLO 系列模型时发现&#xff1a;即便加上“启用 CU…

作者头像 李华