SLAM中的非线性优化方法

文章介绍了SLAM中非线性优化的重要性,涉及矩阵求导、病态和奇异矩阵的概念。高斯牛顿法作为优化方法,其步骤包括计算雅可比矩阵和解增量方程。文章通过曲线拟合问题举例,展示了如何应用该方法解决最小二乘问题,并提到了Ceres和G2O库在求解此类问题中的应用。
摘要由CSDN通过智能技术生成

SLAM中的非线性优化方法

理论基础

矩阵求导

若a和A不是关于x的函数矩阵,则有:

∂ a ⋅ x d x = a ∂ x T A ⋅ x d x = 2 x T A ∂ u T ⋅ v d x = u T ⋅ ∂ v ⋅ x d x + v T ⋅ ∂ u ⋅ x d x \frac{\partial a\cdot x}{\mathrm{d}x}=a\\ \frac{\partial x^TA\cdot x}{\mathrm{d}x}=2x^TA\\ \frac{\partial u^T\cdot v}{\mathrm{d}x}= u^T\cdot\frac{\partial v\cdot x}{\mathrm{d}x}+v^T\cdot\frac{\partial u\cdot x}{\mathrm{d}x}\\ \\ dxax=adxxTAx=2xTAdxuTv=uTdxvx+vTdxux

病态矩阵:Ax=b求解时,x+一个小的增量,结果有很大波动。

奇异矩阵:Ax=0有无穷多解,AX=b有无穷多解或无解,系数矩阵A不是行满秩 A的行列式为0

为了求解 H Δ = g , H = J T J H\Delta=g,H=J^TJ HΔ=g,H=JTJ需要对H求逆,而H为半正定矩阵,可能为病态或者奇异,此时稳定性较差,可能不收敛,即使H是非病态和非奇异,也有可能因为 Δ x \Delta x Δx过大而导致不收敛。
在这里插入图片描述
在这里插入图片描述
优化问题具体步骤
1.给定初值 x 0 x_0 x0
2.对于第k次迭代,寻找一个迭代量 Δ x \Delta x Δx,使得 ∣ ∣ f ( x + Δ x k ) ∣ ∣ 2 2 ||f(x+\Delta x_k)||^2_2 ∣∣f(x+Δxk)22达到最小值。
3.若 Δ x \Delta x Δx足够小,则停止。
4.否则令 x k + 1 = x k + Δ x k x_k+1 = x_k +\Delta x_k xk+1=xk+Δxk返回第二步。

高斯牛顿法的具体步骤
1.给定初值 x 0 x_0 x0
2.对于第k次迭代,计算当前迭代的雅可比矩阵 J ( x k ) J(x_k) J(xk)和误差 f ( x k ) f(x_k) f(xk)
3.求解增量方程 H Δ x = g , H = J J T , g = − J T f ( x ) H\Delta x = g,H=JJ^T,g=-J^Tf(x) HΔx=gH=JJTg=JTf(x)


待更新:

编程实现

SLAM十四讲第六讲课后习题,曲线拟合问题。

拟合一条满足一下方程的曲线:

y = e x p ( a x 2 + b x + c ) + w y=exp(ax^2+bx+c)+w y=exp(ax2+bx+c)+w

a,b,c为曲线参数,w为高斯噪声,假设有N个关于x,y的观测数据点,根据这些点来求出曲线的参数,那么可以求解以下的最小二乘问题以估计曲线参数:

m i n a , b , c 1 2 ∑ i = 1 N ∣ ∣ y i − e x p ( a x i 2 + b x i + c ) ∣ ∣ 2 \mathop{min} \limits_{a,b,c} \frac12 \sum_{i=1}^{N}{||y_i-exp(ax_i^2+bx_i+c)||^2} a,b,cmin21i=1N∣∣yiexp(axi2+bxi+c)2

定义误差为:

e i = y i − ( a x i 2 + b x i + c ) e_i = y_i-(ax_i^2+bx_i+c) ei=yi(axi2+bxi+c)

那么,每个误差项对于状态向量的导数为:

∂ e ∂ a = − x i 2 e x p ( a x i 2 + b x i + c ) ∂ e ∂ b = − x i e x p ( a x i 2 + b x i + c ) ∂ e ∂ a = − e x p ( a x i 2 + b x i + c ) \frac{ \partial e }{ \partial a }=-x_i^2exp(ax_i^2+bx_i+c)\\ \frac{ \partial e }{ \partial b }=-x_iexp(ax_i^2+bx_i+c)\\ \frac{ \partial e }{ \partial a }=-exp(ax_i^2+bx_i+c) ae=xi2exp(axi2+bxi+c)be=xiexp(axi2+bxi+c)ae=exp(axi2+bxi+c)

于是 J = [ ∂ e ∂ a , ∂ e ∂ b , ∂ e ∂ c ] T J=[\frac{\partial e}{\partial a},\frac{ \partial e}{\partial b},\frac{ \partial e}{\partial c}]^T J=[ae,be,ce]T

ceres库求解曲线拟合问题

G2O库求解曲线拟合问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值