搜索
bottom↓
回复: 12

四轴飞不起,PID调不好

[复制链接]

出0入0汤圆

发表于 2013-5-20 19:32:40 | 显示全部楼层 |阅读模式
本帖最后由 CCALM 于 2013-5-21 11:12 编辑
  1.         float P=10.0,I=0,D=32.0;          //灵敏 力度  3.9          2.9/0.954
  2.         float rool=0,pitch=0;
  3.         float roolb=0,pitchb=0;  //上上一次角度
  4.         float roola=0,pitcha=0;  //上一次角度
  5.         float Pmax=180;
  6.         float Rmax=130;

  7.         IMUupdate(GX,GY,GZ,AX,AY,AZ);//更新陀螺仪数据
  8. /*
  9. 俯仰角PID---------------------------------------------------------------------------------
  10. */
  11.         pitch = P * Pitch + I * pitcha - D * GX ;
  12.         pitchb=pitcha;
  13.         pitcha=Pitch;

  14.         if(pitch>Pmax) pitch=Pmax;
  15.         if(pitch<-Pmax) pitch=-Pmax;       

  16. /*
  17. 翻滚角PID---------------------------------------------------------------------------------
  18. */       
  19.         rool = P * Rool + I * roola - D * GY ;
  20.         roolb=roola;
  21.         roola=-Rool;

  22.         if(Rool<1&&Rool>-1) rool=0;
  23.         if(rool>Rmax) rool=Rmax;
  24.         if(rool<-Rmax) rool=-Rmax;
  25. M1=pitch;
  26. M2=rool;
  27. M3=-pitch;
  28. M4=-rool;

复制代码
不知道代码有没有错,请大神鉴定
老是震荡,PID调很少也震荡,不然就是没反应

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-5-20 21:03:09 | 显示全部楼层
  1. M1=pitch;
  2. M2=rool;
  3. M3=-pitch;
  4. M4=-rool;
复制代码
这段很诡异啊,你的四轴是“+”还是“X”的?

出105入79汤圆

发表于 2013-5-20 21:15:06 | 显示全部楼层
        Motor1=(int16_t)(thr + rool - pitch + yaw)  ;
        Motor2=(int16_t)(thr - rool - pitch - yaw)    ;       
        Motor3=(int16_t)(thr - rool + pitch + yaw)  ;
        Motor4=(int16_t)(thr + rool + pitch - yaw)  ;

符号根据正反奖和排列顺序调整

出0入0汤圆

发表于 2013-5-21 09:25:36 | 显示全部楼层
先给个小参数,然后把四轴放手上摆个角度看看效果,首先得保证符号正确才行

出0入0汤圆

 楼主| 发表于 2013-5-21 11:12:45 | 显示全部楼层
js200300953 发表于 2013-5-20 21:03
这段很诡异啊,你的四轴是“+”还是“X”的?

是+模式

出0入0汤圆

 楼主| 发表于 2013-5-21 11:17:03 | 显示全部楼层
woshisangao 发表于 2013-5-21 09:25
先给个小参数,然后把四轴放手上摆个角度看看效果,首先得保证符号正确才行 ...

能感觉到它在用力推,但是好像一点点角度,它的力就很大

出0入0汤圆

 楼主| 发表于 2013-5-21 11:19:00 | 显示全部楼层
qwe2231695 发表于 2013-5-20 21:15
Motor1=(int16_t)(thr + rool - pitch + yaw)  ;
        Motor2=(int16_t)(thr - rool - pitch - yaw)    ...

好的,谢谢

出0入0汤圆

发表于 2013-5-21 12:26:08 | 显示全部楼层
CCALM 发表于 2013-5-21 11:19
好的,谢谢

他那个是X模式的,十字模要这样:
  1.     control.throttle[0] = baseThrottle                    - output[1] + output[2];
  2.     control.throttle[1] = baseThrottle + output[0]                    - output[2];
  3.     control.throttle[2] = baseThrottle                   + output[1] + output[2];
  4.     control.throttle[3] = baseThrottle - output[0]                     - output[2];
复制代码

出0入0汤圆

发表于 2013-5-21 12:39:40 | 显示全部楼层
把D加大,我开始调也是这样,P小了力很小修正不了,P大了就来回震荡。最后把D加大了就好了。

出0入0汤圆

 楼主| 发表于 2013-5-21 20:41:13 | 显示全部楼层
enthier 发表于 2013-5-21 12:39
把D加大,我开始调也是这样,P小了力很小修正不了,P大了就来回震荡。最后把D加大了就好了。 ...

要是加大了D震荡更加厉害呢?还要加吗?

出0入0汤圆

 楼主| 发表于 2013-5-21 20:44:14 | 显示全部楼层
js200300953 发表于 2013-5-21 12:26
他那个是X模式的,十字模要这样:

看不懂,跟上面的有什么差别?

不是应该分开两个角度的PID输出吗

例如
M1=ROOL;
M2=PITCH;
M3=-ROOL;
M4=-PITCH;

出0入0汤圆

发表于 2013-5-21 21:58:52 | 显示全部楼层
CCALM 发表于 2013-5-21 20:41
要是加大了D震荡更加厉害呢?还要加吗?

加大了震荡更厉害?是不是D的控制量反了。

出0入0汤圆

发表于 2013-5-21 22:49:48 | 显示全部楼层
楼主加油呀
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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