type
Post
status
Published
date
Dec 5, 2025
slug
summary
SLAM的原理
tags
具身智能
ROS
SLAM
category
知识仓库
icon
password
😀
文章前言:
本文主要介绍SLAM的基本概念和原理

⭐ SLAM


SLAM,全称Simultaneous Localication And Mapping,即同时定位与地图创建。
 

视觉SLAM


1.科学原理:三角测量与对极几何

原理:利用摄像头拍摄的序列图像,像人类一样通过“观察”环境中的特征点,来推算机器人的运动轨迹并同时构建环境地图。
  • 运行轨迹推算:选定特征点(类似与物理里面的参考系,静止不动),相对特征点的位置变化即运动轨迹。
  • 三角测量 当你在位置 A 看到一个点 ,在位置 B 又看到了点 。只要你知道这两次看 点的角度差异,就能像做几何题一样,交叉出点 的三维坐标。
  • 数学支撑: 算法会不断寻找成千上万个这样的“歪脖子树”(特征点),通过计算这些点在图像里的像素位移,反推出相机的旋转 平移
  • 对极几何:对极几何(Epipolar Geometry)是视觉 SLAM 中用来描述“两台相机(或同一台相机在两个不同位置)观察同一个物体时,图像之间存在的几何约束关系。
 

2.科学原理:

A. 预测:
根据轮子转了多少圈(编码器)或者 IMU 的加速度,先大概猜一下机器人现在到了哪里。
B. 观测与匹配:
摄像头睁眼一看,发现刚才记住的那些特征点,在画面里的位置和“猜”的位置不太一样。
C. 联合优化(最关键一步):
算法会进行微调,就像在玩一个巨大的拨盘:
  • 如果我觉得地图是准的,那么我可能走歪了。
  • 如果我觉得我走得特别准,那可能是地图上的点标错了。
  • 最终方案: 寻找一个平衡点,让**“位姿”“地图点坐标”**同时微调,使得所有特征点在画面里的投影位置看起来最合理。这在专业上叫 BA (Bundle Adjustment) 光束法平差
 

3.举例说明

  • 初次定位:通过地图中的两个静止参照点建立坐标并确定自己的定位。
notion image
  • 第二次定位:选定三个静止参照点,两个已有参照点,一个新参照点,即可定位新参照物坐标人物的位移
notion image
  • 重复上述过程:选定参照物、合并两个新参照物、确定坐标、计算位移,即可得到全局地图。
notion image
  • SLAM中的定位问题:人物的轨迹
  • 特征地图:当我们将观测坐标和位移隐藏,只留下选定参照物的位置,就得到特征地图。
我们回到具体的使用。在视觉SLAM中,相机的位置就是目标位置,视觉图像中提取的特征点就是地图中的参照点。
在实际应用视觉SLAM中,参照物可以是二维码,颜色标记,电子标签,甚至可以是上述内容的组合。
 

激光SLAM


1.核心原理:扫描匹配

激光 SLAM 的本质是寻找两帧点云之间的重叠部分,从而算出机器人的位移
  • 打个比方: 想象你手里有两张剪纸,一张是房间现在的轮廓,另一张是 1 秒前你记下的轮廓。你不停地平移、旋转这两张剪纸,直到它们边缘完全重合。
  • 数学流程:
    • 1. 在第一帧点云里找一个点。
    • 2. 在第二帧里找它最近的邻居。
    • 3. 计算它们的距离。
    • 4. 不断迭代旋转和位移,直到所有点的距离之和最小

2.示意

而对于激光雷达,ROS地图初始为标记为-1的栅格地图,表示格子里的障碍物状况未知。
  • 激光雷达从扫描的初始角度射出一道激光,直到遇到障碍物停止,我们就可以标注出中间为空,目标为障碍点。
    • 空,标记为0。
    • 障碍物,标记为100。
    • 未探测,标记为-1。
notion image
  • 环顾一周,即可得到附近所有的栅格状态。
notion image
  • 目标移动到达第二个观测地点,重复上述过程,记录当前ip和扫描栅格状态。
Q:栅格除了标记的两种数值几乎完全一致,我们应该如何定位确定坐标呢?
  • 借助障碍物栅格的排布形状合并到一张地图中。
notion image
  • 共同点:用相似特征来拼接地图。
  • 重复上述过程:确定当前坐标,扫描一周栅格并记录,相同特征目标拼接,最后的到完整的栅格地图。
 

激光+视觉 SLAM


💡
融合SLAM的核心思路是将两者的观测数据进行对齐和联合优化。

单SLAM的局限性

  1. 视觉SLAM
      • 优点:获取及其丰富的纹理和语义信息。
      • 缺点:对光照敏感,并且在面对白墙或玻璃等“缺乏特征”的环境时会彻底迷失。
  1. 激光SLAM
      • 优点:测距精度极高,且自带光源“不怕黑”。
      • 缺点:缺乏语义和纹理信息,在例如笔直无凸起的及长走廊时由于扫描出的栅格排布完全一样,会出现退化问题。

松耦合

视觉系统和激光系统各自“单干”。视觉跑出一套相机的移动轨迹,激光雷达跑出一套雷达的移动轨迹。然后系统在最上层充当“裁判”,根据当前的环境状态给两边分配权重。比如当前处于黑夜,系统就更信任激光雷达给出的坐标;如果处于长走廊,系统就更信任相机给出的坐标。这种做法简单、运算要求低,但融合不够彻底。

紧耦合

这是目前的主流方案。在非常底层的特征提取阶段就把数据融在一起。比如,把视觉提取到的2D特征点,直接投影并匹配到激光雷达扫描出的3D点云上。系统会将视觉的像素误差和激光的测距误差放在同一个数学方程里进行联合求解。这种方式计算量更大,但能在极端恶劣环境下保持极高的精度和鲁棒性,最终得到带有颜色和丰富语义的高精度3D点云地图

📎 参考文章

 
💡
有关问题,欢迎您在底部评论区留言,一起交流~
ROS基础编译原理
Loading...