文档章节

四轴飞行器PID调试一周总结

quanwei9958
 quanwei9958
发布于 2015/07/28 11:33
字数 1182
阅读 1426
收藏 9

  Arduino  + XXD 电调 +1000KV电机、 使用PID来调节稳定性,今天上午终于调节 x,y轴稳定。 回想遇到的问题,真的是试出来的值。

    PID算法很简单,写的话不需要10分钟就能写出来,不过要想找对P,I,D三个参数的值 运气好的话自不用说,运气不好调一个月都不一定能调稳。 使用MPU6050调试,在室内是一个轴一个轴地调试,就是架在凳子上,让一个轴能够自由旋转,类似下面这样

                                  

  使用欧拉角来调节PID三个参数,一开始遇到一个这个问题,就是当我设定值为0度的时候也就是水平放置的时候表现的还算可以,一直小幅震荡,也没有太大发散的现象,可是当我设定值不是0度而是偏转一定角度的时候就表现的啥也不是。  导致这个问题的原因是: 我的油门太小了,。。 因为一开始调的时候扇叶转的很快,不敢将油门加大,只用了 1100的油门(满量程是1900,就是程序中的占空比),油门太小导致飞行器还没有摆脱重力的影响,所以根本都不可能调对。这是放不开的第一个地方。


    接下来的时候我们就将基础油门加大了,至少可以摆脱重力的影响了,然后又是几天的P、I、D参数整定。

   先调P,如果能摆到平衡位置而且还发散震荡 ,说明P调大了,缩小一些,缩小到能够小幅等幅震荡为止 , 这里给大家说个小技巧,就是先用手将轴转到大约设定的角度,看看轴是不是小幅等幅震荡,如果小幅震荡说明P调好了,反之,如果轴转的过猛,太大了,如果力度感觉不足,那就是太小了 。  这个时候我们肯定不能要求快速性和静态误差。

   静态误差的消除,调I。  P调的可以了,就缓慢增加 I ,我们的I都是0.01的增加,具体的做法是I先加一个比较大的值,这个时候四轴反应跟吃x药一样剧烈,然后再缓慢缩小,直到四轴开始平静下来,关于平静下来我也没有一个标准,当然如果你降低的过程中能够快速摆到平衡位置而且还不震荡不超调那说明你走运了。不走运的做法是,I往下降的时候能够等幅震荡,即使这个等幅震荡的幅度还是很大只要能够等幅震荡就可以了,反正只要不发散就已经可以了,等不等幅都是主观感应,也不需要太准,毕竟人又不是仪器。

    上面两个参数调好了已经很不容易了,然后开始调D (有的开源飞控都不需要D啊,但是对于我们粗略调试来说不用D上面两个值简直就是没法用)。 刚开始调D,惯例又是没放开,因为调P,调I的时候得出的经验是我能预计到正切值的范围肯定在这附近。但是D完全不是这一回事啊,我一次 +1 +5 +10 仍然有震荡,而且快速性根本不好地说,调平稳需要5~10s !!  直到我都怀疑程序写错算法不对了,然后又是查资料又是开别人的飞控。看了匿名飞控,蔡大代码的PID部分之后发现,那几行核心代码都大差不差啊,为什么就是不行呢! 直到今天早上吧,放开了又调了一次,D生生被我加到了200  -)_(-   ,稳了!  曲线大概是这个样子


  

  上升时间不超过 0.5s 而且还能稳定在设定值那里,达到了网上成熟的飞控平稳效果。 

  

    PID算法本身而言很简单,背后的理论虽然都在课堂上交给老师了,但在用起来这么爽之后反而激发了自己的求知欲望。  PID核心算法摘自维基,如下伪代码

 

previous_error = 0
integral = 0
start:
   error = setpoint - measured_value
   integral = integral + error*dt
   derivative = (error - previous_error)/dt
   output = Kp*error + Ki*integral + Kd*derivative
   previous_error = error
   wait(dt)
   goto start

  

   总结除了关键的地方就是被一些潜在的意识所束缚,调试飞行器的过程中理论分析也是必不可少。



© 著作权归作者所有

quanwei9958

quanwei9958

粉丝 29
博文 79
码字总数 36250
作品 0
程序员
私信 提问
共享代码总结。。。做个备份,有时间再写一写心得

Verilog /Xilinx 五级流水CPU代码 http://www.oschina.net/code/snippet178268446324 Verilog VGAhttp://www.oschina.net/code/snippet178268446319 BP网络进行手写数字识别 http://www.osc......

猜猜我是吧
2015/03/14
151
0
飞行器单独轴很稳定,但是四轴一起飞不稳定

@li362927450 你好,想跟你请教个问题: 我写的一个四轴程序使用MPU6050 然后用PID控制平衡,单独两个轴的时候设定值是多少度都能马上调到相应位置,而且也很平稳,但是当四个一起转的时候就...

quanwei9958
2015/08/05
843
1
飞行器的分类四轴飞行器实践教程大学霸

飞行器的分类四轴飞行器实践教程大学霸 1.2 飞行器的分类 看过了飞行器的历史,你会认为飞行器的历史发展很慢。不过,在这里我想说,最近的一百多年是一个知识爆炸的年代。虽然飞行器才发展没...

大学霸
2015/01/28
0
0
四轴飞行器基本组成及其飞行原理详解

近日,自己组装了一台 ; 组装完后,便想深究其原理;避免只是 ; 查阅资料后,便在其他文章的基础上,将此文 出来; 文章末尾有参考文章列表,同时感谢原作者的创作; 先上一张自己组装的 ...

qq_35723367
2018/03/29
0
0
3D应用开发中的欧拉角和旋转矩阵

前言 在二维平面内,我们用来表示点的位置,通过向坐标原始值累加偏移值即可将点移动。但在三维空间内除了位置偏移外,还存在着旋转变化,因此空间内的每个物体都具有至少两个基础特性:位置...

酷家乐平台前端团队
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PhotoShop 色调:理解直方图/RGB通道信息

一、直方图:图表的形式,展示图像像素分布的情况 1.平均值:表示平均亮度 2.标准偏差值:表示亮度值范围内的中间值 3.像素: 表示用于计算直方图的像素总数 4.色阶:显示指针下面的区域亮度...

东方墨天
24分钟前
5
0
wildfly(JBoss AS)应用服务器快速入门

什么是wildfly JBoss AS 从8版本起名为wildfly。Wildfly是一个开源的基于JavaEE的轻量级应用服务器。可以在任何商业应用中免费使用。 WildFly是一个灵活的、轻量的、强大管理能力的应用程序服...

程序新视界
49分钟前
4
0
Java集合类常见面试知识点总结

Java集合类学习总结 这篇总结是基于之前博客内容的一个整理和回顾。 这里先简单地总结一下,更多详细内容请参考我的专栏:深入浅出Java核心技术 https://blog.csdn.net/column/details/21930...

Java技术江湖
52分钟前
6
0
怎么用for循环打出爱心

先上效果图: 这是用*组成的爱心,下面讲讲思路: 首先这个图形可以拆分成三部分:第一部分是上面三行的两个梯形,第二部分是中间三行的长方形,第三部分是最下面的倒三角形。 其实图形拆分好...

INEVITABLE
58分钟前
4
0
用HttpUrlConnection伪造成HttpClient

https://www.jianshu.com/p/27ad06cc39d2

shzwork
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部