|
发表于 2016-4-9 20:27:26
|
显示全部楼层
要理解pid之前,先要想通一件事情. 实际环境和理论设计是有较大区别的.
1. 在书面上算出的控制参数,在实际环境中部件不一定能够做出期望的结果,这时候就有误差.pid的根本目的就是为了让部件在期望值附近稳定运行.
2. 期望目标,误差测量,控制参数往往是不同的物理量,只要他们能够产生负反馈控制就可以. 比如两轮平衡机器人的pid控制,我们的期望是机器人姿态稳定,误差是机器人倾角,实际控制的是两轮速度. 因为通过控制两轮的速度,就能间接控制机器人的姿态. 在寻线中,我们期望是小车走在线上,误差是当前位置离线的距离,实际控制是小车的两轮速度差.因为有速度差了,就可以纠正小车方向重新走回线上.
举个例子, 裸电机下(未校准电机)的速度控制. 我们期望电机在预定的速度下运行,但是因为地面摩擦和负载,小车上的电机的速度是有误差的. 而裸电机自身不带速度控制功能,只能直接控制输出的供电(power).我们知道,如果速度不足,提高供电就能加速;如果速度过快,降低供电就能减速.这就能够组成一个负反馈.
首先要想办法测量出系统误差, 这个可以通过电机自身的传感器获得,如果电机反馈的是圈数或者度数,那么除以时间后,就能得到电机的速度了.这个速度减去预期值,就得到速度偏差. 为正,说明速度过快要降速,为负说明速度不够要减速.
P. 比例单元. 这点很好理解. 只要有误差,乘以一个比例系数就能算出要纠偏的大体数值. 以上面的裸电机校准为例,我们算出一个纠偏数值后加到原始供电上.因为是负反馈设计,所以这个数值一般和误差的符号相反.如果误差为正,我们就降低供电,误差为负我们就提高供电.有了P之后,我们可以发现,只要还在电机的功率范围里,总能运行到期望速度的.因为只要有误差,就会不停的调整供电,直到误差被消除. 另外可以发现,如果P比较小,那么电机就会慢慢的调整,但是到达期望速度后,比较稳定.如果P过大,那么电机会在期望值附近有比较大的起伏.
I. 积分单元.为了比较容易的理解这点,我们假设这样一个场景. 有一个小车正在一个起伏的地形上运动.假设没有积分单元,那么小车在上坡的时候调整速度,会比平地上花更多的时间.这个原因很好理解,如果只有单一的比例单元,那么同样的供电输出调整在上坡的时候不足以克服额外的重力.这时候我们就要积分单元的帮助. 有了积分单元,那么随着时间的推移,误差逐渐累加起来.如果在这段时间里误差改善的效果不明显(比如小车正在爬坡),那么就会有很大的误差积分值,这时候积分单元会贡献出很大的调整纠偏数值. 而如果之前的误差改善效果很明显(比如在平地上),那么就不会累加太大的积分,这时候积分单元贡献就不是很大. 可以看出积分单元可以随着时间对纠偏数值进行补偿,帮助系统快速回落到期望状态.
D. 微分单元. 在一些系统中,期望目标会对输入的响应有一段延迟.比如温控系统. 在这种系统里,我们希望纠偏的数值还要和系统误差的趋势相关.先记住,在一个常规的系统里,因为误差是在一直缩小中,那么前后误差微分的结果就是负值. 以温度调节为例子,假设温度现在过高,我们要打开制冷.但是如果系统温度下降的太快了,即使还有误差,我们还是希望制冷的强度小点.因为前面说过,微分一般是负的,这时候我们加上微分单元,会减少纠偏的数值.微分单元一般用于有延迟或者有惯性部件的系统. 双轮平衡机器人也是一个要用到微分单元的例子.
另外在说一下积分单元重置. 有的系统,比如寻线小车,当小车归位后,之前的累积误差就要重置归0.否则小车会继续向一侧倾斜跑过中线.这点很容易理解.
引用于http://bbs.cmnxt.com/thread-15300-1-1.html的 文章!!! |
|