Questions tagged «kalman-filters»

卡尔曼滤波器是一种数学方法,它使用随时间推移观察到的噪声测量值来产生趋于更接近测量值及其相关计算值的真实值的值。


4
如何直观地理解卡尔曼增益?
该卡尔曼滤波算法的工作原理如下 初始化和。x^0|0x^0|0 \hat{\textbf{x}}_{0|0}P0|0P0|0\textbf{P}_{0|0} 每次迭代k=1,…,nk=1,…,nk=1,\dots,n 预测 预测(先验)状态估计 预测(先验)估计协方差更新x^k|k−1=Fkx^k−1|k−1+Bkukx^k|k−1=Fkx^k−1|k−1+Bkuk \hat{\textbf{x}}_{k|k-1} = \textbf{F}_{k}\hat{\textbf{x}}_{k-1|k-1} + \textbf{B}_{k} \textbf{u}_{k} Pk|k−1=FkPk−1|k−1FTk+QkPk|k−1=FkPk−1|k−1FkT+Qk \textbf{P}_{k|k-1} = \textbf{F}_{k} \textbf{P}_{k-1|k-1} \textbf{F}_{k}^{\text{T}} + \textbf{Q}_{k} 创新或度量残差 创新(或残差)协方差 最佳 卡尔曼增益 更新(后验)状态估计 更新(后验)估计协方差 y~k=zk−Hkx^k|k−1y~k=zk−Hkx^k|k−1 \tilde{\textbf{y}}_k = \textbf{z}_k - \textbf{H}_k\hat{\textbf{x}}_{k|k-1}Sk=HkPk|k−1HTk+RkSk=HkPk|k−1HkT+Rk\textbf{S}_k = \textbf{H}_k \textbf{P}_{k|k-1} \textbf{H}_k^\text{T} + \textbf{R}_k Kk=Pk|k−1HTkS−1kKk=Pk|k−1HkTSk−1\textbf{K}_k = \textbf{P}_{k|k-1}\textbf{H}_k^\text{T}\textbf{S}_k^{-1}x^k|k=x^k|k−1+Kky~kx^k|k=x^k|k−1+Kky~k\hat{\textbf{x}}_{k|k} = \hat{\textbf{x}}_{k|k-1} + \textbf{K}_k\tilde{\textbf{y}}_kPk|k=(I−KkHk)Pk|k−1Pk|k=(I−KkHk)Pk|k−1\textbf{P}_{k|k} = (I - \textbf{K}_k …

1
位置和速度的卡尔曼滤波器:引入速度估计
感谢昨天在我的查询中发布评论/答案的每个人(为位置,速度,加速度实现Kalman过滤器)。我一直在研究推荐的内容,尤其是在(a)关于一维位置和速度的Wikipedia示例以及另一个考虑类似内容的网站上。 2013年4月26日更新:此处的原始问题包含一些错误,这与以下事实有关:我没有正确理解Wikipedia示例中的一维位置和速度。随着我对正在发生的事情有了更好的理解,我现在重新起草了这个问题,并更加集中了它。 我在上面的介绍性段落中提到的两个示例均假设仅是对位置进行了衡量。但是,两个示例都没有任何类型的速度计算(xķ− xk − 1)/天Ť(Xķ-Xķ-1个)/dŤ(x_k-x_{k-1})/dt。例如,Wikipedia示例将HH{\bf H}矩阵指定为,这意味着仅输入位置。以Wikipedia为例为例,卡尔曼滤波器的状态向量包含位置和速度,即X ķ X ķ ˙ X ķ高 =[10] H=[1个 0]{\bf H} = [1\ \ \ 0]XķXķ{\bf x}_kXķXķx_kX˙ķX˙ķ\dot{x}_{k} Xķ= (xķX˙ķ)Xķ=(XķX˙ķ) \begin{align*} \mathbf{x}_{k} & =\left(\begin{array}[c]{c}x_{k}\\ \dot{x}_{k}\end{array} \right) \end{align*} 假设在时间处的位置度量为。那么,如果在时间的位置和速度分别为和,并且是在时间间隔应用于的恒定加速度,从测量有可能推断出的值用于使用公式X ķ ķ - 1 X ķ - 1 ˙ X ķ - 1一ķ - 1 ķ X一ķķkX^ķX^ķ\hat{x}_kk …

3
卡尔曼滤波器的输入是否应该始终是信号及其导数?
我总是看到卡尔曼滤波器与此类输入数据配合使用。例如,输入通常是一个位置和相应的速度: (x,dxdt)(x,dxdt) (x, \dfrac{dx}{dt}) 就我而言,每个采样时间只有2D位置和角度: Pi(xi,yi)and(α1,α2,α3)Pi(xi,yi)and(α1,α2,α3) P_i(x_i, y_i) \qquad \text{and} \qquad (\alpha_1, \alpha_2, \alpha_3) 我是否应该为每个点和每个角度计算速度以适合Kalman框架?

4
卡尔曼滤波器跟踪的直观解释
对于使用卡尔曼滤波器的(视觉)跟踪的直观解释,我将不胜感激。我知道的: 预测步骤: 动态系统状态:时间目标位置XŤXŤ\mathbf x_tŤŤt 度量:时间索引为(??)的图像žŤžŤ\mathbf z_tŤŤt 基于图像/测量我想预测状态吗?(使用动态方程式)正确吗?1 → (t − 1 )1个→(Ť-1个)1\rightarrow(t-1)XŤXŤ\mathbf x_t 如何将校正步骤解释为这些术语(图像,目标位置)?

2
给定捕获设备的欧拉角,卡尔曼滤波器是否适合过滤投影点位置?
我的系统如下。我使用移动设备的相机跟踪对象。通过此跟踪,我获得了在屏幕上投影的四个3D点,从而获得了四个2D点。由于检测到,这8个值有点嘈杂,因此我想对其进行过滤以使运动更平滑,更真实。作为第二项测量,我使用设备的陀螺仪输出,该输出提供了三个欧拉角(即设备的姿态)。它们比2D位置(大约20 Hz)更精确,频率更高(最高100 Hz)。 我的第一个尝试是使用简单的低通滤波器,但是滞后很重要,因此我现在尝试使用卡尔曼滤波器,希望它能够在几乎没有延迟的情况下平滑位置。如上一个问题所示,卡尔曼滤波器的一个关键点是测量值与内部状态变量之间的关系。这里的测量值既是我的8个2D点坐标,也是3个Euler角,但是我不确定应该用作内部状态变量以及如何将Euler角连接到2D点。因此,主要问题是,卡尔曼滤波器是否甚至适用于该问题?如果是的话,怎么办?

1
实践中的卡尔曼滤波器
我已经阅读了有关卡尔曼滤波器的说明,但是在实际中如何结合起来尚不清楚。它似乎主要针对机械或电气系统,因为它想要线性状态转换,并且出于相同的原因(它想要线性状态转换),对于异常检测或定位状态转换没有用处,对吗?在实践中,通常如何使用卡尔曼滤波器找到期望预先知道的成分。我已经列出了组件,如果我对需要提前知道的内容的理解不正确,请纠正我。 我相信这些不必“事先”知道: 过程噪声ww\mathbf w 观察噪声vv\mathbf v 实际状态(这是卡尔曼滤波器尝试估算的状态)xx\mathbf x 我相信使用卡尔曼滤波器需要事先知道这些: 我们应用于的线性状态转换模型(我们需要事先知道这一点,因此我们的状态必须受已知定律支配,即,当从一个状态到另一个状态的转换得到很好的理解和理解时,卡尔曼滤波器可用于校正测量值确定性的,直到一点点噪音-它不是异常发现者,也不是发现随机状态变化的工具)xx\mathbf x 控制向量uu\mathbf u 应用于输入向量控制输入​​模型(我们需要事先了解这一点,因此,使用卡尔曼滤波器时,我们还需要事先知道我们的控制值如何影响模型,最多影响一些高斯噪声,以及效果必须是线性的)uu\mathbf u 过程噪声的协方差(在Wikipedia文章中似乎与时间有关,即,它取决于时间k)-似乎我们需要提前知道这一点,并且随着时间的流逝,我认为实际上它被认为是恒定的?QQ\mathbf Qkkk A(线性)观察模型HH\mathbf H 协方差(在维基百科文章中似乎也与时间有关)-与Q相似的问题RR\mathbf RQQ\mathbf Q PS,是的,我知道其中许多依赖时间,我只是将所有下标都弄乱了。如果愿意,可以随意想象每个变量名右边和右边的小写字母。kkk

1
如何得出平稳的卡尔曼滤波器预测因子?
在我的DSP书中有关卡尔曼滤波器的章节中,似乎是出乎意料的,它指出了系统的固定卡尔曼滤波器 { x (t + 1 )ÿ(吨)= A x (t )+ w (t )= Cx (t )+ v (t ){X(Ť+1个)=一种X(Ť)+w(Ť)ÿ(Ť)=CX(Ť)+v(Ť)\begin{cases} x(t+1) &= Ax(t) + w(t) \\ y(t) &= Cx(t) + v(t) \end{cases} 有预测因子 X^(吨+ 1 |吨)= (甲- 甲ķ¯C)x^(t | t − 1 )+ A K¯ÿ(吨)X^(Ť+1个|Ť)=(一种-一种ķ¯C)X^(Ť|Ť-1个)+一种ķ¯ÿ(Ť)\hat{x}(t+1|t) = (A-A\bar{K}C)\hat{x}(t|t-1) + A\bar{K}y(t) 和稳态矢量协方差和卡尔曼增益 …

1
卡尔曼滤波器-处理“衍生”测量值的最佳方法?
即,如果您有位置变量(p)和速度(v)作为状态变量,并且我对p进行了低频测量,那么这也间接给了我有关v的信息(因为它是p的导数)。处理这种关系的最佳方法是什么? A)在更新步骤中,我应该只说我测量了p,并且依靠滤波过程以及我积累的状态-协方差矩阵(P)来校正v? b)如果我创建一个“额外”的预测步骤,之后或者用于测量我更新步骤之前p,使用我的测量p和(相对大的)Δ-时间作出的高方差预测v? C)在更新/测量步骤中,我是否应该说我已经对p和 v进行了测量,然后以某种方式将有关其相互依赖性的信息编码到测量协方差矩阵(R)中? 为了获得更多背景信息,以下是我遇到问题的具体情况: 我正在使用一个系统来估计对象的位置(p),并经常测量加速度(a)和不频繁地测量p高噪声。 我目前正在使用扩展卡尔曼过滤器(Extended Kalman Filter)执行此操作的代码库,其中将其保留为状态变量p和v。在每次加速度测量之后,它都会执行“预测”步骤,在该步骤中,它使用测量的a和增量时间来积分和预测新的p和v。然后,它为每个(不频繁的)p测量运行一个“更新” /“测量”步骤。 问题是这样的-我得到的偶然的高误差测量一个,这导致高度误差v。显然,对a的进一步测量将永远不会纠正此问题,但对p的测量应摆脱此问题。而且,实际上,这确实发生了……但是非常缓慢。 我以为这可能部分是因为p在系统中影响v的唯一方法是通过协方差矩阵P-即上面的方法A)-这似乎是间接的。我想知道是否会有更好的方法将我们对p和v之间这种关系的了解纳入模型,以便对p的测量可以更快地校正v。 谢谢!

