PID调节(理论)

AQ的PID相关资料,我添加了些《机械控制工程基础》中的内容。

什么是PID

这里写图片描述
PID包括比例P,积分I,微分D控制器。
使用PID控制器,你需要以下6个基本元素:
Error(偏差):你的期望值与实际值的差值。比如你想要让室内温度变为10度,但开了空调后,温度只有9度,那1度就是偏差。
比例项P:让输出量与输入量成正比。Error越大,output越大,error越小,output越小。P项决定了实际值达到期望值的快慢。以下来自《机械控制工程基础》
这里写图片描述
这里写图片描述
这里写图片描述
积分项I:积分项是与过往时间内的偏差积分(偏差累计)相关的。如果error一直在增加,积分项将会导致较大的输出;如果error一直在减小,积分项就会导致较小的输出。积分项是用来消除稳态误差的。
这里写图片描述
这里写图片描述
微分项D: 微分项是与偏差的变化速度相关的。D项不足之处是会放大噪声信号。
这里写图片描述
这里写图片描述
Limits:限制上述控制器的输出。例如,如果电机电压范围在4V~12V间,如果不限制的话,PID控制器输出的值太大则会损坏电机。
系统:你当然需要一个系统,除非你只做模拟。
PID调节效果图:
这里写图片描述

如何调节PID参数?

PID的调节更像是一门艺术而非科学。观察系统,运用你的直觉和逻辑,这里有给PID调节的7条黄金规则:
1. 将所有参数清零,增加P的值,直到能让输出在最短时间内达到期望值。
2. 当你的系统开始振荡,意味着你的P值大了,减小P值直到振荡消失。调节完P后,你的系统的实际值也许会稍大小于或小于你的期望值(可看作稳态误差),不用担心,下面的步骤会修复这点。
3. 缓慢的增加I值直到你的误差消失为止。注意:通常I值都比较小(一般为千分之一),也取决于你更新PID的频率。当你在室外,I项对室外误差(如有风时)非常有效。
4. 如果你的输出让系统开始振荡了,可试着缓慢减小I值。
5. 如果你的系统是低动态系统,那你的调节可到此为止了。但对于多轴飞行器这种高动态系统来说,必须调节D项。如果你感到你的系统对误差的反应滞后了,你应该缓慢增加D值。
6. 如果你的系统开始出现高频振荡了,这意味你有一个过大的D值放大了噪声导致的,这时你该适当的减小D值。如果你的系统有较大的噪声,最好保持D值为0值。
7. 最后注意你的Limits值。

姿态调节

警告:已经出现过PID值调节不当,导致电机输出值超出额定值,让飞机摔机的案例,所以要小心调节。
AQ是一个相对复杂的系统,它运用了多个PID循环。有些PID环是独立的,有些则是嵌套的。AQ有两个基本的独立的PID,一个是姿态PID,一个是导航PID.

注意:AQ默认的PID的参数是适合正常机架的,通常只需要微调即可,但如果你的机架是不同的结构,重量分布不同,尺寸不同,则需要调节PID。不过在任何情况下,你调节PID时都应该以增大或减小当前值的20%~30%为宜,不能过大。

姿态调节是与yaw pitch roll相关的。姿态PID是由两个嵌套的PID组成的:速率PID和角度PID。
速率PID(内环)控制陀螺仪信号变化的速度,它的目的是保持角速率的变化在0 rad/s。当角速率的变化率(角速度的导数,即角加速度吗)为0,意味着这种变化是恒定的。速率PID的目的就是保持任何陀螺仪信号在一个稳定的状态(例如陀螺仪没倾斜,则AQ是非常的平稳),注意这并不意味着陀螺仪的输出值要为0,它可以是任何值,但应该随时间变化却稳定。Tilt rate PID控制pitch roll的稳定性,yaw rate PID控制控制yaw的稳定性。由于陀螺仪是一个高敏感的器件,而多轴飞行器是一个高振荡的系统,所以tilt rate D值通常都非常大,就是为了补偿那些振荡。
Rate PID控制器只有D项有值,是因为rate PID的期望值设为了零,且系统的变化相当快。
这里写图片描述
为了能快速响应变化,rate PID环是以400HZ的频率运行的。陀螺仪的信号是直接使用的,没有经过任何数字滤波和修正,就是为了让系统能快速响应(R/C的信号和其它命令都能得到快速响应)。为了不因为D值较大而放大噪声信号, ARM Cortex-M4 MCU 为陀螺仪信号提供了一个巨大的过采样频率262.4KHZ。yaw rate PID是一个典型的PID控制器去调节yaw的方向。因为振荡对yaw的影响没那么大,所以yaw的D值相对较小(与rate PID相比) ,你也需要设定适当的P和I值去准确的锁定航向。
速率PID限制
姿态rate PID产生了所期望的PWM宽度(单位是微秒)去控制电机让系统稳定。PM IM DM限制了各个PID项的输出防止过大烧坏电机,OM则是整个PID控制器的最大输出。
F项
F项是用来平滑D项的。虽然我们有相对较大的D值,但实际上在每一时间小步中(1/400Hz = 2.5 us),它并不会让电机全部输出D项所生成的输出。F项的作用就是控制在每一时间步中D项应输出的值。以上图为例,F项的值为0.25,则意味着每一时间步中D项只输出其全部的25%。

