在学,持续更新,欢迎交流…
想看看卡尔曼滤波/分布式卡尔曼滤波坑里还有多少人…
2023.08.18
为了令卡尔曼滤波器开始工作,我们需要告诉卡尔曼两个零时刻的初始值,是X(0|0)和P(0|0)。他们的值不用太在意,随便给一个就可以了,因为随着卡尔曼的工作,X会逐渐的收敛。但是对于P,一般不要取0,因为这样可能会令卡尔曼完全相信你给定的X(0|0)是系统最优的,从而使算法不能收敛。
Kalman Filter 只能减小均值为0的测量噪声带来的影响。只要噪声期望为0,那么不管方差多大,只要迭代次数足够多,那效果都很好。反之,噪声期望不为0,那么估计值就还是与实际值有偏差。
2023.09.09
卡尔曼滤波中参数的意义:
x k − 1 和 x k x_{k-1}和x_{k} xk−1和xk, 分别表示 k-1 时刻和 k 时刻的后验状态估计值,是滤波的结果之一,即更新后的结果,也叫最优估计(估计的状态,根据理论,我们不可能知道每时刻状态的确切结果所以叫估计)。
x ^ k / k − 1 \hat{x}_{k/k-1} x^k/k−1, k时刻的先验状态估计值,是滤波的中间计算结果,即根据上一时刻(k-1时刻)的最优估计预测的k时刻的结果,是预测方程的结果。
P k − 1 和 P k P_{k-1}和P_{k} Pk−1和Pk, 分别表示 k-1 时刻和 k 时刻的后验估计协方差(即的协方差,表示状态的不确定度),是滤波的结果之一。
P ^ k / k − 1 \hat{P}_{k/k-1} P^k/k−1, k 时刻的先验估计协方差( x ^ k / k − 1 \hat{x}_{k/k-1} x^k/k−1的协方差),是滤波的中间计算结果。
H H H,是状态变量到测量(观测)的转换矩阵,表示将状态和观测连接起来的关系,卡尔曼滤波里为线性关系,它负责将 m 维的测量值转换到 n 维,使之符合状态变量的数学形式,是滤波的前提条件之一。
Z k Z_{k} Zk,测量值(观测值),是滤波的输入。
K k K_{k} Kk,滤波增益矩阵,是滤波的中间计算结果,卡尔曼增益,或卡尔曼系数。
A A A,状态转移矩阵,实际上是对目标状态转换的一种猜想模型。例如在机动目标跟踪中, 状态转移矩阵常常用来对目标的运动建模,其模型可能为匀速直线运动或者匀加速运动。当状态转移矩阵不符合目标的状态转换模型时,滤波会很快发散。
Q k Q_{k} Qk,过程激励噪声w的协方差(系统过程的协方差),表示w 向量元素之间的相关关系。该参数被用来表示状态转换矩阵与实际过程之间的误差。因为我们无法直接观测到过程信号, 所以 Q 的取值是很难确定的。是卡尔曼滤波器用于估计离散时间过程的状态变量,也叫预测模型本身带来的噪声。状态转移协方差矩阵
R k R_{k} Rk,测量噪声v的协方差,表示v向量元素之间的相关关系。滤波器实际实现时,测量噪声协方差 R一般可以观测得到,是滤波器的已知条件。
Z k − H k ∗ x ^ k / k − 1 Z_{k}-H_{k}*\hat{x}_{k/k-1} Zk−Hk∗x^k/k−1,实际观测和预测观测的残差,和卡尔曼增益一起修正先验(预测),得到后验。
2023.09.10
凌晨一点,终于看懂了分布式卡尔曼滤波的算法。觉得白天只要能复现出来应该是没问题的。
结果到了晚上,复现出来,还是有问题。
2023.09.11
晚上凌晨两点,把能想到的错误都看了一遍,排查完一遍好像是没问题了,结果还是凌晨四点才睡着。