常驻嘉宾
- 积分
- 4494
- 威望
- 2681
- 贡献
- 921
- 兑换币
- 241
- 注册时间
- 2012-2-4
- 在线时间
- 446 小时
|
static float Q_angle=0.01 ,Q_gyro=0.0001 ,R_angle=0.25,R_gyro=0.01,dt=0.1;
//注意:dt的取值为kalman滤波器采样时间;
static float Pk[2][2] = { {1, 0 }, {0, 1 }};
static float q_bias ,angle_err,E_0,E_1,K_0 ,K_1;
//-------------------------------------------------------
void Kalman_Filter(float angle_m,float gyro_m)
{
angle+=(gyro_m-q_bias) * dt;//先估计倾角 陀螺仪
Pk[0][0]+=Q_angle;
Pk[1][1]+=Q_gyro;
E_0=Pk[0][0]+R_angle;
E_1=Pk[1][1]+=R_gyro;
angle_err=angle_m-angle;
K_0=Pk[0][0]/E_0;
K_1=Pk[1][1]/E_1;
angle+=K_0*angle_err;
q_bias=K_1*angle_err;
angle_dot=gyro_m-q_bias;
Pk[0][0]=(1-K_0)*Pk[0][0];
Pk[1][1]=(1-K_1)*Pk[1][1];
}
|
|