概率机器人(Probability Robotics)笔记 Chapter 10: SLAM

1. 简介

SLAM问题的输入只有测量和控制,没有地图和位姿估计。

有两种同等重要的SLAM问题:

  1. 在线SLAM(online SLAM):
    同时估计地图和即时位姿这两个后验,即 p ( x t , m ∣ z 1 : t , u 1 : t ) p(x_t,m|z_{1:t},u_{1:t}) p(xt,mz1:t,u1:t)
    称为在线SLAM的原因是,只估计时间 t t t存留的变量。
    很多在线SLAM算法是递增的,即只处理当前一帧观测和控制。
  2. 完整SLAM(full SLAM):
    估计整个位姿轨迹与地图,即 p ( x 1 : t , m ∣ z 1 : t , u 1 : t ) p(x_{1:t}, m| z_{1:t}, u_{1:t}) p(x1:t,mz1:t,u1:t)
    对之前的状态KaTeX parse error: Can't use function '\.' in math mode at position 5: x_1,\̲.̲.. x_{t-1}在状态空间上进行积分,既可以得到在线SLAM。

SLAM问题的另一个特点与估计问题的本质相关,即包含一个连续和一个离散问题:
连续问题与地图中物体的位置和机器人的位姿相关;
离散问题与物体的关联相关。
有时,显式估计地标的关联是有利的,在线后验为 p ( x t , m , c t ∣ z 1 : t , u 1 : t ) p(x_t,m,c_t|z_{1:t},u_{1:t}) p(xt,m,ctz1:t,u1:t)

不管是哪种SLAM问题,估计全部后验分布都是最好的,但通常不可行:

  1. 连续参数空间维度太高(地图);
  2. 离散关联变量的数量太大,很多算法的地图包括上万个特征。

本章介绍EKF算法,解决在线SLAM问题。

2. EKF SLAM

2.1 设定与假设

最早、最有影响力的SLAM算法就是基于EKF的。
EKF SLAM算法使用最大可能性数据关联,将EKF用于在线SLAM问题。
包含了多个近似和有限制的假设:

  1. 特征地图:地标数量较少(如一千个),且EKF本来就希望特征的模糊度小。
    EKF SLAM通常需要在特征探测上下功夫。
  2. 高斯噪声: 假设运动和测量有高斯噪声。
    后验的不确定性尽量小,否则线性化误差大。
  3. 正测量: 只能处理观测到地标这种正信息,而不能处理没看到地标的负信息。
2.2 已知关联下的SLAM

即只解决SLAM问题的连续部分。
同时估计地标的位置和机器人的位姿,需要把地标的坐标加入状态向量中,即
y t = ( x   y   θ   m 1 , x   m 1 , y   s 1   . . .   m N , x   m N , y   S N ) y_t=(x\ y\ \theta\ m_{1,x}\ m_{1,y}\ s_1\ ...\ m_{N,x}\ m_{N,y}\ S_N) yt=(x y θ m1,x m1,y s1 ... mN,x mN,y SN)
N N N是地图中地标总数,EKF估计在线后验 p ( y t ∣ z 1 : t , u 1 : t ) p(y_t|z_{1:t}, u_{1:t}) p(ytz1:t,u1:t)

算法 EKF_SLAM_known_correspondences( μ t − 1 , Σ t − 1 , u t , z t , c t \mu_{t-1}, \Sigma_{t-1}, u_t, z_t, c_t μt1,Σt1,ut,zt,ct):

02························
F x = ( 1 0 0 0 ⋯ 0 0 1 0 0 ⋯ 0 0 0 1 0 ⋯ 0 ) F_x=\left( \begin{array}{ccccc} 1 & 0 & 0 & 0 & \cdots & 0\\ 0 & 1 & 0 & 0 & \cdots & 0\\ 0 & 0 & 1 & 0 & \cdots & 0 \end{array}\right) Fx=100010001000000
矩阵右边是2N列个0。
是系数矩阵。

03························
μ ˉ t = μ t − 1 + F x T ( − v t ω t sin ⁡ μ t − 1 , θ + v t w t sin ⁡ ( μ t − 1 , θ + ω t Δ t ) v t ω t cos ⁡ μ t − 1 , θ − v t w t cos ⁡ ( μ t − 1 , θ + ω t Δ t ) ω t Δ t ) \bar{\mu}_t=\mu_{t-1}+F_x^T \left( \begin{array}{c} -\frac{v_t}{\omega_t}\sin\mu_{t-1,\theta}+\frac{v_t}{w_t}\sin(\mu_{t-1,\theta}+\omega_t\Delta t) \\ \frac{v_t}{\omega_t}\cos\mu_{t-1,\theta}-\frac{v_t}{w_t}\cos(\mu_{t-1,\theta}+\omega_t\Delta t) \\ \omega_t\Delta t \end{array}\right) μˉt=μt1+F

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值