扰动的意义

发布时间:2026/7/10 4:21:58
扰动的意义 在视觉SLAM和机器人学里“扰动”就是你给当前状态比如相机位姿加的一个微小的虚拟“推力”或“拧动”。它不是真实发生的运动而是你在数学上假想它动了一点点目的是为了观测“状态动一下误差会变多少”从而算出优化的方向。为了让你透彻理解我们从三个层面拆解1. 为什么非要用“扰动”数学上的无奈在优化位姿时我们需要求误差对位姿的导数雅可比矩阵。对于平移 t很简单tΔt直接加个微小位移就行。但对于旋转矩阵 R问题来了RΔR 是非法的因为两个旋转矩阵相加的结果不再是正交矩阵会破坏旋转的数学结构。解决办法我们不在旋转矩阵本身上加而是跑到它的“切空间”即李代数 so(3)里加一个微小向量 ϕ然后再通过指数映射 exp⁡([ϕ]×) 变回合法的旋转。这个在切空间里加的微小向量 ϕ就是我们说的“扰动”。2. 物理直觉上它是什么拧动假设相机当前姿态是 RR。左扰动exp⁡([ϕ]×)⋅R意思是在相机坐标系下给相机绕 X/Y/Z 轴分别拧动 ϕ1,ϕ2,ϕ3 这么小的角度。右扰动R⋅exp⁡([ϕ]×)意思是在世界自身坐标系下拧动它。ORB-SLAM3的MLPnP采用的是左扰动模型。这个 ϕ(ϕ1,ϕ2,ϕ3) 就是扰动量它的方向是旋转轴大小是旋转弧度。3. 在优化高斯-牛顿中它扮演什么角色试探工具在迭代优化中扰动是试探步长。整个流程是计算当前误差算出当前位姿下的重投影误差 e。施加虚拟扰动假想给位姿加了一个微小扰动 ϕ还有平移扰动 ρ。预测变化用雅可比矩阵 JJ 算出“如果加了扰动误差会变成 eJ⋅δ”。求最优步长解方程 HΔxb算出一个最优的扰动增量Δx(ϕ∗,ρ∗)。真正“吸收”扰动把这个最优扰动左乘到当前位姿上R←exp⁡([ϕ∗]×)Rt←tρ∗。 一句话总结代码中的对应你之前看到的-skew(R * p_i)即 −(Rpi)×​就是在问这样一个问题“如果我在相机坐标系下给相机施加一个微小的旋转扰动 ϕ那么空间中的3D点 pi​ 在相机坐标系下的位置会变动多少”它的数学答案就是Rpi 这个向量被扰动 ϕ 叉积后的反方向即 -ϕ×(Rpi) 的线性化形式。把这个搞透你对整个视觉SLAM后端优化的理解就打通了80%