智能车制作

标题: 【直立】角度控制缓慢并且抖求教 [打印本页]

作者: zty562694497    时间: 2015-7-11 01:18
标题: 【直立】角度控制缓慢并且抖求教
基础是清华方案,滤波采用卡尔曼。角度跟踪得很缓慢,并且很抖!曾经用K60的小车调的时候效果不错,换成KL26的车之后,角度跟踪得很缓慢,改PD参数和卡尔曼的参数并没有起到多大的作用。。不加D。。只是P就十分的抖,并且反应迟钝。。请问大家能想到什么原因?

[attach]78355[/attach]棕色为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


作者: zty562694497    时间: 2015-7-11 09:33
自己顶起~\(≧_≦)/~
作者: Young_rock    时间: 2015-7-11 16:31
不懂卡曼
作者: 王七七    时间: 2015-7-12 07:34
不懂
作者: zty562694497    时间: 2015-7-12 10:57
QAQ肿么这样
作者: 空心杯    时间: 2015-7-12 15:06
表示没看懂,基础是清华方案是什么意思
作者: super殺手?    时间: 2015-7-12 15:17
调节Q R的参数吧。收敛太慢了,只能牺牲稳定性。
作者: zty562694497    时间: 2015-7-12 19:34
空心杯 发表于 2015-7-12 15:06
表示没看懂,基础是清华方案是什么意思

就是归一化按着清华那么来。。融合用卡尔曼滤波了

作者: zty562694497    时间: 2015-7-12 19:36
super殺手? 发表于 2015-7-12 15:17
调节Q R的参数吧。收敛太慢了,只能牺牲稳定性。

是的。。不过值一改就立马就抖得不行。。尽管角度跟踪得依旧缓慢。。。Z轴的比例参数没有问题啊。。会出现这样的问题我十分的蛋疼!





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2