为什么在SLAM中使用链式求导?为什么对微小扰动进行求导?

本文解析了SLAM中链式求导的应用,通过高斯牛顿法和微小扰动求导,揭示了如何将优化问题转化为寻找delta_x,展示了在PNP和微变量求导中的具体过程。非线性优化与微小变量求导是SLAM背后的数学工具。
摘要由CSDN通过智能技术生成
为什么在SLAM中使用链式求导?为什么对微小扰动进行求导?

链式求导是一个很常用、很简单的模型,但是为什么用这个模型呢?在SLAM十四讲中并没有对这个问题进行阐述。

这与非线性优化的方法有关,首先对于一个最小二乘问题:
min ⁡ x 1 2 ∥ f ( x ) ∥ 2 2 \min _{x} \frac{1}{2}\|f(\boldsymbol{x})\|_{2}^{2} xmin21f(x)22
高斯牛顿法是处理这个问题最简单的方法,它的做法是将f(x)进行泰勒展开:
f ( x + Δ x ) ≈ f ( x ) + J ( x ) Δ x f(\boldsymbol{x}+\Delta \boldsymbol{x}) \approx f(\boldsymbol{x})+\boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x} f(x+Δx)f(x)+J(x)Δx
然后开始求J最小时,delta_x的值。首先进行展开:
1 2 ∥ f ( x ) + J ( x ) Δ x ∥ 2 = 1 2 ( f ( x ) + J ( x ) Δ x ) T ( f ( x ) + J ( x ) Δ x ) = 1 2 ( ∥ f ( x ) ∥ 2 2 + 2 f ( x ) T J ( x ) Δ x + Δ x T J ( x ) T J ( x ) Δ x ) \begin{aligned} \frac{1}{2}\|f(\boldsymbol{x})+\boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x}\|^{2} &=\frac{1}{2}(f(\boldsymbol{x})+\boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x})^{T}(f(\boldsymbol{x})+\boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x}) \\ &=\frac{1}{2}\left(\|f(\boldsymbol{x})\|_{2}^{2}+2 f(\boldsymbol{x})^{T} \boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x}+\Delta \boldsymbol{x}^{T} \boldsymbol{J}(\boldsymbol{x})^{T} \boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x}\right) \end{aligned} 21f(x)+J(x)Δx2=21(f(x)+J(x)Δx)T(f(x)+J(x)Δx)=21(f(x)22+2f(x)TJ(x)Δx+ΔxTJ(x)TJ(x)Δx)
然后对delta_x进行求偏导,并令其为0:
J ( x ) T J ( x ) Δ x = − J ( x ) T f ( x ) \boldsymbol{J}(\boldsymbol{x})^{T} \boldsymbol{J}(\boldsymbol{x}) \Delta \boldsymbol{x}=-\boldsymbol{J}(\boldsymbol{x})^{T} f(\boldsymbol{x}) J(x)TJ(x)Δx=J(x)Tf(x)
这样得到的delta_x可以让惩罚函数达到最小。这就让函数从一个寻找最优x的问题转换成为寻找最优delta_x问题,而让x成为当前迭代的初始条件,这就是非线性优化、最小二乘方法的核心最底层的逻辑。

在这个过程中对x求导的过程变成了对delta_x求导数,这种方法对我们理解SLAM中的求导是十分有用的。

因此在PNP中,同样对微小变量delta_zeta进行求导。
∂ e ∂ δ ξ = lim ⁡ δ ξ → 0 e ( δ ξ ⊕ ξ ) δ ξ = ∂ e ∂ P ′ ∂ P ′ ∂ δ ξ \frac{\partial e}{\partial \delta \boldsymbol{\xi}}=\lim _{\delta \boldsymbol{\xi} \rightarrow 0} \frac{e(\delta \boldsymbol{\xi} \oplus \boldsymbol{\xi})}{\delta \boldsymbol{\xi}}=\frac{\partial \boldsymbol{e}}{\partial \boldsymbol{P}^{\prime}} \frac{\partial \boldsymbol{P}^{\prime}}{\partial \delta \boldsymbol{\xi}} δξe=δξ0limδξe(δξξ)=PeδξP
这里的 ⊕ 指李代数上的左乘扰动。第二项为变换后的点关于李代数的导数,
∂ P ′ ∂ δ ξ = [ I , − P ′ ∧ ] \frac{\partial \boldsymbol{P}^{\prime}}{\partial \delta \boldsymbol{\xi}}=\left[\boldsymbol{I},-\boldsymbol{P}^{\prime \wedge}\right] δξP=[I,P]

