SLAM中基于优化的方法

高斯牛顿

问题描述

给定一个目标函数,把激光帧间匹配问题转换为求解目标函数极值的问题:

E ( T ) = a r g min ⁡ T ∑ [ 1 − M ( S i ( T ) ) ] 2 E(T) = arg\min_T\sum[1-M(S_i(T))]^2 E(T)=argTmin[1M(Si(T))]2

其中,
T = ( T x , T y , T θ ) T= (T_x, T_y, T_{\theta}) T=(Tx,Ty,Tθ)表示机器人的位姿
p i = ( p i x , p i y ) p_i = (p_{ix}, p_{iy}) pi=(pix,piy)表示第 i i i个激光点的坐标
S i ( T ) S_i(T) Si(T)表示第 i i i个激光点位姿变换 T T T后的坐标

S i ( T ) = [ c o s T θ − s i n T θ T x s i n T θ c o s T θ T y 0 0 1 ] [ p i x p i y 1 ] S_i (T)= \begin{bmatrix} cosT_\theta & -sinT_\theta & T_x \\ sinT_\theta & cosT_\theta & T_y \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} p_{ix} \\ p_{iy} \\ 1 \end{bmatrix} Si(T)=cosTθsinTθ0sinTθcosTθ0TxTy1pixpiy1
M ( x ) M(x) M(x)表示似然厂地图中坐标 x x x处的值。

对待优化函数进行泰勒展开,最后可以得到,

