用弹簧、阻尼器理解PID
介绍两个物理学中常见的东西:
弹簧
阻尼器
比例P对应弹簧
微分D对应阻尼器
想象真空中有一个小球静止于x=1位置,现在我们想让它静止到x=0位置。
如果只加上弹簧,弹簧一端固定在原点,另一端固定在小球上,小球会绕原点做简谐运动。
如果只加上阻尼器,小球仍然会位于x=1位置不变。如果小球受到了一些扰动,比如被向右推了一下,在阻尼器的作用下,会停在x>1的某个位置。
如果既加了弹簧,又加了阻尼器,小球在弹簧的作用下想绕原点做简谐运动,但是受阻尼器的作用,最终会静止,静止的位置是我们期望的原点。这就是PD控制。
然而上述是在真空中,没有摩擦等的理想情况。实际中总会有一些摩擦力什么的,想象把小球放在了粗糙的桌面上,这样的话,在PD控制下,小球停止的位置会偏离原点,即稳态偏差Steady State Deviation。这时候加上积分I控制,小球偏离得越久,I控制的力越大,总能突破摩擦力。也就是说I控制能消除稳态偏差。
//
行到水穷处,坐看云起时
//
用PID控制平衡车的平衡
仍然想象真空中有一个小球,现在我们在x=10、x=-10位置各放置一个地球,地球和小球之间有万有引力。
如果小球初始静止于x=0位置,两个地球对它的万有引力平衡,之后它还会静止于x=0位置。
如果小球初始静止于x=1位置,之后它会移动到x=10位置。
假设小球初始静止在x=1位置,现在我们想让它静止到x=0位置。
我们先加上弹簧,弹簧一端固定在原点,另一端固定在小球上。P太小不行,太小的话,抵抗不了地球的重力,仍然会移动到x=10位置。P太大也不行,太大的话,小球会绕原点来回疯狂运动,看起来不太稳定,而且电机的最大输出力矩也限制了P的大小。P到底调节到什么程度才行?小球第一次从x=1移动到x=0的时间直观地体现了响应的快慢,一般从感觉上来说1s差不多就可以接受了,再考虑到之后阻尼器的影响,调节P让小球第一次从x=1移动到x=0的时间小于0.8s?
然后加上阻尼器。调节阻尼器D的大小,让小球从x=1移动到x=0,然后允许它超调到比如x=-0.3,但是小球第二次超调限制在x=-0.05以内,这样阻尼器D的效果就已经很好了。
一般来说平衡车用PD控制就足够了。
//
凤凰山下雨初晴,水风清,晚霞明
//