智能车制作

 找回密码
 注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: guolei123
打印 上一主题 下一主题

平衡车的抖动…………

  [复制链接]

49

主题

200

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4104
威望
1844
贡献
974
兑换币
860
注册时间
2012-12-11
在线时间
643 小时
毕业学校
辽石油
11#
 楼主| 发表于 2014-1-9 10:56:45 | 只看该作者
冷酷世纪 发表于 2014-1-8 20:14
我很好奇你不用PID是怎么控制的

直接一个角度对应一个PWM
回复 支持 反对

使用道具 举报

8

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1972
威望
906
贡献
586
兑换币
594
注册时间
2013-4-7
在线时间
240 小时
12#
发表于 2014-1-9 21:41:09 | 只看该作者
guolei123 发表于 2014-1-9 10:56
要一个多月啊…………这么长啊…………

我一天就调出来了 不用听他们说 还是新手
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
463
威望
226
贡献
147
兑换币
140
注册时间
2013-9-18
在线时间
45 小时
毕业学校
家里蹲大学
13#
发表于 2014-1-11 18:02:19 | 只看该作者
春日迟迟 发表于 2014-1-9 21:41
我一天就调出来了 不用听他们说 还是新手

这么厉害啊。你是怎么弄的 可以这么快 一天就调好 程序代码加测试都一天就搞完了?
回复 支持 反对

使用道具 举报

4

主题

68

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2056
威望
1072
贡献
658
兑换币
571
注册时间
2012-3-9
在线时间
163 小时
毕业学校
东南大学成贤学院
14#
发表于 2014-1-11 23:30:00 | 只看该作者
guolei123 发表于 2014-1-9 10:56
直接一个角度对应一个PWM

那抖动就正常了,你这样控制相当于只有P控制,而D为0,肯定会有抖动的
回复 支持 反对

使用道具 举报

8

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
威望
123
贡献
68
兑换币
66
注册时间
2013-10-14
在线时间
22 小时
毕业学校
济南大学
15#
发表于 2014-1-12 20:38:27 | 只看该作者
那个你们车站起来,加速度控制了吗
回复 支持 反对

使用道具 举报

32

主题

3009

帖子

0

精华

杰出人士

学期班的来卖萌?

Rank: 12Rank: 12Rank: 12

积分
14832

在线王奖章活跃会员奖章优秀会员奖章论坛元老奖章资源大师奖章

威望
5952
贡献
3172
兑换币
4257
注册时间
2013-11-26
在线时间
2854 小时
16#
发表于 2014-1-14 20:44:54 | 只看该作者
woshiwangbin 发表于 2014-1-8 23:24
楼主哥们 我想问下从开始写平衡程序到让车基本立起来   再从基本立起来到立稳  需要花多少时间啊? 不要说这 ...

一个小时
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
463
威望
226
贡献
147
兑换币
140
注册时间
2013-9-18
在线时间
45 小时
毕业学校
家里蹲大学
17#
发表于 2014-1-15 15:34:39 | 只看该作者
zhou1994 发表于 2014-1-14 20:44
一个小时

这位大哥 汝甚屌! 拜求赐教!!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
32
威望
18
贡献
10
兑换币
9
注册时间
2016-4-22
在线时间
2 小时
毕业学校
挑粪工
18#
发表于 2016-5-27 23:22:22 | 只看该作者
woshiwangbin 发表于 2014-1-15 15:34
这位大哥 汝甚屌! 拜求赐教!!

为何这么屌。。。

我的平衡车用 Arduino UNO 做的,MPU6050,  PID 卡尔曼滤波,可是站起来后很抖,

我调遍了参数也没用,怎么破?





void Kalman_Filter(double angle_m,double gyro_m)
{
    angle+=(gyro_m-q_bias) * dtt;
    Pdot[0]=Q_angle - P[0][1] - P[1][0];
    Pdot[1]=- P[1][1];
    Pdot[2]=- P[1][1];
    Pdot[3]=Q_gyro;
    P[0][0] += Pdot[0] * dtt;
    P[0][1] += Pdot[1] * dtt;
    P[1][0] += Pdot[2] * dtt;
    P[1][1] += Pdot[3] * dtt;
    angle_err = angle_m - angle;
    PCt_0 = C_0 * P[0][0];
    PCt_1 = C_0 * P[1][0];
    E = R_angle + C_0 * PCt_0;
    K_0 = PCt_0 / E;
    K_1 = PCt_1 / E;
    t_0 = PCt_0;
    t_1 = C_0 * P[0][1];
    P[0][0] -= K_0 * t_0;
    P[0][1] -= K_0 * t_1;
    P[1][0] -= K_1 * t_0;
    P[1][1] -= K_1 * t_1;
    angle+= K_0 * angle_err;
    q_bias += K_1 * angle_err;
    angle_dot = gyro_m-q_bias;//也许应该用last_angle-angle
}


void pwm_calculate()
{
   unsigned long  now = millis();       // 当前时间(ms)
   int Time = now - lastTime;

  int range_error;

  //Serial.print("  R:");Serial.print(c2);
  //Serial.print("  L:");Serial.print(c1);
  range+=(c1+c2)*0.5;
  range*=0.9;
  range_error=c1-c2;
  range_error_all+=range_error;

  wheel_speed=range-last_wheel;
  last_wheel=range;

  pwm=angle*k1+angle_dot*k2+range*k3+wheel_speed*k4;    //use PID tho calculate the pwm

  if(pwm>255)                               //Maximum Minimum Limitations
    pwm=255;
  if(pwm<-255)
    pwm=-255;
//Serial.print(pwm);Serial.print("\t");
    //  Serial.print(c1);Serial.print("\t");
    //  Serial.print(c2);Serial.print("\t\n");
/*    if(turn_flag==0)
    {
     pwm_R=pwm+range_error_all;
     pwm_L=pwm-range_error_all;
    }
    else
    {
        pwm_R=pwm-turn_flag*68;  //Direction PID control
        pwm_L=pwm+turn_flag*68;
        range_error_all=0;     //clean
    }
*/   
     c1 = 0;//clean
     c2 = 0;
   lastTime = now;
   //Serial.print(Time);Serial.print("\n");


}


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2025-1-27 16:58 , Processed in 0.065050 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表