浅谈PID控制对无人车/船的自动驾驶影响及水信无人船PID调试结果展示
本文来源:无人机
什么是PID控制调节
PID控制器是一种线性控制器,它主要根据给定值和实际输出值构成控制偏差,然后利用偏差给出合理的控制量。
目前,人们通过科学研究获得了诸多具有优异控制效果的算法和理论,但在工程应用领域,基于经典PID的控制算法仍然是最简单、最有效的控制方案。
在无人车/船自动驾驶领域,人们往往通过PID控制算法来实现无人车/船的行驶轨迹控制。
面对一个我们需要控制的设备,我们需要使用驱动信号(actuating signal)去控制它,同时,我们也需要获得设备的当前信息,也就是受控变量(controlled variable)。
这个驱动信号由一个控制器产生,控制器的作用是使得系统的error为0,error是控制变量减去受控变量的值。控制变量(commanded variable)是我们对这个系统的需求,比如将无人车/船行驶到某个地方;受控变量是从设备获得的信息,比如当前无人车/船处在什么地方。
PID里的P是Proportion的首字线,是比例的意思,I是Integral的首字线,是积分的意思,D是Differential的首字母,是微分的意思。
PID解决什么问题
那么PID控制器算法能解决什么问题呢?
以无人车/船为例,在没有控制系统的情况下,直接用信号驱动电机带动轮子/螺旋桨旋转产生控制力,会出现动态响应太快,或者太慢,或者控制过冲或者不足的现象,无人车/船无法很好的完成上线、转弯等动作。
为了解决这些问题,就需要在控制系统回路中加入PID控制器算法。在位置信息、速度信息和轮胎、螺旋桨转速之间建立比例、积分和微分的关系,通过调节各个环节的参数大小,使无人车/船系统控制达到动态响应迅速、既不过冲、也不欠缺,可以完美的上线与转弯。
PID如何控制无人车/船的行驶
下面举个例子让大家了解一下PID的作用,我们以一个自动驾驶的小车做例子,根据小车轨迹我们可以很直观的看到PID对控制的影响。
3.1
P,比例控制
现在我们想让这个小车沿着绿线向前走,我们给P设置一个固定的值,这个值可以让离开绿线的小车向绿线的方向行驶,离的越远,方向盘打的角度越大,离的越近,方向盘打的角度越小。橙色的箭头表示小车行进的方向。
上图,我们设置了一个中等大小的P值。想要沿着绿线走,在比例控制下路径是这样的,因为小车有一定的速度,到达绿线时因为惯性的原因又向前运动了,然后再根据中等P值向回打方向盘,当到达绿线时,同样因为惯性的原因冲过了头,因为小车越接近绿线,方向盘打的越小,所以小车每经过一次绿线,它的偏差就越来越小,所以随着小车多次的往复运动,就能离绿线越来越近,理论上最终能够行驶在绿线上面。
上图,如果我们把P值设置的比较大,它的路径是这样的,因为方向盘打的角度比较大,所以小车比中等P值的时候较早的到达绿线,但同样因为惯性的原因会多次往返绿线的两侧,也是一次比一次接近绿线,因为它方向盘角度打的比较大,所以会比中等P值往返的次数要多,最终经过多次往返,理论上它会离绿线越来越近,最终到达绿线上方。
上图,如果我们把P值设置的比较小,也就是方向盘打的角度比较小,它的路径是这样的,小车会较晚到达绿线,因为惯性会往返绿线两侧,但是因为方向盘角度小,小车可以在较少的往复次数下接近绿线。
所以我们对比一下设置这三种P值的结果,在小车与绿线相同距离的情况下,P值越大,小车的反应越快,P值越小,小车的反应越慢,所以这三个小车第一次到达绿线的时间是不一样的。虽然P值大能够较快的到达绿线,但是反应比较剧烈,总是因为过快冲过了头。相反P值小的反应比较平缓,但是它反应太慢,我们有时候接受不了。
什么样的P值是合理的呢,就是设置后,小车的反应不是很剧烈,反应时间你也能够接受,那这就是一个相对合理的P值。
那有没有一种办法让它反应再快一点,反应又不那么剧烈呢,那就要用到接下来我们要讲的微分控制了。
3.2
D,微分控制
我们为了不让这个小车冲过头,我们再给它加一个力,这个力就是D,让这个力来起一个作用,就是让小车越接近绿线的时候,接近绿线的速度越慢,小车越远离绿线的时候,接近绿线的速度相对较快,这个接近绿线的速度不是小车前进的速度,是小车与绿线平行线之间的相对速度。这个D大家可以理解为小车靠近绿线的一个阻力。
上图,假设我们设置了一个相对合理的P值,在P值不变的情况下,微分控制中D值的变化会有怎样的结果。比如我们设置了一个比较合适的D值,微分控制(D)让小车在靠近绿线时,接近绿线的速度比较慢,这样比例控制(P)就可以很轻松的让小车到达绿线上方行驶。
上图,如果D值过大,也就是小车靠近绿线的阻力过大,这样会让小车需要比较长的时间才能到达绿线上方。
上图,如果D值设置的过小,也就是小车靠近绿线的阻力过小,那微分控制(D)就不会对比例控制产生大的影响,所以虽然小车能够较快到达绿线,但小车需要多调整几次,在绿线的两侧往复几次后才能到达绿线上方行驶。
这样看来比例控制(P)和微分控制(D)的配合,貌似已经很完美了。为什么还要有积分控制(I)呢?
3.3
I,积分控制
设置合适的P值和D值,可以让小车很好的沿着绿线一直走,但路上不是很平坦,会有些坑坑包包,或者其他的一些干扰,路况不好就会让小车的行进路线发生偏移,比如小车在这里遇到了坑坑包包,它的行进路线 就会变成这样,稍微偏离了绿线一点,因为微分控制(D)让小车离绿线越近时,靠近绿线的速度越慢,比例控制(P)让小车在接近绿线时,方向盘又打的比较小,所以小车要走一段路才回到绿线上面。
有没有办法让它更快回到绿线上面呢,所以我们再给它加一个力,这个力就是I,积分控制。我们让积分控制起这样的作用:如果P和D的调节不是很理想的话,就让I帮他俩一把,向P的方向上加一个力,这样可以让小车更快回到目的路径。
设置了I以后,I会根据误差和误差经历的时间进行积分,然后决定施加给目标方向的力的大小,就能够让小车回到目标轨迹上。
上图,一个合适的I值,可以让小车偏离轨迹后,I可以在合适的时间给P一个合适的力,让小车快速的回到绿线上面。
上图,如果I值过大,积分控制(I)调整的力就会比较大,它在帮P的时候会用力过猛,会让小车冲过绿线,下次帮忙的时候还是用力过猛,P表示很无奈,毕竟I也是好心,经过几次调整后,小车终于回到绿线上面,但我们看小车的轨迹线产生了一定的振荡。
如果I值过小,积分控制(I)调整的力就会比较小,就像有一个手无缚鸡之力的柔弱小鲜肉一样,帮不上太大的忙,所以小车回到正确轨迹的时间就会比较长。
基于以上例子,我们可以看出,只要比例控制(P)、微分控制(D)和积分控制(I)的控制调节设置合理我们便可以对无人小车的行驶做到比较好的控制。对于无人船也是同理,因此PID调节的好坏将直接影响无人车/船的自动行驶效果。