3
何时使用EKF,何时使用卡尔曼滤波器?
我现在正在学习卡尔曼过滤器一个星期。我刚刚发现EKF(扩展卡尔曼滤波器)可能更适合我的情况。 我想我不会将KF / EKF应用于变速表(该设备会告诉飞机和跳伞者其垂直位置和速度是多少)。就我而言,我已经生成了一些样本数据:在最初的几秒钟内,他(例如降落伞)下降(速度为正),然后上升(速度为负)。 据我所知,这个系统是线性的。那么我应该使用KF还是EKF?

7
学习卡尔曼滤波器的好书或参考
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。没有足够详细信息的答案可以被编辑或删除。 我对卡尔曼滤波器完全陌生。我上过一些关于条件概率和线性代数的基础课程。有人可以推荐一本好书或网络上的任何资源来帮助我理解卡尔曼滤波器的操作吗? 大多数网站都直接从公式及其含义开始,但是我对它的推导更感兴趣,或者如果没有详细推导,则至少对每个操作和参数的物理意义感兴趣。

2
给定位置测量值,如何估算速度和加速度
我以为这很简单,但是我的幼稚方法导致了非常嘈杂的结果。我在一个名为t_angle.txt的文件中有以下示例时间和位置: 0.768 -166.099892 0.837 -165.994148 0.898 -165.670052 0.958 -165.138245 1.025 -164.381218 1.084 -163.405838 1.144 -162.232704 1.213 -160.824051 1.268 -159.224854 1.337 -157.383270 1.398 -155.357666 1.458 -153.082809 1.524 -150.589943 1.584 -147.923012 1.644 -144.996872 1.713 -141.904221 1.768 -138.544807 1.837 -135.025749 1.896 -131.233063 1.957 -127.222366 2.024 -123.062325 2.084 -118.618355 2.144 -114.031906 2.212 -109.155006 2.271 …

