卡尔曼滤波器中的Q,R

点击蓝字关注我们

关注、星标公众号,精彩内容每日送达
来源:网络素材

卓老师,我想问一个关于卡尔曼滤波的问题,希望您能解答一下。之前我用的互补滤波效果也还好,但在用卡尔曼滤波的时候出现了一些问题:就是如何整定卡尔曼滤波的Q、R这两个参数,这两个参数分别是角度数据置信度与角速度数据置信度。我看别人用的这两个参数都非常小,比如别人Q都是零点零零几,而我用的时候发现Q零点几跟随效果很差,我把Q调到1跟随效果才差不多。但是Q和R不都是协方差吗,它们可以取到1及以上的值吗?即Q和R有没有取值范围,以及这两个参数整定方法是什么?还是我理解有问题,希望卓大或者车友可以解答一下。

b42ee3c87640c3a444a23d21c2b6411e.jpeg

回复:在智能车竞赛中,Kalman滤波算法常常被用来计算直立车模倾角和转动角速度。算法利用陀螺仪给出的转速度量和加速度传感器给出的倾角观测量完成计算。除了Kalman滤波器算法之外,还可以使用互补滤波器进行帮助计算。

如果不考虑系统状态的时变性和系统噪声的时变性,上述两种方法本质上是相同的。

下图显示了对于被测物体位置使用Kalman滤波算法来估计物体实际位置的示意图。

4eedf572b999ed03988e51a7446f0d21.jpeg

通常情况下所使用的Kalman滤波器是离散时间系统形式的。我们真正想得到的物理量表示成系统状态中的某些分量。对于系统状态的估计(滤波结果)所使用的信息来源于两个方面,一个是对系统状态演变模型的了解,包括系统转移矩阵和输入控制矩阵,输入孔质量等,另一方面来自于对系统状态的观测量。

db6b096312639a9205f5a722a7e40b94.png

但这两方面的信息都会有某种不确定性。通常使用系统噪声向量(W)和观测噪声向量(V)来表示。两个噪声大小分别使用它们各自的协方差矩阵来表示。系统噪声协方差矩阵使用Q,观测噪声的协方差矩阵使用R。

下面是系统方程和观测方程表达式。虽然在表达式中包括了系统噪声w和转测噪声v,但在计算系统状态转移和系统观测量的时候并不考虑这两个噪声的影响。

ca01d95cdf3bf8d49a770fd9c07c898e.png

两个噪声的影响只是在卡尔曼滤波器离散迭代算法过程中使用到了两个噪声的协方差矩阵Q和R。分别用于计算系统状态估计误差的协方差矩阵P和卡尔曼滤波器增益K的大小。

下面是传统线性卡尔曼滤波器的五个基本迭代公式。

27fee6774a6b51d23f8f838b7307c04d.png

从上面公式来看,真正所要滤波得到的结果来自于公式(4)中的系统状态估计值x的某些分量,公式(4)的结果是由公式(1)所得到的状态预测值和来自观测量y计算得到的。其中卡尔曼滤波器增益K是在状态预测值和观测误差值之间做了一个折中。

如果K很小,比如等于0,则滤波结果更加接近由系统状态估计值给出的递归结果;如果K很大,比如等于1,则滤波结果更加接近于观测值所反算出来的状态变量。

6ad112631efb84625cfc0308e3114077.png

K值是由公式(3)计算获得,其中的P值是通过公式(2)(5)进行计算,反映了Q的大小,因此K值的大小可以由如下形式示意:

2ac4e9bbc51888e0947cd0dd884153b9.png

因此,K值至于Q,R的比值有关系,而与Q,R的绝对值没有关系。所以,在不同算法中,R, Q的取值根据反应的不同量纲,可以有很大的变化,但它们的比值会决定了滤波值应该更多来自于系统模型演化的信息,还是来自于观察信号信息。

在智能车竞赛中,使用Kalman滤波器将惯性传感器所得到的车体陀螺仪所反映的角速度和和加速度传感器所获得的倾斜角信息进行融合,获得直立车模倾角和转动角速度。

此时,往往将系统状态x设定为车模需要观察的角度。系统输入量u为测量所得到的角速度;系统观察值设定为有加速度传感器给出的倾角。

系统模型噪声w应该反映出陀螺仪测定角速度的随机误差和随着时间漂移的系统误差两部分。系统观测噪声v应该反映了加速度计输出量中在计算角度的近似误差和由于车模运动所产生的干扰噪声。

如果Q大R小,造成K增加,则滤波结果中就会存在较大的由于车模运动所产生的噪声,俗称跟踪不好;如果Q小R大,造成K减小,则滤波结果会出现两种问题,第一就是从处置值收敛到正确值的过程较慢,需要等一个比较长的稳定时间。另一方面就是会受到陀螺仪本身零点漂移,产生比较大的输出零点误差。

最终这两个参数的大小可以根据所选择的器件的实际性能(噪声,漂移等)通过实验观察的方式获得一个比较好的相对值。

0839a7140c8c9e60a92e865efaf130d8.jpeg

