卡尔曼滤波算法_导航系统设计专题(五)—扩展卡尔曼滤波(2)

a3e1a945b55667c14d4e7c3a59195efd.png

0 前言

a3e1a945b55667c14d4e7c3a59195efd.png

       上一篇围绕卡尔曼滤波算法的参数选取问题展开,针对非线性对象的状态估计问题,阐述扩展卡尔曼滤波(EKF)与卡尔曼滤波的区别以及扩展卡尔曼滤波算法的核心步骤。本篇将结合实际案例进行详解,同时,提供一种扩展卡尔曼滤波算法的C++代码实现方案。

a3e1a945b55667c14d4e7c3a59195efd.png

1 扩展卡尔曼滤波实例

a3e1a945b55667c14d4e7c3a59195efd.png

      这里以无人驾驶的测量障碍物的实际案例为例子展开,如下图所示,毫米波雷达能够测量障碍物在极坐标下离雷达的距离 、方向角 以及距离的变化率(径向速度),如下图所示。

5bd88396b67e85ea8e1b2d720d133179.png

预测更新

0c36b2981e54ffa43d23756cbc09d1e2.png 967a83b7a64921f4a332ff0a8c165e6c.png 87816727ed0b5dea8c190d677646feca.png

量测更新

f033b9c7c8eb46f7aa138c637cbff4ab.png b0ebcb53e047316bbcf3c9829533197a.png

此时,我们需要对H矩阵进行泰勒展开(线性化),得到其Jacobian矩阵,求解方法详解上一篇,这里不再赘述。

8b8ee3e7adc9c0c4f63c3e10fb82ff4e.png a3e1a945b55667c14d4e7c3a59195efd.png

2 扩展卡尔曼滤波的C++实现方案

a3e1a945b55667c14d4e7c3a59195efd.png

      完成以上推导后,我们将推导的过程写成代码。这里采用矩阵运算库Eigen进行矩阵运算,其运算效率较高,与自定义的矩阵运算库相比也更省心。

ExtendedKalmanFilter类的实现

050e1d7743af04f462e4b57c45909573.png 1058dfa3364d518d4c3a808abeb24ffa.png 437367db50e2aed8b9a7191a0cb4829c.png 1c98e3192aaf88e8dada971c2b5b5a9e.png

扩展卡尔曼滤波器的调用

1144ee62a57c27874debb1b9d6217b20.png 697333f4ccad43eb8799753a33dee086.png a3e1a945b55667c14d4e7c3a59195efd.png

3 总结

a3e1a945b55667c14d4e7c3a59195efd.png

      本篇围绕一个简单的案例展开,详解扩展卡尔曼滤波算法的实现,同时,提供了一种采用Eigen矩阵运算库的c++实现方案。下篇中,我们将围绕多传感器状态估计的最优估计问题展开论述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值