1
卡尔曼滤波器-了解噪声协方差矩阵
卡尔曼滤波器框架中的噪声协方差矩阵有何意义? 我指的是: 过程噪声协方差矩阵Q和 测量噪声协方差矩阵R 在任何时间t。 如何解释这些矩阵?它们代表什么?他们是否谈论状态向量中一个观测值的噪声相对于另一个观测值的噪声如何变化?

5
卡尔曼滤波器-实现,参数和调整
首先,这是我第一次尝试制作Kalman滤波器。 我之前曾在StackOverflow上发布了以下问题,即从速度值中滤除噪声和变化,该问题描述了本文的背景。这是我尝试过滤的典型值示例。他们不必一定要减少这种情况。但是变化率通常是这样的 X ------- Y 16 --- 233.75 24 --- 234.01 26 --- 234.33 32 --- 234.12 36 --- 233.85 39 --- 233.42 47 --- 233.69 52 --- 233.68 55 --- 233.76 60 --- 232.97 66 --- 233.31 72 --- 233.99 我已经按照以下教程实现了我的Kalman过滤器:Kalman Filter for Dummies。 我的实现看起来像这样(伪代码)。 //Standard deviation is 0.05. …

1
实现位置,速度,加速度的卡尔曼滤波器
过去,我曾将Kalman过滤器用于各种用途,但现在我对在智能手机应用程序的位置跟踪中使用一个跟踪位置,速度和加速度感兴趣。令我惊讶的是,这应该是一个简单的线性卡尔曼滤波器的教科书示例,但我似乎找不到任何讨论此问题的在线链接。我可以想到各种方法来执行此操作,但是与其从头研究它,不如这里有人可以指出正确的方向:有谁知道设置此系统的最佳方法?例如,鉴于最近的位置观测历史,在卡尔曼滤波器状态空间中预测下一个点的最佳方法是什么?在状态空间中包含加速有哪些优缺点?如果所有测量都是位置,那么如果速度和加速度处于状态空间中,系统会变得不稳定吗?等等...另外,有人知道卡尔曼滤波器的这种应用有很好的参考吗?谢谢

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.