Δ T = H − 1 ∑ [ ∇ M ( S i ( T ) ∂ S i ( T ) ∂ T ] T [ 1 − M ( S i ( T ) ) ] \Delta T = H^{-1}\sum[\nabla M(S_i(T)\frac{\partial S_i(T)}{\partial T}]^T[1 - M(S_i(T))] ΔT=H1[M(Si(T)TSi(T)]T[1M(Si(T))]

H = ∑ [ ∇ M ( S i ( T ) ) ∂ S i ( T ) ∂ T ] T [ ∇ M ( S i ( T ) ) ∂ S i ( T ) ∂ T ] H = \sum[\nabla M(S_i(T))\frac{\partial S_i(T)}{\partial T}]^T[\nabla M(S_i(T))\frac{\partial S_i(T)}{\partial T}] H=[M(Si(T))TSi(T)]T[M(Si(T))TSi(T)]

未知量: ∇ M ( S i ( T ) ) \nabla M(S_i(T)) M(Si(T)) ∂ S i ( T ) ∂ T \frac{\partial S_i(T)}{\partial T} TSi(T)

∂ S i ( T ) ∂ T = [ 1 0 − s i n T θ ∗ p i x − c o s T θ ∗ p i y 0 1 c o s T θ ∗ p i x − s i n T θ ∗ p i y ] \frac{\partial S_i(T)}{\partial T} = \begin{bmatrix} 1 & 0 & -sinT_\theta * p_{ix} - cosT_\theta * p_{iy} \\ 0 & 1 & cosT\theta * p_{ix} - sinT_\theta * p_{iy} \end{bmatrix} TSi(T)=[1001sinTθpixcosTθpiycosTθpixsinTθpiy]

∇ M ( S i ( T ) ) \nabla M(S_i(T)) M(Si(T))表示似然场地图中坐标 S i ( T ) S_i(T) Si(T)处的值, ∇ M ( S i ( T ) ) \nabla M(S_i(T)) M(Si(T))表示似然场对坐标位置的导数,需要通过差值求解。

地图双线性差值

对于2D激光雷达SLAM,建立的概率栅格地图是二维的,因此需要进行双线性插值。
在这里插入图片描述
Z 1 = f ( x 0 , y 0 ) ,    Z 2 = f ( x 1 , y 0 ) Z_1 = f(x_0, y_0),\ \ Z_2 = f(x_1, y_0) Z1=f(x0,y0),  Z2=f(x1,y0)
Z 3 = f ( x 1 , y 1 ) ,    Z 4 = f ( x 0 , y 1 ) Z_3 = f(x_1, y_1), \ \ Z_4 = f(x_0, y_1) Z3=f(x1,y1),  Z4=f(x0,y1)

令:

u = x − x 0 x 1 − x 0 ,   v = y − y 0 y 1 − y 0 u = \frac{x - x_0}{x_1 - x_0}, \ v = \frac{y - y_0}{y _1 - y_0} u=x1x0xx0, v=y1y0yy0

构造基函数:

l 1 ( u , v ) = ( 1 − u ) ( 1 − v ) l_1(u, v) = (1 - u )(1 - v) l1(u,v)=(1u)(1v)
l 2 ( u , v ) = u ( 1 − v ) l_2(u, v) = u(1 - v) l2(u,v)=u(1v)
l 3 ( u , v ) = u v l_3(u, v) = uv l3(u,v)=uv
l 4 ( u , v ) = ( 1 − u ) v l_4(u, v) = (1 - u)v l4(u,v)=(1u)v

差值函数为,

L 4 ( u , v ) = Z 1 l 1 ( u , v ) + Z 2 l 2 ( u , v ) + Z 3 l 3 ( u , v ) + Z 4 l 4 ( u , v ) L_4(u, v) = Z_1l_1(u, v) + Z_2l_2(u, v) + Z_3l_3(u ,v) + Z_4l_4(u, v) L4(u,v)=Z1l1(u,v)+Z2l2(u,v)+Z3l3(u,v)+Z4l4(u,v)

NDT方法

数学描述

T = ( T x , T y , T θ ) T = (T_x, T_y, T_\theta) T=(Tx,Ty,Tθ)表示需要求解的位姿变换
X i = [ x i y i ] X_i = \begin{bmatrix} x_i \\ y_i \end{bmatrix} Xi=[xiyi]表示第 i i i个激光点的坐标。
X i ′ X_i^{'} Xi表示第 i i i个激光点经过位姿变换 T T T后的坐标
X i ′ = ( c o s T θ − s i n T θ s i n T θ c o s T θ ) ( x i y i ) + ( T x T y ) X_i^{'} = \begin{pmatrix} cosT_\theta & -sinT_\theta \\ sinT_\theta & cosT_\theta \end{pmatrix} \begin{pmatrix} x_i \\ y_i \end{pmatrix} +\begin{pmatrix} T_x \\ T_y \end{pmatrix} Xi=(cosTθsinTθsinTθcosTθ)(xiyi)+(TxTy)

q i , ∑ i q_i, \sum_i qi,i表示点 X i X_i Xi对应的高斯分布均值和方差

当前激光点 i i i的得分为:

s c o r e i = e x p ( − X i ′ − q i T ∑ i − 1 ( X i ′ − q i ) 2 ) {score}_i = exp (-\frac{{X_i^{'}-q_i}^T\sum_i^{-1}(X'_i - q_i)}{2}) scorei=exp(2XiqiTi1(Xiqi))

q = X i ′ − q i q = X'_i - q_i q=Xiqi,则
s o r c e i = e x p ( − q T ∑ i − 1 q 2 ) sorce_i = exp(-\frac{q^T\sum_i^{-1}q}{2}) sorcei=exp(2qTi1q)

牛顿法

假设目标函数为:

m i n f ( x ) minf(x) minf(x)

等价于求一介导数的零点:

g ( x ) = f ′ ( x ) = 0 g(x) = f'(x) = 0 g(x)=f(x)=0
泰勒展开可以得到:
g ( x + Δ x ) = g ( x ) + ∂ g ( x ) ∂ x = 0 g(x + \Delta x) = g(x) + \frac{\partial g(x)}{\partial x} = 0 g(x+Δx)=g(x)+xg(x)=0
∂ g ( x ) ∂ x Δ x = − g ( x ) \frac{\partial g(x)}{\partial x} \Delta x = -g(x) xg(x)Δx=g(x)

等价于

H Δ x = − J H\Delta x = -J HΔx=J
其中 H ( x ) H(x) H(x)是海塞矩阵, J J J是雅克比矩阵。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值