姿态角度PID

角度PID(外环)控制着AQ在yaw pitch roll各轴上旋转的角度(单位是度)。这个PID环运行频率是200HZ,同样的,tilt angel PID的D值也是一个巨大的值,但yaw angel的D值则为0。角度环的设定值(角度)可能来于RC的输入或导航PID控制器的值或几种值的结合。同样的,其输出是PWM脉冲的长度(以微秒计),在每个时间步中,角度PID环的输出精确的加在内环速率PID的输出中,且和油门值一起都发送给了电机。外环PID总是力求让系统保持在一个设定的角度上,内环PID总是力求系统在旋转速率上保持一个0的变化(但不意味着旋转速率为0)。有时这两个PID互相合作,有时又互相排斥。

最大倾斜和转动

AQ的设计目的是稳定飞行,而非杂技飞行。所以为了保证稳定飞行,角度倾斜是受限的。默认的最大倾斜角度是37度左右,这两个参数控制了pitch和roll的倾斜度:

CTRL_FACT_PITC      0.05f       // user pitch 因子 
 CTRL_FACT_ROLL      0.05f       // user roll 因子

这两个乘数因子会乘上pitch和roll通道的值。如果你的遥控器输出范围是-750~750,那你的最大倾斜度是正负37.5度。
当然,我们预留了倾斜的空间,但小心提高你的乘数因子。理论上可以达到近90度的。对于任意轴上任何超过45度的倾角,你最好放弃PID控制,并基于四元数进行。

导航PID调节

导航PID是控制你的飞行器垂直方向和水平方向的移动的。这两个PID是独立的,但运行频率都是在200HZ。
水平导航PID
有两个水平方向上的导航PID互相关联的。一个控制着水平上的速度—navigation speed rate;一个控制着距离目标的距离—navigation distance rate。你会发现这两个PID都没有D项,那是因为我们处理的是相以较慢的变化信号,所以这实际上是个PI控制器。
这里写图片描述
导航距离PI设定期望的距离(单位是m)并计算出当前位置到目标位置的距离。这个PI输出一个水平方向上的速度指令(m/s)并进入到导航速度PI里面。进去后,计算出当前速度与期望速度的误差,并最终输出一个倾斜的角度(单位是度)。
以上图为例,距离上每1m的误差将会输出一个0.5m/s的速度,这个期望速度进入速度PI里后,每1m/s的误差在P项上将会输出6度的倾斜,在I项上输出1/200度的倾斜。但注意里面的PI限制。
导航速度PI的PM IM OM单位都是度,PM应用在导航时狂风里,IM应用在稳定的风里,OM则限制了整个。
导航高度PID
这里写图片描述
The same concepts applied early are utilized here. In the above settings (screen), every one meter error in altitude will result in a 0.25 m/s vertical velocity. The maximum speed is 2 m/s.
The vertical velocity is entered into the navigation altitude speed PI, which gives 200 microseconds of throttle PWM for each m/s input.
Another 1.2 microseconds is added to the output every 1/200′s of a second it takes to reach the target, i.e., each one second away from the target will add 240 microseconds to the output.
The maximum allowed PWM width, is 150 microseconds for P term and 600 microseconds for I term.
The maximum allowed PWM width from the whole PI, however, is 600 microseconds of throttle response.

  • 21
    点赞
  • 186
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值