具有 2 个测量噪声的卡尔曼滤波器
Posted
技术标签:
【中文标题】具有 2 个测量噪声的卡尔曼滤波器【英文标题】:Kalman filter with 2 measurement noise 【发布时间】:2014-05-18 14:20:40 【问题描述】:我正在研究我的项目,这是一辆自动驾驶汽车。我们在 2 个***上固定了 1 对里程计编码器,并在其顶部固定了 1 个激光陀螺仪。我正在设计一个卡尔曼滤波器来过滤测量中的噪声。但是,我的问题是,我不知道如何处理 2 个单独的测量噪声。
在卡尔曼滤波方程中,测量预测为:
y(k+1)=g(xk, uk,vk)
其中 vk 是测量噪声协方差矩阵。好吧,我很困惑,因为在我的情况下,我有 2 个传感器(里程计和陀螺仪)测量 2 个不同的东西,那么我该如何构造卡尔曼滤波器的协方差矩阵?
【问题讨论】:
据我所知,您正在将测量值混合在一起。就卡尔曼滤波器而言,里程计和陀螺仪读数彼此无关。过滤器提供了一种预测单个读数的下一次测量的方法。因此,您必须在每个传感器上使用一个过滤器。关于如何计算协方差矩阵的问题,我建议您阅读更多有关卡尔曼滤波器的内容,因为在不了解其工作原理的情况下实现该滤波器可能会很棘手。 您好,您是对的。这是我的错。陀螺仪读数应立即根据里程计读取。卡尔曼滤波器只涉及一种测量。我没有读够:D 如果我想结合读取轴承和陀螺仪的里程计,我可以使用传感器融合和卡尔曼滤波器,但这绝对是另一回事 不客气 =) 你能接受它作为答案吗? 【参考方案1】:卡尔曼滤波器可以处理来自多个来源的噪声测量。您将它们一起视为单个噪声向量。在您的情况下,由于您有两个噪声测量值,您将有一个 2×1 向量。在 Matlab 符号中...
mk = [vo; vg];
这里的 mk 是您的测量噪声向量。它有 2 个元素:vo(里程计噪声)和 vg(陀螺噪声)。
由于您的测量噪声是一个 2×1 向量,因此您的测量噪声协方差矩阵将是一个 2×2 矩阵。在 Matlab 符号中...
vk = [varo, rho; rho, varg];
这里的 vk 是您的测量噪声协方差矩阵。它的对角元素 varo 和 varg 是里程计和陀螺噪声的方差。非对角元素(rho)是里程计和陀螺噪声之间的相关性。
【讨论】:
【参考方案2】:据我所知,您将测量值混合在一起。就卡尔曼滤波器而言,里程计和陀螺仪读数彼此无关。过滤器提供了一种预测单个读数的下一次测量的方法。因此,您必须在每个传感器上使用一个过滤器。关于如何计算协方差矩阵的问题,我建议一般多阅读卡尔曼滤波器,因为在不了解它的工作原理的情况下实现滤波器可能很棘手。
【讨论】:
以上是关于具有 2 个测量噪声的卡尔曼滤波器的主要内容,如果未能解决你的问题,请参考以下文章