常驻嘉宾
- 积分
- 4946
- 威望
- 2641
- 贡献
- 1439
- 兑换币
- 1337
- 注册时间
- 2014-8-31
- 在线时间
- 433 小时
- 毕业学校
- 河海大学
|
基础是清华方案,滤波采用卡尔曼。角度跟踪得很缓慢,并且很抖!曾经用K60的小车调的时候效果不错,换成KL26的车之后,角度跟踪得很缓慢,改PD参数和卡尔曼的参数并没有起到多大的作用。。不加D。。只是P就十分的抖,并且反应迟钝。。请问大家能想到什么原因?
棕色为Z轴输出,红色为融合角度,蓝色为角速度
底下分享滤波的程序:
float Q_angle = 0.005;//0.0005//增大数值,增大过冲
float Q_gyro = 0.0003;//0.0003
float R_angle = 0.003;//0.03//减小数值,增大过冲
float x_bias = 0;
float P_00 = 0,P_01 = 0,P_10 = 0,P_11 = 0;
float y, S;
float K_0,K_1;
extern float angle_offset_vertical,Gyro_Now;//
float kalmanCalculate(float newAngle, float newRate,int looptime)
{
float dt = (float)looptime/1000;
angle_offset_vertical += dt * (newRate - x_bias);
P_00 += -dt * (P_10 + P_01) + Q_angle * dt;
P_01 += -dt * P_11;
P_10 += -dt * P_11;
P_11 += + Q_gyro * dt;
y = newAngle - angle_offset_vertical;
S = P_00 + R_angle;
K_0 = P_00 / S;
K_1 = P_10 / S;
angle_offset_vertical += K_0 * y;
x_bias += K_1 * y;
P_00 -= K_0 * P_00;
P_01 -= K_0 * P_01;
P_10 -= K_1 * P_00;
P_11 -= K_1 * P_01;
return angle_offset_vertical;
//gyro_angular_speed = newRate - x_bias;
}//To get the answer,you have to set 3 parameters_angle,R_angle,Q_gyro
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|