一、卡尔曼滤波方程
1. 在网上看了一些卡尔曼滤波的说明,大致对计算过程有了一个了解,但是对于其推导论证是一窍不通的。就目前的理解来说,卡尔曼滤波方程是的是一种数据更新前后时刻协方差最小的一种最优解,对于其含义,知乎和csdn中曾多次提到的一篇教学论文(Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation
2. 对于理论部分,就简单说下理解的内容就可以了,现在我们开始进行卡尔曼滤波算法的五步计算。
控制系统描述方程:
X(k)=AX(k-1)+BU(k)+w(k)
Z(k)=HX(k)+v(k)
其中X(k)是k时刻的系统状态方程,U(k)是外加激励,A、B为系统参数
Z(k)为k时刻的测量值,H为系统参数
w(k)和v(k)是过程和测量的白噪声,其协方差分别为Q、R,同时,卡尔曼滤波要求,w、v需要是高斯白噪声
系统方程列出之后,我们就可以开始就行5步卡尔曼滤波方程的罗列:
第一步,首先根据k-1时刻的状态根据系统状态方程计算k时刻的状态方程
公式1:X(k|k-1)=AX(k-1|k-1)+BU(k)
X(k-1|k-1)为k-1时刻计算出的状态量,X(k|k-1)是根据k-1时刻的状态量计算得到的估计值,因为是计算得到的,所以不考虑噪声
第二步 根据k-1时刻的协方差矩阵预估协方差矩阵,为计算卡尔曼滤波系数做铺垫
P(k|k-1)=AP(k-1|k-1)A'+Q
P为协方差矩阵,我个人理解这个P是上一时刻的X状态量和这一时刻的状态量的协方差,但是没有验证,不知道是否正确。同时关于这一步的计算,应该是一个状态空间的线性变换,具体计算方法在矩阵论中有,渣渣我已经不记得了。
第三步 计算卡尔曼滤波系数
Kg(k)=P(k|k-1)H'/(HP(k|k-1)H'+R)
第四步 计算当前状态的状态量
X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]
第五步 计算当前时刻协方差
P(k|k)=[1-Kg(k)H]P(k|k-1)
以上五步,在计算中确定X,Z,计算出A、B、Q、R就可以顺利求解了
二、对电池SOC进行卡尔曼滤波计算
1、首先要计算出电池模型
考虑到参考的文档用的是二阶模型,初学者为了尽快使用,就不变更模型了,当然,据我搜的论文来看,一阶的电池模型很明显更受欢迎啊。
电路原理图:
首先对RC并联进行一个推导,设定RC并联两端电压为u,流入的电流为i
i=u/R+C(du/dt)
对方程两端进行拉普拉斯变化:
I(s)=U(s)/R+C[sU(s)-U(0+)]
此处U(0+)显然为0
于是可得I(s)=U(s)/R+sCU(s)
为了进行离散运算,对其进行z变换,这里采用一阶向后差分算子代替
s=(1-1/z)/T,T为系统的周期
带入之后进行四则运算,
U(z)=[RC/(RC+T)]U(z)(1/z)+[TR/(RC+T)]I(z)
转换为差分方程,即为
U(k)=[RC/(RC+T)]U(k-1)+[TR/(RC+T)]I(k)
至此,RC并联的状态方程计算完毕
从而,二阶电池模型方程为:
Zl(k)=[Rl/(T+RlCl)]i(k)+[RlCl/(T+RlCl)]Zl(k-1)
Zs(k)=[Rs/(T+RsCs)]i(k)+[RsCs/(T+RsCs)]Zs(k-1)
Zl和Zs分别为长效和短效电压,我的理解是二者一个响应高频,一个响应低频
同时,根据SOC 的计算公式:
(此处参考:doi:103969/j.issn.1673.3142.2010.09.007)
这里对SOC计算公式进行简化:令SOC(k)=i(k-1)/Ccap+SOC(k-1)
在这里,取系统状态量,X=[Zl;Zs;SOC]
从而
A=[RlCl/(T+RlCl) 0 0;0 RsCs/(T+RsCs) 0;0 0 1]
B=[Rl/(T+RlCl);Rs/(T+RsCs);1/Ccap]
简化运算,取,T=0.1,A=[1 0 0;0 1 0;0 01]
B=[T;T;T/Ccap],取Ccap=8Ah,Zl,Zs初值均取为0, I为电池包电流
这个不对,等周末有时间再算,今天都没背英语!!!