精华内容
下载资源
问答
  • 四轴PID学习笔记

    2015-06-05 13:55:50
    四轴PID学习笔记
  • 四轴PID算法讲解

    2015-06-03 13:34:26
    关于我对四轴PID控制算法的讲解,包括单级PID和串级PID的讲解,希望能对大家有所帮助,实现自己的四轴平稳垂直起飞
  • 四轴PID讲解

    万次阅读 多人点赞 2015-04-19 19:44:24
    插播一条DJI招聘信息【常年有效】:包括控制算法、软件功能开发、SDK、嵌入式软件开发、GNSS接收机设计、测试开发(包括CI持续集成)... 常用四轴的两种PID算法讲解(单环PID、串级PID) 如何做到垂直起飞、四轴飞行...

    插播一条DJI招聘信息【常年有效】:包括控制算法、软件功能开发、SDK、嵌入式软件开发、GNSS接收机设计、测试开发(包括CI持续集成)。请各位对空中机器人,地面机器人,教育机器人有兴趣的同学将简历发送至nemol1990@gmail.com

     

    正文开始:这篇文章分为三个部分:

     

    • PID原理普及
    • 常用四轴的两种PID算法讲解(单环PID、串级PID)
    • 如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?

     

    PID原理普及

    1、  对自动控制系统的基本要求:

            稳

            稳定性(P和I降低系统稳定性,D提高系统稳定性):在平衡状态下,系统受到某个干扰后,经过一段时间其被控量可以达到某一稳定状态;

            准确性(P和I提高稳态精度,D无作用):系统处于稳态时,其稳态误差;

            快速性(P和D提高响应速度,I降低响应速度):系统对动态响应的要求。一般由过渡时间的长短来衡量。

    2、  稳定性:当系统处于平衡状态时,受到某一干扰作用后,如果系统输出能够恢复到原来的稳态值,那么系统就是稳定的;否则,系统不稳定。

    3、  动态特性(暂态特性,由于系统惯性引起):系统突加给定量(或者负载突然变化)时,其系统输出的动态响应曲线。延迟时间、上升时间、峰值时间、调节时间、超调量和振荡次数。

    通常:    上升时间峰值时间用来评价系统的响应速度

                    超调量用来评价系统的阻尼程度

                    调节时间同时反应响应速度阻尼程度

    4、  稳态特性:在参考信号输出下,经过无穷时间,其系统输出与参考信号的误差。影响因素:系统结构、参数和输入量的形式等

    5、  比例(P)控制规律:具有P控制的系统,其稳态误差可通过P控制器的增益Kp来调整:Kp越大,稳态误差越小;反之,稳态误差越大。但是Kp越大,其系统的稳定性会降低。

    由上式可知,控制器的输出m(t)与输入误差信号e(t)成比例关系,偏差减小的速度取决于比例系数Kp:Kp越大,偏差减小的越快,但是很容易引起振荡(尤其是在前向通道中存在较大的时滞环节时);Kp减小,发生振荡的可能性小,但是调节速度变慢。单纯的P控制无法消除稳态误差,所以必须要引入积分I控制。原因:(R为参考输入信号,Kv为开环增益)

    当参考输入信号R不为0时,其稳态误差只能趋近于0,不能等于0。因为开环增益Kv不为0。

    6、 比例微分(PD)控制规律:可以反应输入信号的变化趋势,具有某种预见性,可为系统引进一个有效的早期修正信号,以增加系统的阻尼程度,而从提高系统的稳定性。(tao为微分时间常数

    如果系统中存在较大时滞的环节,则输出变化总是落后于当前误差的变化,解决的方法就是使抑制误差的作用变化“超前”,增强系统的稳定性。

    7、  积分(I)控制规律:由于采用了积分环节,若当前误差e(t)为0,则其输出信号m(t)有可能是一个不为0的常量。需要注意的是,引入积分环节,可以提到系统型别,使得系统可以跟踪更高阶次的输入信号,以消除稳态误差。

    8、 比例积分(PI)控制规律:在保证系统稳定的前提下,引入PI控制器可以提高它的稳态控制质量,消除其稳态误差。(TI为积分时间常数

            积分调节可以消除静差,但有滞后现象,比例调节没有滞后现象,但存在静差。

            PI调节就是综合P、I两种调节的优点,利用P调节快速抵消干扰的影响,同时利用I调节消除残差。

    9、 比例积分微分(PID)控制规律:除了积分环节提高了系统型别,微分环节提高了系统的动态性能。

    观察PID的公式可以发现:Kp乘以误差e(t),用以消除当前误差;积分项系数Ki乘以误差e(t)的积分,用于消除历史误差积累,可以达到无差调节;微分项系数Kd乘以误差e(t)的微分,用于消除误差变化,也就是保证误差恒定不变。由此可见,P控制是一个调节系统中的核心,用于消除系统的当前误差,然后,I控制为了消除P控制余留的静态误差而辅助存在,对于D控制,所占的权重最少,只是为了增强系统稳定性,增加系统阻尼程度,修改PI曲线使得超调更少而辅助存在。

    10、P控制对系统性能的影响:

     

    • 开环增益越大,稳态误差减小(无法消除,属于有差调节)
    • 过渡时间缩短
    • 稳定程度变差

     

    11、I控制对系统性能的影响:

     

    • 消除系统稳态误差(能够消除静态误差,属于无差调节)
    • 稳定程度变差

     

    12、D控制对系统性能的影响:

     

    • 减小超调量
    • 减小调节时间(与P控制相比较而言)
    • 增强系统稳定性
    • 增加系统阻尼程度

     

    13、PD控制对系统性能的影响:

     

    • 减小调节时间
    • 减小超调量
    • 增大系统阻尼,增强系统稳定性
    • 增加高频干扰

     

    14、PI控制对系统性能的影响:

     

    • 提高系统型别,减少系统稳态误差
    • 增强系统抗高频干扰能力
    • 调节时间增大

     

    15、P调节、I调节降低系统稳定性

            D调节增强系统稳定性

            所以PI调节器的PP调节器的P要小一些,PD调节器的PP调节器的P要大一些

    16、位置式PID表达式(数字PID):

    P(n)为第n次输出,e(n)为第n次偏差值,Ts为系统采用周期,Ti为积分时间常数,Td为微分时间常数

    17、消除随机干扰的措施:

     

    • 几个采样时刻的采样值求平均后代替本次的采样值
    • 微分项的四点中心差分(e(n)-e(n-3)+3e(n-1)-3e(n-2))*1/(6Ts)
    • 矩形积分改为梯形积分

     

    18、PID调试一般原则

     

    • 在输出不振荡时,增大比例增益P
    • 在输出不振荡时(能消除静态误差就行),减小积分时间常数Ti
    • 在输出不振荡时,增大微分时间常数Td

     

    19、描述比例Kp的性能:比例带。比例带就是Kp的倒数:比例带越大,Kp越小,无超调,稳态误差大,调节时间长;比例带越小,Kp越大,系统会有超调,甚至发散,稳态 误差减小,调节时间缩短

    20、描述积分Ki的性能:积分时间常数Ti。与积分系数Ki也是倒数关系:积分时间常数Ti越大,积分系数Ki越小,系统稳定性增加,但是调节速度变慢;积分时间常数Ti越小, 积分系数Ki越大,系统稳定性降低,甚至振荡发散。无论增大还是减小积分时间常数Ti,被调量最后都没有静差

    21、描述微分Kd的性能:微分时间常数Td。主要用于克服调节对象有较大的时滞。Td越大,微分作用越强,系统阻尼程度增加。

    22、比例P调节作用:

    系统一旦出现偏差,比例调节立即产生调节作用用以减少偏差

    比例作用大,可以加快调节,减少调节时间,减少稳态误差

    过大的比例作用,使系统的稳定性下降

    23、积分I调节作用:

    消除稳态误差

    系统稳定性下降,动态响应变慢

    24、微分D调节作用:

    具有预见性,能预见偏差变化趋势,有超前的控制作用,增强系统动态性能

    减少超调量,减少调节时间

    25、比例积分PI调节器

     

    • 引入积分消除了稳态误差,但是降低了原有系统的稳定性
    • 超调趋势随着Kp增大、积分时间Ti减小而增大

     

    26、积分分离的措施:(在系统启动,结束或者大幅度增减时,短时间系统输出会有很大偏差,造成PID运算的积分积累,致使控制量超过执行结构可能允许的最大动作范围, 引起系统较大的超调,甚至振荡)

     

    • 当误差大于某个阈值时,采用PD控制,当误差在该阈值范围内,采用PID控制

     

    注意:阈值的选取,过大,则达不到积分分离的目的;过小,则会导致无法进入积分区

    27、抗积分饱和的措施:

     

    • 限制PI调节器的输出(这样有可能在正常操作中不能消除系统的余差)
    • 积分分离法:误差在某个范围内开启积分调节(既不会积分饱和又能在小偏差时利用积分作用消除偏差)
    • 遇限削弱积分法:调节器输出大于某个值后,只累加负误差(可避免控制量长时间停留在饱和区)

     

    28、比例微分PD调节器

     

    • 仍然属于有差调节
    • 提高了系统的稳定性,因为微分D的作用总是试图抑制被调量的振荡,所以也增加了系统的阻尼程度
    • 因为提高了系统的稳定性,所以可以适当加大Kp
    • D只是辅助作用,主要还是P控制

     

    29、MATLAB仿真

    纯P调节(Kp大,稳态误差小,响应快,但超调大)

    PI调节(Ti小,响应速度加快,超调大,系统振荡加剧)

    PI调节(在同样积分常数Ti下,减小比例增益Kp可减小

    超调,增加系统的稳定性)

    PD调节(引入微分项,提高了响应速度,增加了系统的稳定性但不能消除系统的余差)

    PD调节(微分时间越大,微分作用越强,响应速度越快,系统越稳定)

    PID调节(PD基础上I作用的引入消除了余差,达到了理想的多项性能指标要求:超调、上升时间、调节时间、余差等)

    30、PID参数整定需要查看三种基本曲线,缺一不可:

     

    • 设定值
    • 被调量
    • PID输出

     

    如果是串级调节系统,还需要收集:

     

    • 副调的被调量
    • 副调PID输出

     

    31、在整定PID参数时,PID三个参数的大小都不是绝对的,而是相对的。也就是说,如果发现一个参数比较合适,就把这个参数固定死,不管别的参数怎么变化,永远不动前 面固定的参数。这是要不得的。

    32、如果是串级调节系统,在整定参数时,一般把主、副调隔离开来,先整定一个回路,再全面考虑。一般而言,先整定内回路。把PID参数隔离开来,先去掉积分、微分作 用,让系统变为纯比例调节方式,再考虑积分,最后考虑微分

    33、整定比例带

    方法:逐渐加大比例作用,一直到系统发生等幅振荡,记录下此时的比例增益,乘以0.6~0.8即可

    注意1:比例作用很强时的振荡周期很有规律,基本上呈正弦波;而在极弱比例作用参数下的系统有时也会呈现出有规律的振荡,但是往往参杂了几个小波峰。

    现象:最终整定的系统,其调节效果应该是被调量波动小而平缓。在一个扰动过来之后,被调量的波动应该呈现“一大一小两个波”(波形高度差4:1)

    注意2:如果看不到这种被调量的周期特征,那说明参数整定的很好。即满足快速性,也不会超调

    整定积分时间

    方法:主调的作用是为了消除静态偏差,当比例作用整定好的时候,就需要逐渐加强积分作用(调小积分时间Ti或者增大积分项系数Ki),直到消除静差为止。也就是说, 积分作用只是辅助比例作用进行调节,它仅仅是为了消除静态偏差。

    整定微分作用

    方法:逐渐加强微分作用(增加微分时间Td或者增加微分项系数Kd),直到PID输出毛刺过多

    34、串级调节系统,一般而言,主调的比例弱,积分强,以消除静差;副调的比例强,积分弱,以消除干扰。但是不绝对!

    35、不完全微分PID控制:微分控制对高频干扰非常敏感,为了避免在误差扰动突变时的微分控制的不足,在微分项通道前加一个低通滤波器可以使得系统性能得到改善

    36、微分先行PID控制:只对被调量进行微分,而不对给定值进行微分。这样的处理在改变给定值时,输出不会改变,被控量的变化通常比较缓和,适用于给定值频繁升降的场合。

     

    常用四轴的两种PID算法讲解(单环PID、串级PID)

            这里主要讲解的PID算法属于一种线性控制器,这种控制器被广泛应用于四轴上。要控制四轴,显而易见的是控制它的角度,那么最简单,同时也是最容易想到的一种控制策略就是角度单环PID控制器,系统框图如图所示:

    或许有些朋友看得懂框图,但是编程实现有一定困难,在这里笔者给出了伪代码:

    上述角度单环PID控制算法仅仅考虑了飞行器的角度信息,如果想增加飞行器的稳定性(增加阻尼)并提高它的控制品质,我们可以进一步的控制它的角速度,于是角度/角速度-串级PID控制算法应运而生。在这里,相信大多数朋友已经初步了解了角度单环PID的原理,但是依旧无法理解串级PID究竟有什么不同。其实很简单:它就是两个PID控制算法,只不过把他们串起来了(更精确的说是套起来)。那这么做有什么用?答案是,它增强了系统的抗干扰性(也就是增强稳定性),因为有两个控制器控制飞行器,它会比单个控制器控制更多的变量,使得飞行器的适应能力更强。为了更为清晰的讲解串级PID,这里笔者依旧画出串级PID的原理框图,如图所示:

    同样,为了帮助一些朋友编程实现,给出串级PID伪代码:

    关于如何整定单环PID与串级PID的问题,请原谅笔者的能力有限,无法给出标准而可靠的整定流程,这里我给出三个链接,第一个为阿莫论坛的一位同学的单环PID整定现象与思考,个人觉得参考价值很大;第二、三两个分别为APM与PX4的串级PID整定现象说明,大家可以参考他们的网页说明。

    www.amobbs.com/thread-5554367-1-1.html

    copter.ardupilot.com/wiki/configuration/tuning/

    pixhawk.org/users/multirotor_pid_tuning

     

    而笔者在整定串级PID时的经验则是:先整定内环PID,再整定外环P。

    内环P:从小到大,拉动四轴越来越困难,越来越感觉到四轴在抵抗你的拉动;到比较大的数值时,四轴自己会高频震动,肉眼可见,此时拉扯它,它会快速的振荡几下,过几秒钟后稳定;继续增大,不用加人为干扰,自己发散翻机。

    特别注意:只有内环P的时候,四轴会缓慢的往一个方向下掉,这属于正常现象。这就是系统角速度静差。

    内环I:前述PID原理可以看出,积分只是用来消除静差,因此积分项系数个人觉得没必要弄的很大,因为这样做会降低系统稳定性。从小到大,四轴会定在一个位置不动,不再往下掉;继续增加I的值,四轴会不稳定,拉扯一下会自己发散。

    特别注意:增加I的值,四轴的定角度能力很强,拉动他比较困难,似乎像是在钉钉子一样,但是一旦有强干扰,它就会发散。这是由于积分项太大,拉动一下积分速度快,给  的补偿非常大,因此很难拉动,给人一种很稳定的错觉。

    内环D:这里的微分项D为标准的PID原理下的微分项,即本次误差-上次误差。在角速度环中的微分就是角加速度,原本四轴的震动就比较强烈,引起陀螺的值变化较大,此时做微分就更容易引入噪声。因此一般在这里可以适当做一些滑动滤波或者IIR滤波。从小到大,飞机的性能没有多大改变,只是回中的时候更加平稳;继续增加D的值,可以肉眼看到四轴在平衡位置高频震动(或者听到电机发出滋滋的声音)。前述已经说明D项属于辅助性项,因此如果机架的震动较大,D项可以忽略不加。

    外环P:当内环PID全部整定完成后,飞机已经可以稳定在某一位置而不动了。此时内环P,从小到大,可以明显看到飞机从倾斜位置慢慢回中,用手拉扯它然后放手,它会慢速回中,达到平衡位置;继续增大P的值,用遥控器给不同的角度给定,可以看到飞机跟踪的速度和响应越来越快;继续增加P的值,飞机变得十分敏感,机动性能越来越强,有发散的趋势。

     

    如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?

            眼看这三个问题是三个不同的问题,其实就原理上讲,他们的原因在绝大多数情况下都是由于加速度计引起的。如果飞机可以垂直起飞,说明你的加速度计放置地很水平,同时也说明你的PID控制算法参数找的不错,既然可以垂直起飞,那么飞行过程中,只要无风,四轴几乎就不会飘,自然而然就可以脱控飞行。由此可见,加速度计是个十分重要的器件。

            在姿态解算中,或者说在惯性导航中,依靠的一个重要器件就是惯性器件,包括了加速度计和陀螺仪。陀螺仪的特性就是高频特性好,可以测量高速的旋转运动;而加速度计的低频特性好,可以测量低速的静态加速度。无论是何种算法(互补滤波、梯度下降、甚至是Kalman滤波器),都离不开对当地重力加速度g的测量和分析。惯性导航利用的就是静态性能好的加速度计去补偿动态性能好的陀螺仪漂移特性,得到不飘并且高速的姿态跟踪算法,因此基于惯性器件的姿态解算,加速度计是老大,它说了算。

            下面,我给大伙推理一下四轴如何平稳飞信的思路,欢迎各位批评指出::-)

            首先,为了让四轴平稳的悬停或飞行在半空中,四个电机必须提供准确的力矩->假设力矩与电机PWM输出呈线性关系,也就是必须提供准确的4路PWM->4路PWM由遥控器输入(期望角度)、PID算法及其参数和姿态解算输出(当前角度)组成,假设遥控器输入不变(类似脱控)、PID算法及其参数也较为准确(PID参数无需十分精确,但只要在某个合理的范围内,控制品质差不了多少),也就是姿态解算的输出必须是十分准确的,可以真实反应飞行器的实际角度->姿态解算的结果由加速度计和陀螺仪给出,根据前述惯性导航的描述,加速度计补偿陀螺仪,因此要得到精确的姿态解算结果,务必要求加速度输出精确的重力加速度g->这里仅讨论悬停飞行,因此忽略掉额外的线性加速度(事实证明,在四轴强机动飞行过程中,线性加速度必须要考虑并消除),假设加速度计输出重力加速度g,这个重力加速度g必须十分“精确”。

            我先写到这里,总结一下:精准力矩->精准PWM->精准姿态->加速度计输出“精确”重力加速度g。这里的“精确”打了引号,意思不是说加速度的性能十分好,要输出精确的当地加速度g,而是说它能够准确反应机架的角度。为了达到悬停、平稳的飞行效果,控制算法输出的PWM会让加速度计输出的重力加速度g在XOY平面内的分量就可能少,也就是说:PID控制算法控制的不是机架水平,而是加速度计水平PID不知道机架是什么东西,它只认加速度计,它的使命就是让加速度计水平。我现在假设加速度计与机架存在某个角度,比如右倾30°,四轴主视图如图所示。

    上图中,加速度计(红线)与四轴机架的水平面(虚线)呈30°。起飞后,PID控制算法会尝试将加速度计调整至水平位置,因此四轴就会往图中左边飘,倾斜角度也为30°。这就是为什么飞机无法垂直起飞,或者飞行过程中往一个方向飘的原因:加速度计和机架没有水平。因此在加速度计的机械安装时,尽量保证加速度计与机架水平。如果有些朋友已经将加速度计固定在飞控板上,可以通过遥控器的通道微调功能设置悬停时的期望角度,软件上校正这种机械不水平。

            除了上述讨论的加速度计安装水平问题,也需要对加速度计进行零偏置校正,具体的方法叫做6位置标定法:即将加速度计沿着6个方向放置,分别记录重力加速度计g在6个方向上的最大输出值,然后取平均,得到圆球的中心点(这里假设g投影为球,实际上为椭球,需要进行最小二乘法拟合求三轴标定系数)。

            最后提一点,如果加速度计和遥控器均做了调整,飞机可以做到垂直起飞,并且飞行效果还行,但是飞机的回中速度较慢,感觉就像是在抬轿子一样。具体描述:悬停时,猛往一个方向打摇杆后立即放手,飞机会往摇杆方向走很远才停下。这是因为飞机过于稳定,也就是内环的作用过强或者外环作用过弱导致,解决方法是降低内环P或者加大外环P。

     

    以上内容,均为笔者学习过程中的体会和想法,难免有错误之处,还请诸位批评指出,共同学习进步。

     

     

     

     

     

    展开全文
  • 四轴pid无线+蓝牙+详细分析
  • 匿名四轴PID

    2015-08-03 23:11:55
    匿名四轴经典PID算法,采用stm32的主控,基于MDK平台开发。
  • 学长的四轴PID讲解

    2020-05-28 07:28:20
    https://blog.csdn.net/wkdwl/article/details/50460695 学长的一篇四轴PID讲解,王龙博客里推荐的。 https://blog.csdn.net/nemol1990/article/details/45131603
    展开全文
  • 匿名四轴PID参数调试讲解

    千次阅读 多人点赞 2016-10-21 18:40:50
    匿名四轴PID参数调试讲解

    【过程详解】

    1、要在飞机的起飞油门基础上进行PID参数的调整,否则“烤四轴”的时候调试稳定了,飞起来很可能又会晃荡。

    2、内环的参数最为关键!理想的内环参数能够很好地跟随打舵(角速度控制模式下的打舵)控制量。
    在平衡位置附近(正负30度左右),舵量突加,飞机快速响应;舵量回中,飞机立刻停止运动(几乎没有回弹和震荡)。
    2.1首先改变程序,将角度外环去掉,将打舵量作为内环的期望(角速度模式,在APM中叫ACRO模式,在大疆中叫手动模式)。
    2.2加上P,P太小,不能修正角速度误差表现为很“软”倾斜后难以修正,打舵响应也差。P太大,在平衡位置容易震荡,
    打舵回中或给干扰(用手突加干扰)时会震荡。合适的P能较好的对打舵进行响应,又不太会震荡,但是舵量回中后会回弹好几下才能停止(没有D)。
     
    太大的D会在横滚俯仰混控时表现出来(尽管在“烤四轴”时的表现可能很好),具体表现是四轴抓在手里推油门会抽搐。
    如果这样,只能回到“烤四轴”降低D,同时P也只能跟着降低。D调整完后可以再次加大P值,以能够跟随打舵为判断标准。
    2.4加上I,会发现手感变得柔和了些。由于笔者“烤四轴”的装置中四轴的重心高于旋转轴,这决定了在四轴偏离水平位置后
    会有重力分量使得四轴会继续偏离平衡位置。I的作用就可以使得在一定角度范围内(30度左右)可以修正重力带来的影响。
    表现打舵使得飞机偏离平衡位置,舵量回中后飞机立刻停止转动,若没有I或太小,飞机会由于重力继续转动。

    3、角度外环只有一个参数P。将外环加上(在APM中叫Stabilize模式,在大疆中叫姿态模式)。打舵会对应到期望的角度。
    P的参数比较简单。太小,打舵不灵敏,太大,打舵回中易震荡。以合适的打舵反应速度为准。

    4、至此,烤四轴”效果应该会很好了,但是两个轴混控的效果如何还不一定,有可能会抽(两个轴的控制量叠加起来,
    特别是较大的D,会引起抽搐)。如果抽了,降低PD的值,I基本不用变。

    5、加上偏航的修正参数后(直接给双环参数,角度外环P和横滚差不多,内环P比横滚大些,I和横滚差不多,D可以先不加),
    拿在手上试过修正和打舵方向正确后可以试飞了(试飞很危险!!!!选择在宽敞、无风的室内,1米的高度(高度太低会有地面效应干扰,
    太高不容易看清姿态且容易摔坏),避开人群的地方比较适合,如有意外情况,立刻关闭油门!!!
    5.1试飞时主要观察这么几个方面的情况,一般经过调整的参数在平衡位置不会大幅度震荡,需要观察:
    5.1.1在平衡位置有没有小幅度震荡(可能是由于机架震动太大导致姿态解算错误造成。也可能是角速度内环D的波动过大,
    前者可以加强减震措施,传感器下贴上3M胶,必要时在两层3M泡沫胶中夹上“减震板”,注意:铁磁性的减震板会干扰磁力计读数;
    后者可以尝试降低D项滤波的截止频率)。
    5.1.2观察打舵响应的速度和舵量回中后飞机的回复速度。
    5.1.3各个方向(记得测试右前,左后等方向)大舵量突加输入并回中时是否会引起震荡。
    如有,尝试减小内环PD也可能是由于“右前”等混控方向上的舵量太大造成。

    6、横滚和俯仰调好后就可以调整偏航的参数了。合适参数的判断标准和之前一样,打舵快速响应,舵量回中飞机立刻停止转动(参数D的作用)。

    至此,双环PID参数调节完毕!祝爽飞!

    展开全文
  • 四轴PID算法学习前言一、什么是PID二、 PID是怎么控制的比例控制积分控制微分控制三、PID应用 前言 PID控制算法在控制领域应用的非常广泛,在四轴飞行器的开发中为了保证姿态稳定在大多数情况下采用的也是PID算法,...

    前言

    PID控制算法在控制领域应用的非常广泛,在四轴飞行器的开发中为了保证姿态稳定在大多数情况下采用的也是PID算法,我在学习四轴之前也接触过PID,但是对它的理解总是不够深刻,因此最近也查了一些资料把自己的理解写下来。

    一、什么是PID

    简单来说,我们为什么要用PID控制呢?因为当我们在做实验或者项目的时候,总会遇到这么一个问题,怎么让单片机控制系统的输出值准确、快速地达到我们期望的值,举个例子,在电烤箱恒温控制实验中,如何通过加热热电偶使烤箱的温度准确的达到我们的期望加热温度?在电机转速控制中,如何通过控制PWM使电机的转速达到我们期望的转速?这时,就需要PID登场了。下图就是PID控制的方框图
    PID
    抛开PID这部分,对于学过自控的人很容易看出这是个闭环系统,由于存在输出反馈的环节使系统的输出量可以得到控制,但是由于被控对象往往是不变的,所以y(t)的波形也往往存在着很多“缺陷”。我们往往以加入控制器的形式,改变系统的某些性能来使y(t)达到期望的波形。说了这么多,PID的形式是什么样的呢?
    公式
    结合上面的方框图来看,PID的输入量是设定值与输出值的误差,输出量是被控对象的输入信号。我们要知道PID控制器通常应用在线性系统中(控制力度越大,系统反应越强),或者是非线性系统中局部线性的地方。可想而知,PID的本质就是对误差进行一个数学上的运算,使其能够根据误差曲线的“特征”(如数值大小、斜率等)来产生相应强度的输出来作用于被控对象。这里仍以电机转速控制为例,当转速误差越大时,PID的输入就越大,因此通过PID公式计算后会产生更强的输出(PWM)作用于电机来加快转速。这就是PID控制起到的作用。

    二、 PID是怎么控制的

    这里,我不打算通过数学计算来说明PID的控制效果,只是说说我对PID的一些个人理解。从PID的数学公式入手,输入是误差e(t),输出是u(t)。那么输出与输入之间又怎样的关系呢?这里Kp 、Ti和Td是我们根据实际系统设定的常数(正的),抛去这些常数只看变量,很容易看出输出量与误差的大小、误差的积分、误差的微分有关。首先,我们只看比例项的变量e(t),e(t)越大,u(t)就越大,e(t)越小,u(t)就越小。我们再只看积分项,由于误差e(t)越大,误差的累计就会越快,导致误差的积分更大,输出u(t)便会越大,反之误差越小,输出会越小。我们再只看微分项,误差的变化率越快,误差的微分 de(t)/dt 也就越大,因而使得输出量u(t)就更大;相反,误差的变化的慢,输出量就会更小。单独分析三个部分之后,在把这三者的作用叠加便是最终PID控制的作用了。
    只从公式入手可能对PID还是有很多不懂得地方。下面,我们再结合实例看看PID在控制效果上是怎么体现出来的。我想了很多的例子感觉都不是很形象这里便引用https://blog.csdn.net/qq_25352981/article/details/81007075这篇文章的例子,讲的很形象!

    比例控制

    刚才分析过了,只看比例项的作用,当误差越大时,输出越大,控制效果也就越强。当误差越小时,输出也就越小,控制效果也就越弱。以水位控制为例,假设有一个水缸,我们每一时刻对水缸进行注水使水位达到我们的期望高度。目标水位是1米,当前水位是0.2米,比例系数我们设定为0.5,比例控制系统的输入量为目标水位与当前水位之差,输出量为下一时刻我们的注水量。根据公式计算:在t=0时,e(t)为0.8m,kp=0.5,因此t=1时刻的注水量为u(t)=0.8*0.5=0.4m;那么在t=1时刻的水位高度由0.2m变成了0.6m,再计算t=2时刻的注水量为(1-0.6)*0.5=0.2m,也就是说在t=2时刻,水位高度变成了0.8m,依次计算在t=3时刻,注水量为0.1m,水位变成0.9m。如此循环往复,最终水位高度会越来越接近目标水位,误差也会越来越小,注水量趋近于0。这就是比例控制的作用了,我们可以看到,误差越大时,注水量也会越大从而使水位更快的靠近目标水位,当误差越小时,注水量也会慢慢减小直至为0。下图是用matlab的仿真结果。
    P
    这样的效果从刚才的例子中可以大致想象到,但是这里要注意两个问题:
    1.最终水位并不会准确到达1m,而是存在一个稳态误差,这是因为在实际系统中,水缸可能会“漏水”,如电机转速控制中,电机转动的同时要克服空气阻力和摩擦阻力;在电烤现恒温控制中,加热的同时还会像外界散热。当“漏水”的量等于注水的量时,水位即使想再继续上升也上不去了,即遇到了一个瓶颈,这时系统便会稳定,这就是稳态误差存在的原因。
    2.比例系数因为是人为选取的,过小会使控制速度缓慢,但是太快会产生超调现象,对于上例中如果比例系数变为1.5,那么t=1时刻的注水量为1.2m,则t=1时刻的水位高为1.4m高于目标水位,这时误差为负,下一时刻则要向外倒水。这就形成了超调。水位曲线图如下:
    P2peye.com

    积分控制

    既然只通过比例控制并不能实现无误差跟踪,那要怎样才能在只有误差e(t)作为输入的情况下,把差的那点儿稳态误差弥补上呢。这时候我们大概就能联想到,积分是具有累积效果的,它代表着误差变化曲线与时间轴围成的面积。既然他是随时间累积的,那我们把它乘以一个适当系数再与比例控制的效果相加结果会怎么样呢?
    不妨结合刚刚只有比例控制的水位变化曲线想一想,在第一阶段中由于比例控制的效果水位会一直上升,这段期间实际水位始终低于目标水位,因此误差一直为正,误差的累积也会越来越大,我们在乘以一个合适的系数后(这里合适的系数可以理解为一种换算)加到比例控制上更加加快的水位的上升。在第二阶段,水位到达了刚刚稳定时的位置,如果只有比例作用这时水位就不在变化了,但是积分项的存在,之前误差的累积使得注水量的增加超过了“漏水”的量,水位可以继续上升直到目标水位。我们这里看下带有比例积分控制的水位曲线图。
    PI
    可以看出,现在水位已经可以很好的保持在1m的位置了。从图中可以发现虽然系统没有了稳态误差,即稳态性能得到了提高,但是系统产生了超调。这个超调其实可以理解,因为当我们水位到达目标水位后,由于积分项的作用,误差还会进行累积会使水位继续上升,这时当前的误差为负,但是总体历史上的误差总和仍为正,水位继续上升,直到历史上的误差总和为负时水位便会下降,这样水位会围绕着目标水位震荡几次后才会稳定。从这一现象中我们可以得出两个结论:
    1.加入积分项,虽然提高了系统的稳态性能,但是也使系统出现了超调降低了其动态性能,使其调节时间变长。
    2.积分项的存在使系统有了滞后的特性,也可以理解为惯性,即水位的变化要考虑到历史上所有的误差数据,这就会导致即便当前的误差为0,也阻止不了水位继续变化,直到历史上的误差累积总和变号才会使水位向相反方向变化。在一定程度上也就拖慢了系统的进程。

    微分控制

    事实上,对于性能要求不高的系统来说,比例积分控制已经可以解决信号的跟踪问题了。既然由于积分项的存在会使系统产生超调还会减慢系统进程,有没有什么方法让系统更快更平稳呢?不妨加入微分控制试一试,微分项:d(e(t))/dt,在水位控制中由于我们采取的单位时长为1,这里的微分项我们可以理解为e(t)-e(t-1),
    假设目标水位是h,t时刻水位是h(t),那么微分项可以用h-h(t)-(h-h(t-1))=h(t-1)-h(t)代替,这个数再乘以一个系数就是微分项起的作用了。我们可以很明显的看出如果水位是上升的那么微分项的值是负的;如果水位时下降的,那么微分项的值是正的。也就是说,微分项的存在增大了系统的阻尼,水位想上升时,微分项会抑制它上升,水位想下降时,微分项会抑制它下降。这样,水位的超调就不会这么大了,使曲线总体上更加平稳,也更快的趋向稳定。下图是加入微分控制后的水位变化曲线。
    PID
    可以看到此时的曲线既没有了超调,也没有了稳态误差,这就使PID控制的强大作用!那么微分项虽然可以提高系统的阻尼,加快系统平稳,但也使系统更加的敏感,我们可以想象在实际生活中,存在着各种各样的干扰,包括外部的干扰和测量时数据错误的干扰等,这些干扰的存在很容易使微分项产生很大的变化,这就使系统的稳态性能降低了。因此,在实际进行PID参数整定的时候各个参数既不能太小也不能过大,各个参数还要互相弥补,最终使输出曲线达到满意的程度。

    三、PID应用

    在实际编程过程中,由于单片机处理的是离散数据,因此PID的公式可以表示为如下形式:
    离散
    主要有两种编程思路,分别为:位置式PID和增量式PID,此处不详细介绍了。
    此外,为了减小由积分项而引起超调现象常常还采用积分分离法和抗积分饱和法来改善系统的输出性能。
    1.积分分离法:当偏差大于某个规定的门限值时,取消积分作用,从而使积分不至于过大。只有当e(k)较小时,才引入积分作用,以消除静差。这样控制量不易进入饱和区;即使进入了饱和区,也能较快退出,所以能使系统的输出特性得到改善。
    2.抗积分饱和法:当控制量进入饱和区后,只执行削弱积分项的累加,而不进行增大积分项的累加。即计算u(k)时,先判断u(k-1)是否超过限制范围,若已超过umax,则只累计负偏差;若小于umin,则只累计正偏差,这种方法也可以避免控制量长期停留在饱和区。

    展开全文
  • 四轴pid详解

    千次阅读 2017-11-15 15:57:52
    转载自----http://blog.csdn.net/nemol1990/article/details/45131603正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱...
  • 四轴PID控制算法

    千次阅读 2017-06-05 22:38:18
    四轴控制原理 四轴飞行器的螺旋桨与空气发生相对运动,产生了向上的升力,当升力大于四轴的重力时四轴就可以起飞了。 四轴飞行器飞行过程中如何保持水平呢? 我们先假设一种理想状况,四个电机的转速是完全相同的...
  • 正文开始:这篇文章分为三个部分:PID原理普及常用四轴的两种PID算法讲解(单环PID、串级PID)如何做到垂直起飞、四轴飞行时为何会飘、如何做到脱控?PID原理普及1、  对自动控制系统的基本要求:  &...
  • 四轴pid调试心得

    千次阅读 2017-04-12 16:52:27
    首先例举第一个例子,我调的第一台四轴飞行器,十字型四轴飞行器,讲下配置:  网上一百多的650机架,好赢20A电调,新西达2212 1000kV,1045的桨,2200mah电池。  主控是STM32F103  这是第一个四轴的帖子  ...
  • 在整定PID参数时,PID三个参数的大小都不是绝对的,而是相对的。也就是说,如果发现一个参数比较合适,就把这个参数固定死,不管别的参数怎么变化,永远不动前 面固定的参数是错误的;如果是串级调节系统,在整定...
  • 两种四轴PID讲解

    千次阅读 2017-10-10 09:27:24
    PID算法属于一种线性控制器,这种控制器被广泛应用于四轴上。要控制四轴,显而易见的是控制它的角度,那么最简单,同时也是最容易想到的一种控制策略就是角度单环PID控制器。 相应的伪代码如下: 以ROLL...
  • 浅谈四轴PID调试心得

    千次阅读 多人点赞 2017-05-10 23:24:46
    四轴调试也可参照着调。     PID调试心得 本人不是自动化出身,也没有受过专业训练,都是自己摸索,在这里浅述一下自己的PID参数整定心得。所言之物皆由实践及自己的理解得出,如有不当之处还请指正...
  • 姿态解算(七)PID - 浅谈四轴 PID 调试心得

    千次阅读 多人点赞 2016-11-28 15:55:13
    首先例举第一个例子,我调的第一台四轴飞行器,十字型四轴飞行器,讲下配置: 网上一百多的650机架,好赢20A电调,新西达2212 1000kV,1045的桨,2200mah电池。 主控是STM32F103 这是第一个四轴的帖子 ...
  • 四轴PID思路整理

    2018-06-04 15:54:00
    常用四轴的两种PID算法讲解(单环PID、串级PID) 这里主要讲解的PID算法属于一种线性控制器,这种控制器被广泛应用于四轴上。要控制四轴,显而易见的是控制它的角度,那么最简单,同时也是最容易想到的一种控制策略...
  • 这篇文章来自于http://blog.csdn.net/nemol1990/article/details/45131603
  • 四轴飞控pid simulink仿真

    千次阅读 2020-07-07 23:09:27
    最近想自己用stm32搞一个四轴飞行器的飞控,现在进展比较缓慢,主要受制于想做一个wifi无线透传的视频实时传递。用了一个新的模块,调起来难度比我想象的大不少。今天调试单片机又出现了内存管理失败。有点烦。。 ...
  • 这篇文章的主旨并不是直接教你怎么调,而是告诉你这么调有什么道理,还要告诉大家为什么‘只’使用PID四轴会在飞行中震荡,告诉大家为什么光使用PID并不能实现对四轴姿态‘足够好’的控制。文章中还是涉及了不少...
  • 使用simulink搭建了pid控制器,simscape multibody搭建了可视模型同时可进行各个机械机构之间的相互作用力仿真。simscape electrical搭建电机模型。控制效果不错。应对阶跃输入较差。如,从0到5 需要输入一个从0到5...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 226
精华内容 90
关键字:

四轴pid