SLAM(Simultaneous Localization and Mapping),即同时定位与地图构建,是机器人/设备在未知环境中完成“我在哪”和“世界长什么样”两个任务的核心技术。

下面我给你简单叙述它是怎么**同时实现定位和构图(建图)的:


 核心概念:

SLAM的目标是:
👉 在不知道地图的情况下定位自己的位置
同时
👉 在不知道自己在哪的情况下构建地图

听起来像“鸡和蛋”的问题,但SLAM的关键在于循环迭代不断优化


怎么做到“同时”?

SLAM其实是一个循环过程,大致分为两个主要模块:

1. 定位(Localization)

通过传感器(相机、激光雷达、IMU 等)获取数据,
→ 与当前构建的地图进行比对,
→ 估计当前位置和姿态(位置 + 朝向)。

比如你走到一个角落,系统会通过视觉特征/激光点云等匹配出“你走到了地图的哪个位置”。

2. 建图(Mapping)

用传感器收集到的环境信息(比如墙、桌子、特征点等)
→ 根据定位的结果,把这些信息放入地图中,
→ 这样地图会一点点完善。

也就是说:你一边走,一边看。
你根据看见的环境估算你在哪,然后用这个“我在哪”去反推“这里长什么样”。


SLAM循环:边走边修正

SLAM不停地做这两件事:

  1. 估计当前的位姿(定位)

  2. 更新环境地图(建图)

而且这些是互相影响的:

  • 定位不准 → 地图会错

  • 地图错了 → 定位也会偏
    所以SLAM核心在于 后端优化(Graph Optimization),不断根据观测误差修正两者。


常见的SLAM类型

类型传感器特点
视觉SLAM(vSLAM)摄像头像人一样用眼睛看世界(ORB-SLAM, DSO)
激光SLAM激光雷达精度高,抗光照好(Cartographer, Gmapping)
RGB-D SLAM深度相机可获得丰富空间信息(像Kinect)
多传感器融合SLAM相机+IMU+雷达精度更高,适合自动驾驶

✨ 一个简化的流程如下:

  1. 初始化位姿

  2. 获取图像/激光/IMU数据

  3. 提取特征或扫描点

  4. 匹配当前帧和之前地图/关键帧(定位)

  5. 估计当前位姿

  6. 根据位姿将新环境信息加入地图

  7. (可选)进行回环检测 → 修正累计误差

  8. 重复1~7


SLAM就像在同时运行两个互相依赖的算法:

  • 一个估计“我在哪”(Pose Estimation)

  • 一个画出“周围长什么样”(Map Building)
    最终用优化算法把这两个过程不断“校准”。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