想象你被蒙上眼睛,扔进一座从未有人进去过的巨大地下商场。你的任务是:① 搞清楚自己此刻站在哪里(定位);② 把整座商场的布局画下来(建图)。可问题是——没有地图,你凭什么判断自己站在哪?不知道自己在哪,你又凭什么画地图?这就是著名的“鸡生蛋”难题。 SLAM(Simultaneous Localization and Mapping,同步定位与建图)就是人类教给机器人的一套“蒙眼探险”心法:机器人在完全陌生的环境里,一边摸索前进,一边在脑海里画地图,画一段、走一段、随时修正。扫地机器人能记住客厅的墙在哪里,自动驾驶汽车能在没有 GPS 的地下车库穿行,AR 眼镜能把虚拟箭头“钉”在真实地面上——背后都是这位蒙眼探险家在工作。 这篇文章会用“蒙眼探险家”这个比喻,带你走一遍 SLAM 的完整流程:它如何感知世界、如何边定位边建图、如何矫正越走越歪的误差,最后又如何把草图变成可用的地图。
对 AI 从业者而言,SLAM 是打通 3D 视觉、机器人导航与自动驾驶的关键技能,理解它的核心模块与工程取舍,是你进入机器人 AI 方向的必修课。
目录
可视化演示
通过交互式动画展示梯度下降算法在损失函数曲面上的优化轨迹,可调整学习率观察收敛行为。
本节配有交互动效(进入视口后自动加载,约 3KB)。
梯度下降优化轨迹 青色点为当前参数位置,沿梯度反方向下降 橙色轨迹为历史优化路径 θ ← θ - η∇L(θ) 调整学习率观察收敛速度变化
SLAM 基本概念:蒙眼探险的双重困境
探险家小李被蒙着眼带进一座从没来过的大型仓储中心,他立刻面临一个死循环:要判断“我在哪”,得先有一张地图;要画一张地图,又得先知道“我在哪”。现实中没人会给机器人一张完美地图,也没人会给它装一个外挂 GPS 定位器——它必须像小李一样,在完全未知的环境里,靠自己的双脚和感官同时解决这两个问题。SLAM 这个名字本身就是答案:同步(Simultaneous)地做定位(Localization)与建图(Mapping),两个字缺一不可。
把“同步”翻译成数学语言,就是下面这个概率模型:机器人在时刻 1 到 t 的位置记作 x₁:t,地图记作 m,期间传感器观察到的数据是 z₁:t,自己发出的运动指令是 u₁:t。SLAM 要做的,是估计出“轨迹和地图”在世界上的联合后验概率:
小李最后悟出:与其在原地纠结“先有鸡还是先有蛋”,不如先迈一步、看一眼、记一笔,再迈一步。机器人也是这样——每一步都用“当前猜测的轨迹”去补一小块地图,又用“刚补的地图”去修正轨迹的猜测,两步交替,螺旋上升。这正是 SLAM 能走出迷宫的秘密:不追求一步到位,而是在行走中让定位和建图互相成就。
- 联合后验概率$P(x_{1:t}, m \mid z_{1:t}, u_{1:t})$ 表示“在已知全部观测和运动指令的条件下,轨迹和地图同时成立的概率”,它是 SLAM 的终极目标。
- 地图后验$P(m \mid x_{1:t}, z_{1:t})$ 说——如果轨迹已知,地图就只是“把这些观测拼起来”的体力活,简单多了。
- 轨迹后验$P(x_{1:t} \mid z_{1:t}, u_{1:t})$ 说——轨迹可以靠运动指令和观测独立估计,这就是前端里程计的根据地。
传感器流派:手电筒与探测杖
小李出发前要选装备。他有两件工具:一只强光手电筒(相机)和一根可伸缩的探测杖(激光雷达)。手电筒看得远、能看到墙上的颜色和文字,但一片漆黑或全是白墙时几乎没用;探测杖能精确告诉你“前方 2.3 米有墙”,却不知道那面墙是纸做的还是砖做的。视觉 SLAM 与激光 SLAM 的对决,本质就是这两件工具的取舍。
激光 SLAM 用探测杖思维工作:激光雷达发射光束,光碰到障碍物弹回来,飞行时间直接换算出距离,得到一簇精确的 2D/3D 点云。它不依赖光照,夜里也能干活,测量误差小,所以扫地机器人和自动驾驶的主流方案都有它。缺点是贵——一颗好的激光雷达顶得上好几部手机,而且它只回答“墙在哪”,不回答“墙是什么”。
视觉 SLAM 用手电筒思维工作:普通相机拍下连续帧图像,靠“认出上一帧里的同一个角落”来推断相机移动了多少、朝向转了多少。它便宜、轻便、还自带颜色纹理信息,能顺便做语义理解。但凡是手电筒怕的情况它都怕:太暗、太亮、一面白墙、快速晃动,都会让特征“丢失”,导致跟踪失败。视觉 SLAM 里最核心的几何,就藏在手电筒“看”的投影关系里:
选完装备小李出发了。探测杖派的机器人在黑暗仓库里如鱼得水,却看不懂桌上的便签;手电筒派的机器人在明亮客厅里看得见沙发的颜色,却容易在纯白走廊里“失明”。真正的高手都知道:没有最好的流派,只有最合适的搭配——所以现代 SLAM 越来越多地让手电筒和探测杖一起上阵,再叠加惯性测量单元(IMU)在剧烈运动中“兜底”,这就是多传感器融合。
- 世界点$P$ 是地图或物体上的一个三维坐标点,比如墙角的那个棱。
- 外参变换$[R \mid t]$ 是相机在世界中的位姿,把世界坐标 P 变换到“以相机为原点”的坐标系。
- 内参投影$K$ 是相机内参(焦距、光心),把相机坐标系下的点映射到像素平面,最终得到像素坐标 $p$。
前端里程计:一步一估算
小李在黑暗中迈出了第一步。他没有地图,只能依靠“刚才那面墙上的裂纹”来判断自己移动了多少。前端里程计(Front-end Odometry)干的就是这个活:根据相邻时刻的传感器数据,估计机器人的运动增量——我这一步走了 0.3 米、向左转了 8 度。这个环节的输出是一串连续的“脚印”,SLAM 系统里所有其他模块都建立在这串脚印之上。
视觉里程计最主流的方法是特征点法:先在两张相邻图像里各自找出醒目的特征点(墙角的裂纹、砖缝的交叉点),然后把这些点一一配对,最后根据配对的几何关系解出两帧之间的运动。除了特征点法,还有直接法(跳过“找特征”这个环节,直接用像素亮度估计运动)和光流法(追踪像素在图像间的移动轨迹)。无论哪一种,核心都是同一个问题:找一组位姿变换 T,让“预测看到的特征位置”和“实际看到的特征位置”尽量吻合:
小李每迈一步就回头确认一下参照物,这套“看一步走一步”的流程会给他埋下一个隐患:每一次测量都有微小的误差,误差不消失,只会像滚雪球一样越滚越大。走十步感觉还好,走一千步,他手里的草图就开始歪歪扭扭了。这个麻烦,要交给后端优化去解决。
- 观测像素$p_i$ 是图像中第 $i$ 个特征点的实际像素坐标,由特征匹配得到。
- 重投影$\pi(T P_i)$ 是把地图点 $P_i$ 按当前猜测的位姿 $T$ 投影回图像平面得到的“预测位置”。
- 误差平方$\| p_i - \pi(T P_i) \|^2$ 是预测与实际的偏差平方,衡量这组位姿猜测有多“离谱”。
- 最优位姿$\arg\min_{T} \sum_i$ 表示在所有可能的位姿里,挑一个让所有特征点误差总和最小的。
后端优化:定期拉平画布
一个小时后,小李发现自己画的走廊越来越歪:明明感觉是直走的,墙线却偏了 15 度。这是因为前端里程计每次估计都有微小噪声,噪声累积起来就是大错。后端优化(Back-end Optimization)就像小李每隔一段就停下来,把整张画布摊开,重新审视所有脚印和墙壁观测,全局性地把歪掉的路迹拉平。
早期系统用滤波方法(如扩展卡尔曼滤波),每次只维护“当前的位姿和地图”,像记账一样逐笔修正,适合小场景;现代系统几乎都用图优化:把每一个关键位姿和地标看作“节点”,把观测关系看作“边”,整张图就是一张巨大的弹簧网络。优化的目的,就是拉扯所有弹簧,让整张网的张力最小:
这一拉,小李的走廊变直了,墙线重新对齐,之前的所有脚步都被重新“校准”了一遍。但注意,后端优化只能缓解缓慢累积的漂移,它救不了另一个致命问题——如果小李走着走着彻底走岔了路,把两间不同的房间误当成同一间,再强的弹簧也没法靠内部张力发现这个错误。这就要轮到一个“回头认路”的模块登场了。
- 约束误差$e_k(X)$ 是第 $k$ 条约束的误差向量,比如“根据 A 位姿预测地标位置”与“实际观测位置”之差。
- 信息矩阵$\Sigma_k^{-1}$ 是这条约束的协方差逆矩阵,测量噪声越小,它的“权重”越大。
- 总误差$\sum_k e_k^{\top} \Sigma_k^{-1} e_k$ 把所有弹簧的“马氏距离平方”加起来,构成整张网的总代价。
- 全局最优$\arg\min_{X}$ 表示在所有可能的位姿组合里,挑一组让总代价最小的——这就是“把画布拉平”的数学版本。
回环检测:认出旧地标
小李摸到一扇门,门把手上有一条独特的刮痕——他忽然觉得似曾相识:“等等,这不是我一开始进来的那扇门吗?”回环检测(Loop Closure)干的就是这件“认亲”的事:机器人通过当前看到的场景,在大脑里检索“我以前是不是来过这里”。如果能确认来过,就等于拿到了一个天大的好消息:一段走了半小时的路,首尾竟然相接,整段路程的累积漂移瞬间被这个闭环约束牢牢钉死。
怎么“认亲”?逐帧比对像素太笨了——仓库里可能有几百万帧图像。业界主流是用词袋模型(Bag of Words):把图像里提取的特征先聚类成一本“视觉单词书”(比如“矩形缺口”“圆根花纹”),每张图用一个向量记录“这本书里哪些单词出现了多少次”。于是,判断两张图像不像,就从“逐像素对比”变成了“比较两个向量”:
光“觉得像”还不够,工程上还会做几何校验(比如验证两边特征点的几何关系是否一致),防止机器人被相似的货架骗了。一旦回环确认,前面后端优化的“弹簧网络”就多了一条首尾相连的超强弹簧——小李发现自己在打转,于是把整段地图“咔哒”一声扣回正确位置,之前三十七分钟的漂移,在这一秒内清零。这也是可视化演示里蓝线瞬间跳回灰线的原理。
- 词袋向量$v_a$ 与 $v_b$ 分别是两张图的视觉单词计数向量,维度等于词典大小。
- L1 归一化$\dfrac{v_a}{\|v_a\|_1}$ 把计数变成“这一帧里每种单词的占比”,消除曝光、尺度差异的影响。
- 差向量求和$\left\| \cdot \right\|_1$ 把两个归一化向量的每个维度差取绝对值再求和,得到“差异度”。
- 相似度得分$s(v_a, v_b) = 1 - \frac{1}{2}\|\cdot\|_1$ 把差异度转成 0 到 1 的相似度,越接近 1 越可能是同一地点。
地图构建:把草图变成可用地图
迷宫终于走完了。小李手里有一大堆“脚印”和“观测”,但这份草图还只是一堆散乱的点线,没法直接用。地图构建(Mapping)的任务,就是把这堆原始观测整理成不同用途的地图产品。就像同一个商场,物业公司要的是建筑平面图,商家要的是租户分布图,顾客要的是“哪里有好吃的”——不同角色需要不同抽象层次的地图。
第一类是栅格地图:把空间切成一个个小方格,每个格子里存一个“被占据的概率”。它最直观,扫地机器人就是靠它判断“这块地板能不能走”。栅格地图的更新靠一条优雅的递推公式——对数几率(log-odds)更新:每个格子存一个对数概率值,每来一帧激光都累加一点新证据:
除了栅格地图,还有点云地图(成千上万个带坐标的三维点,精细到能看清桌角,适合三维重建)、拓扑地图(像地铁线路图一样只保留“节点—连线”,适合大规模场景的路线规划)和语义地图(在几何之上标注“这是门、那是沙发”,让机器人能听懂人类的指令)。小李最后把草图整理成三种地图:给导航用的栅格图、给重建用的点云图、给协作用的语义图——探险结束,他不但走出了迷宫,也真正“拥有”了这座迷宫。
- 对数几率$l(m_i)$ 是格子 $m_i$ 被占据的对数几率,$l = \log\frac{p}{1-p}$,值域覆盖整个实数轴,避免概率值被卡在 0 或 1。
- 历史证据$l(m_i \mid z_{1:t-1}, x_{1:t-1})$ 是此前所有帧积累的“墙/空地”证据。
- 本帧证据$l(m_i \mid z_t, x_t)$ 是当前这帧观测带来的新证据(激光扫到该格子记为正,扫过记为负)。
- 先验扣除减去先验 $l(m_i)$,保证纯先验状态下更新会回到原值,递推不自激。
AI 应用场景
扫地机器人与配送机器人
阶段:实时建图与定位(SLAM 前端 + 回环检测)
解决的问题:传统扫地机“随机乱撞”效率极低;采用激光/视觉 SLAM 后,机器人在首次清扫时边扫边建栅格地图,记住房间边界和障碍物位置,电量不足还能自动回充——回环检测保证它回到充电座时“认得出家门”,不会在地图上漂移出错。
具体案例:科沃斯、石头等品牌的旗舰扫地机器人在首次清扫时构建全屋栅格地图,用户可以在 App 上划分“禁区”和“清扫顺序”;回充时,机器人依托回环检测校准位姿,误差从米级收敛到厘米级。
手机 AR 导航与增强现实
阶段:视觉惯性 SLAM(VIO + 回环检测)
解决的问题:手机没有激光雷达,AR 应用必须在纯视觉条件下实时定位相机姿态。视觉 SLAM 从摄像头图像提取特征点,配合 IMU 惯性数据估算手机运动,让虚拟箭头、家具模型能稳定“钉”在真实地面上而不飘动。
具体案例:苹果 ARKit 与谷歌 ARCore 的核心就是视觉惯性 SLAM;宜家 Place 应用让你把沙发“放”进客厅实时预览,用户走动时虚拟沙发不会从地上漂走,靠的正是持续的姿态估计与回环校正。
无人机自主巡检与灾后搜救
阶段:多传感器融合 SLAM(视觉 + 激光 + IMU)
解决的问题:隧道、废墟、室内等 GPS 失效环境下,无人机无法用卫星定位,必须借助 SLAM 在陌生地形中边飞边建图;多传感器融合让无人机在粉尘遮挡激光、光线过暗看不清视觉的情况下依然能稳定飞行。
具体案例:电力巡检无人机在无 GPS 的变电站内自主飞行,用激光 SLAM 实时建图避障并按规划路线完成设备检查;地震救援机器人进入废墟后,通过 SLAM 逐步重建内部三维结构,帮助救援队判断安全通道。
Python 演示
# 玩具SLAM演示: 前端里程计的漂移累积与回环校正import mathimport random def run_slam(): random.seed(42) steps = 36 # 1) 生成真值轨迹: 绕一圈回到原点 (模拟一次回环闭环) truth = [(10.0 * math.cos(2 * math.pi * i / steps), 10.0 * math.sin(2 * math.pi * i / steps)) for i in range(steps)] # 2) 前端里程计: 每一步量测都带噪声, 误差慢慢累积 est = [(0.0, 0.0)] for i in range(1, steps): dx = truth[i][0] - truth[i - 1][0] dy = truth[i][1] - truth[i - 1][1] noise_x = random.gauss(0, 0.05) noise_y = random.gauss(0, 0.05) est.append((est[-1][0] + dx + noise_x, est[-1][1] + dy + noise_y)) # 3) 看看回环前的累积漂移有多大 gap_before = math.hypot(est[-1][0] - est[0][0], est[-1][1] - est[0][1]) print("before loop: est end=(%.2f, %.2f), drift=%.2f m" % (est[-1][0], est[-1][1], gap_before)) # 4) 回环校正: 把"终点应等于起点"当强约束, 线性分摊到每一步 corr_x = (est[0][0] - est[-1][0]) / (steps - 1) corr_y = (est[0][1] - est[-1][1]) / (steps - 1) corrected = [(x + corr_x * i, y + corr_y * i) for i, (x, y) in enumerate(est)] gap_after = math.hypot(corrected[-1][0] - corrected[0][0], corrected[-1][1] - corrected[0][1]) print("after loop: est end=(%.2f, %.2f), drift=%.3f m" % (corrected[-1][0], corrected[-1][1], gap_after)) print("drift reduced: %.2f m -> %.3f m (loop constraint)" % (gap_before, gap_after)) return gap_before, gap_after if __name__ == "__main__": run_slam()
noise_x = random.gauss(0, 0.05)模拟前端特征匹配每步的随机测量噪声est.append((est[-1][0] + dx + noise_x, est[-1][1] + dy + noise_y))里程计本质是“累加”,噪声也一起累加,这就是漂移的来源gap_before = math.hypot(est[-1][0] - est[0][0], est[-1][1] - est[0][1])回环前终点与起点的距离,量化了累积漂移corr_x = (est[0][0] - est[-1][0]) / (steps - 1)把“终点应等于起点”的强约束,摊成每步一个微小修正量if __name__ == "__main__":可执行入口,运行后直接观察漂移从大到小的变化
常见误区
误区我一直以为 SLAM 的流程是“机器人先绕场一周建好地图,然后拿着地图开始定位导航”,两条流水线先后执行。
正解SLAM 的精髓恰恰在“S“(同步)上。定位需要地图做参照,建图需要位姿做拼接,二者是互相缠绕、交替更新的——走一步,用猜测的位姿补一小块地图;再走一步,用刚补的地图修正位姿。蒙眼探险家要是坚持”先把图画完再定位”,那他连第一笔都画不下去。
为何常见:人脑里“看地图找路”的日常经验太根深蒂固,容易让人默认“地图先存在”,忽略了机器人面对的是完全未知环境。
误区激光雷达测距又准又不怕黑,视觉 SLAM 动不动就跟踪丢失,所以做 SLAM 应该无脑选激光方案。
正解两者是手电筒与探测杖的差别,而非高下之分。激光 SLAM 精度高、不受光照影响,但价格高昂、缺少语义;视觉 SLAM 成本低、自带颜色纹理,还能辅助语义理解,在纹理丰富的室内和 AR 场景中表现优异。现代系统更常做多传感器融合,取长补短。
为何常见:早期视觉 SLAM 技术不成熟,在光照剧变下确实容易失败,刻板印象因此流传下来。
误区我觉得回环检测就是拿当前图像和历史每一帧图像做像素级相似度对比,像玩找不同游戏一样。
正解逐像素比对计算量爆炸,也不抗扰动(光照、视角一变就失灵)。主流做法是词袋模型:把特征聚类成“视觉单词”,图像变成高维稀疏向量,用向量相似度快速检索候选帧,再做几何校验确认。就像小李认门不是靠回忆每一粒灰尘,而是靠门把手那道独特刮痕。
为何常见:人对“认出旧地点”的直觉往往是“整幅画面都记得”,忽视了压缩成特征/单词这一关键中间层。
误区我认为 SLAM 生成的地图就跟高德地图一样,有绝对坐标、经纬度,任何地方都能当基准。
正解SLAM 的地图是相对的、带不确定性的。它没有 GPS 那样的绝对坐标,坐标原点往往是“出发时刻的机器人位置”;里程计的累积漂移会让误差随路程增大,后端优化和回环检测只是把误差压小,无法完全消除。所以工程上常说 SLAM 地图“局部准、全局优”,用途是导航避障而非测绘测量。
为何常见:地图这个词让人本能联想到测绘级精度,忽略了 SLAM 的定位误差是概率性的、随路程累积的。
误区自动驾驶和手机导航不是都有 GPS 吗?那 SLAM 存在的意义大概只是锦上添花,有 GPS 就够用了。
正解GPS 在室内、地下车库、隧道、茂密城区和高架桥下会明显衰减甚至完全失效,精度也从米级到几十米不等。SLAM 不依赖外部信号,靠自己感知环境就能定位建图,是 GPS 拒止环境下的保底方案。更常见的做法是把两者融合:开阔地带信 GPS,进地下车库切 SLAM。
为何常见:大众日常接触的导航几乎全靠卫星定位,容易形成“定位=GPS”的思维定式,不了解机器人在室内的真实处境。
面试题
Q1. SLAM 中 S、L、A、M 四个字母分别代表什么?
- A.同步、定位、与、建图← 正确答案
- B.传感、激光、算法、建模
- C.扫描、线性、自适应、融合
- D.空间、定位、对齐、测量
答案:A。SLAM 是 Simultaneous Localization and Mapping 的缩写,即同步定位与建图。“同步”(S)正是它区别于“先建图后定位”的灵魂,其余选项属于望文生义。就像“同步”二字提醒蒙眼探险家:定位与建图必须同时进行,缺一不可。
Q2. 为什么说 SLAM 存在“鸡生蛋”难题?
- A.定位需要地图,建图需要位姿← 正确答案
- B.传感器先于算法被发明
- C.地图只能离线构建一次
- D.定位与建图互不相关
答案:A。定位需要地图作参照,建图需要知道机器人位姿才能把观测拼起来,二者互为前提,构成先有鸡还是先有蛋的循环。SLAM 的解法不是打破循环,而是让两者交替更新、同步推进;其他选项与“鸡生蛋”难题无关。
Q3. 下列哪些属于前端里程计的常用方法?
- A.特征点匹配法← 正确答案
- B.直接光度法← 正确答案
- C.光流追踪法← 正确答案
- D.词袋模型法
答案:ABC。前端里程计负责估计相邻帧间的运动,特征点法(匹配特征求解位姿)、直接法(最小化光度误差)、光流法(追踪像素运动)都是常用手段;词袋模型属于回环检测的位置识别工具,不属于前端里程计范畴。
Q4. 视觉 SLAM 相比激光 SLAM 的突出优势是?
- A.成本更低且有颜色纹理← 正确答案
- B.直接输出高精度距离
- C.在黑暗环境下更加稳定
- D.不需要任何光源辅助
答案:A。相机价格远低于激光雷达,且图像自带颜色纹理,便于特征提取与语义理解,这是视觉 SLAM 的主要优势。高精度距离、黑暗环境稳定都是激光 SLAM 的长处;相机在纯黑环境中也无法成像,谈不上不需要光源。
Q5. 后端优化最主要解决的问题是?
- A.修正累积漂移与位姿误差← 正确答案
- B.提取图像中的特征点
- C.识别并分类地图地标
- D.提高传感器采样频率
答案:A。前端里程计每步都有微小噪声,长期累积会让轨迹和地图逐渐漂移;后端优化(图优化/滤波)把所有位姿和地标拉成一张网络,全局调整以消除误差。特征提取属于前端,地标分类属于语义模块,采样频率由硬件决定。
Q6. 关于回环检测,下列说法正确的是?
- A.词袋模型能加速旧场景识别← 正确答案
- B.回环成功后位姿误差会大减← 正确答案
- C.回环检测跟前端模块无关
- D.回环只能依赖激光点云完成
答案:AB。词袋模型把图像变成向量,用相似度检索历史帧,能在大规模场景下快速找到回环候选;回环确认后给后端优化增加强约束,显著削减累积漂移,正如小李看到门把手刮痕后瞬间修正全图。回环检测与前端无关的说法错误,它依赖位置识别而非激光特有,视觉同样可以完成。
Q7. 栅格地图通常用什么方式更新占据概率?
- A.对数几率递推公式更新← 正确答案
- B.直接累加所有激光点数
- C.用深度学习分类每个栅格
- D.只保留最新一帧的观测
答案:A。栅格地图每个格子用 log-odds 值编码被占据概率,新观测到达时做“历史 + 本帧 − 先验”的递推累加,计算快且能实时更新。直接累加点数无法容纳“空”的证据,深度学习分类不是建图的核心手段,只保留最新一帧会丢失所有历史信息。
Q8. 下列哪个场景最适合用 SLAM 而非 GPS?
- A.地下停车场内的配送机器人← 正确答案
- B.高速公路上的长途货车
- C.开阔海面上的无人船
- D.有基站信号的开放城市
答案:A。地下停车场属于典型的 GPS 拒止环境,卫星信号被建筑遮挡,正需要 SLAM 靠自身传感器定位建图。高速公路、开阔海面、开放城市都有较好的卫星信号,GPS 优先甚至完全够用。
Q9. 图优化中“图”的节点和边分别代表什么?
- A.节点代表相机位姿或地标← 正确答案
- B.边代表观测约束关系← 正确答案
- C.节点代表地图像素值
- D.边代表传感器型号
答案:AB。图优化的“图”由节点与边组成,节点是待优化的相机位姿和地图地标,边是它们之间的观测约束(如“看到同一个地标”“前后帧运动一致”)。调整节点位置使所有边约束的总误差最小,就是优化的本质;像素值和传感器型号不属于图的语义。
Q10. 累积漂移误差主要来源于哪里?
- A.传感器噪声与特征误匹配← 正确答案
- B.服务器网络延迟过高
- C.地图文件占用内存太大
- D.机器人内置音箱音量
答案:A。前端里程计每次测量都存在传感器噪声,特征匹配也可能配错点,这些微小的单步误差在积分过程中不断累积,形成漂移。SLAM 用后端优化和回环检测来压制漂移;网络延迟、内存占用、音箱音量都与位姿估计无关。