想要了解FPGA吗?这里有实例分享,ZYNQ设计,关注我们的公众号,探索

<think>嗯,用户问的是如何调节卡尔曼滤波器的Q和R矩阵。首先我需要回忆卡尔曼滤波的基本原理。Q是过程噪声协方差矩阵,R是观测噪声协方差矩阵,对吧?这两个参数直接影响滤波器的性能,所以正确调整它们很重要。 用户可能已经知道Q和R的基本作用,但不知道具体怎么调。我需要解释调整的方法,比如理论分析、经验调整、试验法,还有自动调参方法。理论分析的话,可能需要根据系统模型来确定噪声的统计特性,这时候需要建立准确的系统模型,如果模型不准,Q和R的设置可能会有偏差。 然后是经验调整,也就是根据实际系统的表现手动调整。比如,如果估计结果波动大,可能说明Q太大或者R太小,需要减小Q或增大R。这部分需要举例子说明,比如调整Q的对角线元素或者R的值,同时给出Matlab代码示例,这样用户更容易理解。 试验法方面,可以提到使用参数扫描或者优化算法,比如遗传算法、粒子群优化等。这里可以给出一个简单的参数扫描的Matlab代码,展示如何通过循环测试不同的Q和R值,选择最优的。 自动调参方法,比如自适应卡尔曼滤波,这时候可能需要在线估计Q和R的值。这部分可能需要更复杂的算法,比如基于残差的自适应方法,但用户可能需要更简单的示例,所以给出一个简化的自适应调整思路,比如根据测量残差调整R的值。 然后要注意Q和R的关系,Q和R的比值会影响卡尔曼增益K,从而影响滤波器对预测和测量的信任程度。如果Q大,说明过程噪声大,滤波器会更信任测量值;反之,R大则更信任预测值。这个权衡需要根据实际情况调整。 接下来,用户可能需要具体的Matlab代码示例,所以给出初始化Q和R的代码,以及调整它们的示例。比如,初始设置为Q=0.1,R=1,然后根据残差调整R。这样用户可以看到如何动态调整参数。 最后,相关问题的部分需要考虑用户可能的后续疑问,比如Q和R的作用、初始设置方法、自适应调整方法,以及调整后的效果评估方法。这些问题可以帮助用户更深入地理解卡尔曼滤波的参数调整过程。 检查是否有遗漏点,比如是否提到了Q和R的物理意义,不同调整方法的优缺点,以及实际应用中的注意事项。可能需要强调,调整Q和R需要结合具体系统,没有通用的最优解,需要反复试验和验证。</think><< 调节卡尔曼滤波器的Q(过程噪声协方差矩阵)和R(观测噪声协方差矩阵)是优化滤波器性能的关键步骤。以下是具体方法和解释: ### **1. 理论分析与系统建模** - **Q矩阵**:反映过程噪声(模型不确定性)的协方差。若系统模型精度高,Q应较小;若模型误差大,Q需增大。 - **R矩阵**:反映观测噪声的协方差。若传感器噪声大,R应增大;若传感器精度高,R需减小。 **示例代码**(初始化Q和R): ```matlab % 假设状态维度为2(位置和速度) Q = diag([0.1, 0.01]); % 过程噪声:位置噪声较大,速度噪声较小 R = 1; % 单观测量的噪声协方差 ``` ### **2. 经验调整法** - **现象与调整**: - 若估计结果震荡:可能Q过大或R过小,需减小Q或增大R。 - 若估计滞后于真实值:可能Q过小或R过大,需增大Q或减小R。 **示例代码**(调整Q和R): ```matlab % 根据残差动态调整R(简化示例) residual = z - H * x_est; if abs(residual) > threshold R = R * 1.5; % 增大观测噪声权重 end ``` ### **3. 试验法(参数扫描)** 通过遍历不同Q和R值,选择使估计误差最小的组合。 **示例代码**(参数扫描): ```matlab best_error = Inf; best_Q = 0; best_R = 0; for Q_val = 0.01:0.01:0.1 for R_val = 0.1:0.1:1 [~, error] = run_kalman_simulation(Q_val, R_val); if error < best_error best_Q = Q_val; best_R = R_val; best_error = error; end end end ``` ### **4. 自适应卡尔曼滤波** 使用在线估计方法(如协方差匹配)动态调整Q和R。 **示例代码**(自适应调整Q): ```matlab % 基于残差协方差更新Q residual_cov = (z - H * x_pred) * (z - H * x_pred)' / N_samples; Q = alpha * Q + (1 - alpha) * (K * residual_cov * K'); ``` ### **5. 物理意义验证** - Q的维度应与状态变量数量一致,R的维度与观测量一致。 - Q和R需为正定矩阵,通常设为对角矩阵(假设噪声独立)。 --- **解释**: Q和R的调节本质是平衡模型预测与观测数据的信任度。Q增大表示模型不确定性高,滤波器更依赖观测;R增大表示观测噪声大,滤波器更依赖预测。最终需结合理论分析和实际数据反复验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值