slam::滤波

什么是滤波?

对于两个位置有两个结果,置信度不同。将两个位置值,置信度(协方差矩阵)送给kalman filter获得最佳的估计。(predict update)

卡尔曼滤波全程只关注两个东西东西,一个是估计的最佳值,另一个是该值的不确定性

状态可以看作是机器人或者环境中可能会对未来产生变化的因素

比如说机器人的位姿R和t,机器人的运动速度v,环境中的路标点l等

我们假设x_k位机器人的状态,在SLAM的整个过程中,我们能获取到两种数据:控制数据和测量数据。

1.控制数据是机器人记录自身运动的传感器获取的数据,比如IMU中的陀螺仪可以测量角速度、加速度计可以测量运动的加速度。

2.测量数据则是机器人记录环境信息的传感器获取的数据,比如相机可以将环境转化为二维的图像像素、激光雷达捕捉环境中的信息生成点云。

假设控制数据为u_k,运动噪声epsilon_k,那么机器人的运动用一个运动方程来表达。

因为假设了马尔科夫性,所以当前时刻状态只与上一时刻有关,它表示从k-1时刻到k时刻机器人状态发生了怎样的变化

x_{k}=f\left ( x_{k-1},u_{k} \right )+\varepsilon _{k}

假设测量数据为z_k,测量噪声为delta_k,那么机器人的测量可以用一个观测方程来表达,它表达在k时刻所在的位置观测到路标点产生测量数据。

z_{k}=h_{x_{k}}+\delta _{k}

那么,状态估计其实就是用过去的数据来估计当前的状态

由于状态不是直接得到的,而且方程还受到噪声的影响,因此状态其实是符合某种概率分布的随机变量,而状态估计实际上估计当前的状态分布。

隐马尔可夫模型,状态不能直接得到,但是可以通过测量观察到。

贝叶斯滤波:只要知道初始状态分布、运动方程的状态转移概率和观测方程的测量概率,贝叶斯滤波就可以滤起来了。

卡尔曼滤波=贝叶斯滤波+线性高斯系统

在线性系统中表达为:x_{k}=A_{k}x_{k-1}+B_{k}u_{k}+\varepsilon_{k}

而观测方程在线性系统中的表达为

z_{k}=C_{k}x_{k}+\delta _{k}

与此同时,运动噪声和测量噪声都是随机高斯噪声,即

\varepsilon _{k}~N(0,R_k),\delta ~N(0,Q_{k})

因此,运动方程的状态转移概率和观测方程的测量概率都相应地满足高斯分布

p(x_{k}|x_{k-1},u_{k})\sim N(A_{k}x_{k-1}+B_{k}u_{k},R_{k})

p(z_{k}|x_{k})\sim N(C_{k}x_{k},Q_{k})

卡尔曼滤波关心的是均值和方差

\bar{u}_{k}=A_{k}u_{k-1}+B_{k}u_{k}

\bar{\Sigma _{k}} =A_{k}\Sigma _{k-1}A_{k}^{T}+R_{k}

K_{k}=\bar{\Sigma _{k}C_{k}^{T}}(C_{k}\bar{\Sigma _{k}}+Q_{k})^{-1}

u_{k}=\bar{u_{k}}+K_{k}(z_{k}-C_{k}\bar{u_{k}})

\Sigma _{k}=(I-K_{k}C_{k})\bar{\Sigma _{k}}

SLAM中的卡尔曼滤波:究竟滤了谁? - 知乎 (zhihu.com)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值