推导参考

∂ P ~ ′ ∂ ξ = ∂ ( T ⋅ P ~ ) ∂ ξ = ∂ ( exp ⁡ ( ξ ∧ ) P ~ ) ∂ δ ξ (  左扰动模型  ) \begin{aligned} &\frac{\partial \tilde{\mathbf{P}}^{\prime}}{\partial \boldsymbol{\xi}}=\frac{\partial(\mathbf{T} \cdot \tilde{\mathbf{P}})}{\partial \boldsymbol{\xi}}\\ &=\frac{\partial\left(\exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}\right)}{\partial \delta \boldsymbol{\xi}} \quad(\text { 左扰动模型 }) \end{aligned} ξP~=ξ(TP~)=δξ(exp(ξ)P~)( 左扰动模型 )

= lim ⁡ δ ξ → 0 exp ⁡ ( δ ξ ∧ ) exp ⁡ ( ξ ∧ ) P ~ − exp ⁡ ( ξ ∧ ) P ~ δ ξ ≈ lim ⁡ δ ξ → 0 ( I + δ ξ ∧ ) exp ⁡ ( ξ ∧ ) P ~ − exp ⁡ ( ξ ∧ ) P ~ δ ξ \begin{array}{l} =\lim _{\delta \xi \rightarrow 0} \frac{\exp \left(\delta \boldsymbol{\xi}^{\wedge}\right) \exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}-\exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}}{\delta \boldsymbol{\xi}} \\ \approx \lim _{\delta \xi \rightarrow 0} \frac{\left(\mathbf{I}+\delta \boldsymbol{\xi}^{\wedge}\right) \exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}-\exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}}{\delta \boldsymbol{\xi}} \end{array} =limδξ0δξexp(δξ)exp(ξ)P~exp(ξ)P~limδξ0δξ(I+δξ)exp(ξ)P~exp(ξ)P~

= lim ⁡ δ ξ → 0 δ ξ ∧ exp ⁡ ( ξ ∧ ) P ~ δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ δ ρ 0 T 0 ] [ R ⋅ P + t 1 ] δ ξ = lim ⁡ δ ξ → 0 [ δ ϕ ∧ ( R ⋅ P + t ) + δ ρ 0 ] δ ξ \begin{array}{l} =\lim _{\delta \xi \rightarrow 0} \frac{\delta \boldsymbol{\xi}^{\wedge} \exp \left(\boldsymbol{\xi}^{\wedge}\right) \tilde{\mathbf{P}}}{\delta \boldsymbol{\xi}} \\ =\lim _{\delta \xi \rightarrow 0} \frac{\left[\begin{array}{cc} \delta \boldsymbol{\phi}^{\wedge} & \delta \boldsymbol{\rho} \\ \mathbf{0}^{T} & 0 \end{array}\right]\left[\begin{array}{c} \mathbf{R} \cdot \mathbf{P}+\mathbf{t} \\ 1 \end{array}\right]}{\delta \boldsymbol{\xi}} \\ =\lim _{\delta \xi \rightarrow 0} \frac{\left[\begin{array}{c} \delta \boldsymbol{\phi}^{\wedge}(\mathbf{R} \cdot \mathbf{P}+\mathbf{t})+\delta \boldsymbol{\rho} \\ 0 \end{array}\right]}{\delta \boldsymbol{\xi}} \end{array} =limδξ0δξδξexp(ξ)P~=limδξ0δξ[δϕ0Tδρ0][RP+t1]=limδξ0δξ[δϕ(RP+t)+δρ0]

= [ I − ( R ⋅ P + t ) ∧ 0 T 0 T ] = [ I − P ′ ∧ 0 T 0 T ] \begin{array}{l} =\left[\begin{array}{cc} \mathbf{I} & -(\mathbf{R} \cdot \mathbf{P}+\mathbf{t})^{\wedge} \\ \mathbf{0}^{T} & \mathbf{0}^{T} \end{array}\right] \\ =\left[\begin{array}{cc} \mathbf{I} & -\mathbf{P}^{\prime \wedge} \\ \mathbf{0}^{T} & \mathbf{0}^{T} \end{array}\right] \end{array} =[I0T(RP+t)0T]=[I0TP0T]

这里面用到了左乘扰动模型去寻找流形空间中的优化,实际上这个可以理解成为旋转矩阵与旋转矢量的关系。

因此,通过链式求导把这个问题给解决了,与非线性优化的处理是同一个思路,只不过用P’对delta_zeta求导正好有现成的数学工具可以用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

擦擦擦大侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值