图优化slam以及非线性最小二乘

滤波方法不能处理大场景,在线slam

图优化方法可以处理大场景,完全slam

1.Graph—based SLAM

请添加图片描述

  • 用一个图(Graph)来表示SLAM问题
  • 图中的节点来表示机器人的位姿
  • 两个节点之间的边表示两个位姿的空间约束
  • Graph—based SLAM:构建图,并且找到一个最优的配置,让预测与观测的误差最小(非线性最小二乘)

2.非线性最小二乘(Non-Linear Least Square)

1.要解决的问题

  • 给定一个系统,其状态方程有f(x)=z描述,其中:

​ x为该系统的状态向量——即需要估计的值

​ f(x)是一个非线性的映射函数

​ 状态向量x,可以通过非线性函数f(x)映射得到z

​ z表示系统的观测值,可以通过传感器进行直接观测

  • 给定该系统的n个会有噪声的观测值 ( z 1 , . . . , z 2 ) (z_1,...,z_2) (z1,...,z2),估计状态向量x,使其经过f(x)映射之后的预测值和观测值得误差最小
  • 跟非线性最小二乘基本相同,不同之处在于f(x)是一个非线性函数

2.过程

请添加图片描述

  • x为机器人的位置
  • f(x)为传感器的观测模型(似然场模型或者重投影模型)
  • z为传感器的观测值,激光数据或者图像特征点
  • 找到最优的x,让预测和观测的误差最小

3.误差函数

  • 目标为最小化预测和观测的差,因此误差即为预测和观测的差

e i ( x ) = f i ( x ) − z i e_i(x)=f_i(x)-z_i ei(x)=fi(x)zi

  • 假设误差服从高斯分布,因此其对应的信息矩阵为${\sum}_i $,因此该观测值误差的平方定义为:

E i ( x ) = e i ( x ) T ∑ i e i ( x ) E_i(x)=e_i(x)^T{\sum}_ie_i(x) Ei(x)=ei(x)Tiei(x)

  • 因此,非线性最小二乘的目标函数为:

F ( x ) = ∑ E i ( x ) = ∑ e i ( x ) T ∑ i e i ( x ) m i n x F ( x ) F(x)=\sum E_i(x)=\sum {e_i(x)^T{\sum}_ie_i(x)}\\ \\ \underset{x}{min}F(x) F(x)=Ei(x)=ei(x)Tiei(x)xminF(x)

4.解决问题

  • 目标函数:

m i n x F ( x ) \underset{x}{min}F(x) xminF(x)

  • 直接想法:求F(X)关于变量x的导数,另其等于0,求解方程即可
  • 对于线性问题,该方法可以正确,但是对于非线性问题不正确
  • F(x)为关于x的非线性方程,能否把其化为关于x的线性方程——泰勒展开

5.线性化

  • F(x)是关于x的非线性函数的原因是:误差函数 e i ( x ) e_i(x) ei(x)是一个非线性函数。因此直接对误差函数 e i ( x ) e_i(x) ei(x)进行线性化即可。

e i ( x + △ x ) = e i ( x ) + J i ( x ) △ x e_i(x+△x)=e_i(x)+J_i(x)△x ei(x+x)=ei(x)+Ji(x)x

  • 其中J为映射函数对状态向量x的导数,称之为Jacobian矩阵(雅克比矩阵)

J i ( x ) = ( ∂ f i ( x ) △ x x 1 , ∂ f i ( x ) ∂ x 2 , . . . . , ∂ f i ( x ) ∂ x n ) J_i(x)=(\frac{\partial f_i(x)}{△x x_1},\frac{\partial f_i(x)}{\partial x_2},....,\frac{\partial f_i(x)}{\partial x_n}) Ji(x)=(xx1fi(x),x2fi(x),....,xnfi(x))

  • 因此函数F(x)的可化解为:

F ( x + △ x ) = e i ( x + △ x ) T ∑ i e i ( x + △ x ) F(x+△x)=e_i(x+△x)^T{\sum}_ie_i(x+△x) F(x+x)=ei(x+x)Tiei(x+x)

  • F(x)的化解:
    请添加图片描述

  • F(x+△x)为关于变量△x的二次函数

  • F(x+△x)的极值可通过令其关于△x的导数等于0求解得到:

∂ F ( x + △ x ) ∂ △ x = 2 b + 2 H △ x = 0 H △ x = − b △ x ∗ = − H − 1 b \frac{\partial F(x+△x)}{\partial △x}=2b+2H△x=0\\ H△x=-b\\ △x^*=-H^{-1}b xF(x+x)=2b+2Hx=0Hx=bx=H1b

6.流程

①线性化误差函数
e i ( x + △ x ) = e i ( x ) + J i ( x ) △ x e_i(x+△x)=e_i(x)+J_i(x)△x ei(x+x)=ei(x)+Ji(x)x
②构建线性系统
b T = ∑ ( e i T ∑ i J i ) H = ∑ ( J i T ∑ i J i ) b_T=\sum (e_i^T{\sum}_iJ_i) \\ H=\sum (J_i^T{\sum}_iJ_i) bT=(eiTiJi)H=(JiTiJi)
③求解线性系统

△ x ∗ = − H − 1 b △x^*=-H^{-1}b x=H1b

④更新解,并不断迭代直至收敛

x = x + △ x ∗ x=x+△x^* x=x+x

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

anthony-36

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

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

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

打赏作者

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

抵扣说明:

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

余额充值