再论“卡尔曼滤波”

考虑轨道上的一个小车,无外力作用,它在时刻t的状态向量x(t)只与x(t-1)相关:
(状态向量就是描述它的t=0时刻所有状态的向量,比如:
[速度大小5m/s, 速度方向右, 位置坐标0],反正有了这个向量就可以完全预测t=1时刻小车的状态)

x(t)=F(x(t-1))

那么根据t=0时刻的初值x(0),理论上我们可以求出它任意时刻的状态。

当然,实际情况不会这么美好。

这个递推函数可能会受到各种不确定因素的影响(内在的外在的都算,比如刮风下雨地震,小车结构不紧密,轮子不圆等等)导致x(t)并不能精确标识小车实际的状态。

我们假设每个状态分量受到的不确定因素都服从正态分布。

现在仅对小车的位置进行估计

请看下图:t=0时小车的位置服从红色的正态分布。

根据小车的这个位置,我们可以预测出t=1时刻它的位置:

 

分布变“胖”了,这很好理解——因为在递推的过程中又加了一层噪声,所以不确定度变大了。

为了避免纯估计带来的偏差,我们在t=1时刻对小车的位置坐标进行一次雷达测量,当然雷达对小车距离的测量也会受到种种因素的影响,于是测量结果告诉我们,小车t=1时的位置服从蓝色分布:

好了,现在我们得到两个不同的结果。前面有人提过加权,Kalman老先生的牛逼之处就在于找到了相应权值,使红蓝分布合并为下图这个绿色的正态分布(啰嗦一句,这个绿色分布均值位置在红蓝均值间的比例称为Kalman增益(比如下图中近似0.8),就是各种公式里的K(t))

你问为什么牛逼?
绿色分布不仅保证了在红蓝给定的条件下,小车位于该点的概率最大,而且,而且,它居然还是一个正态分布!
正态分布就意味着,可以把它当做初值继续往下算了!这是Kalman滤波能够迭代的关键。

最后,把绿色分布当做第一张图中的红色分布对t=2时刻进行预测,算法就可以开始循环往复了。

你又要问了,说来说去绿色分布是怎么得出的呢?

其实可以通过多种方式推导出来。我们课上讲过的就有最大似然法、Ricatti方程法,以及上面参考文献中提及的直接对高斯密度函数变形的方法,这个不展开说了。

另外,由于我只对小车位移这个一维量做了估计,因此Kalman增益是标量,通常情况下它都是一个矩阵。而且如果估计多维量,还应该引入协方差矩阵的迭代,我也没有提到。如果楼主有兴趣,把我提及那篇参考文献吃透,就明白了。

Kalman滤波算法的本质就是利用两个正态分布的融合仍是正态分布这一特性进行迭代而已。


链接:https://www.zhihu.com/question/23971601/answer/46480923
 

从提供的引用可知,相关论文对无人机状态估计领域常用的卡尔曼滤波Kalman Filter, KF)及其衍生算法,如扩展卡尔曼滤波(Extended Kalman Filter, EKF)、无迹卡尔曼滤波(Unscented Kalman Filter, UKF)、库图尔卡尔曼滤波(Cubature Kalman Filter, CKF),以及鲁棒M - 估计和鲁棒立方卡尔曼滤波(Robust Cubature Kalman Filter, RCKF)等方法进行了综述,还探讨了其在无人机位置跟踪、迎角和俯仰角跟踪、方向角度跟踪等方面的应用和研究进展 [^1]。 为查找卡尔曼滤波研究论文,可通过以下途径: - **学术数据库**:如中国知网(CNKI)、万方数据、维普资讯等国内数据库,以及IEEE Xplore、ScienceDirect、ACM Digital Library等国外数据库。在这些数据库的搜索框中输入“卡尔曼滤波”,并可根据需要添加具体的研究方向,如“无人机状态估计中的卡尔曼滤波”等关键词,来精准定位所需论文。 - **学术搜索引擎**:像Google Scholar,它能搜索到广泛的学术文献,包括期刊论文、会议论文等。输入相关关键词后,可根据论文的引用次数、发表时间等进行筛选。 - **专业学术论坛和社区**:例如ResearchGate,研究人员会在上面分享自己的研究成果和论文,还可以关注相关领域的专家,获取他们最新的研究动态。 以下是一个使用Python的`selenium`库模拟在Google Scholar上搜索卡尔曼滤波研究论文的简单示例代码: ```python from selenium import webdriver from selenium.webdriver.common.by import By import time # 设置Chrome浏览器驱动路径 driver_path = 'path/to/chromedriver' driver = webdriver.Chrome(executable_path=driver_path) # 打开Google Scholar搜索页面 search_query = '卡尔曼滤波研究论文' url = f'https://scholar.google.com/scholar?q={search_query}' driver.get(url) # 等待页面加载 time.sleep(5) # 获取搜索结果 results = driver.find_elements(By.CSS_SELECTOR, 'h3.gs_rt') for result in results: print(result.text) # 关闭浏览器 driver.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值