金牌会员
- 积分
- 2331
- 威望
- 1223
- 贡献
- 598
- 兑换币
- 602
- 注册时间
- 2016-12-19
- 在线时间
- 255 小时
- 毕业学校
- 无
|
如同电路中的串并联一样,pid控制也可以被串并联,在这里我只讲串联。
先说一下三轮中控制的流程吧,首先是感应电动势的ADC采集,然后分析这些值,得出一个偏差,再依据这个偏差和车期望的前进速度,算出左右轮的期望速度,以此来控制车的前进。其实在这里,就已经存在着第一级pid控制了(先假设没转速闭环):
第一级pid控制:反馈量:电感值。进而算出偏差,也可以理解为反馈为车的偏差。
期望值:因为要车寻迹,因此期望车的偏差为0,所以期望值恒为0。
输出量:根据反馈与期望,经pid计算得到一个输出,这个输出直接和差速成正比,再和期望前进速度加减,得到左右 轮的期望速度。
在这里。通过电感的反馈,完成了第一级pid的控制,这里就一个pid控制,接下来再加进去一个pid控制,和它串起来,就形成了2个pid
控制串联起来的串级控制。如何再加呢?电机转速那里可以根据编码器的反馈再形成一个pid控制,这个时候控制流程变成这样:
计算偏差->一级pid控制->得出一级pid输出->以此计算左右电机期望速度->二级pid控制->得出二级pid输出(也就是占空比)
这里就形成了串级控制,它和单级pid控制相比起来,多了一路反馈,如果说单级pid是能使车逼近偏差为0的控制的话,串级pid就是在使车逼近偏差为0的的基础上,再使电机转速逼近我的期望的控制。串级相比单级,能控制的物理量变,使车的控制性能变得更好,相信大多数用了电机闭环的都感受得到和没闭环的天差地别吧。
接下来再讲一讲角速度在串级控制中的引入,以形成三个pid控制的串级控制。
首先是我这个pid控制该放在什么位置?我先给这三个控制编个号。偏差闭环为1,转速闭环为2,角速度闭环为3.既然是串级,那么我123,132,213,231,312,321都是串联啊,那么我随便串都行?答案肯定是否,在控制中,逻辑的先后非常重要,就如同直立的控制,肯定是角度外环角速度内环,而不能反着来。再举个比较粗鲁的例子,是先有你父母,再有你,而不能倒着来。在这里,我是用的132这样的串联方式,为什么?任何控制系统都得有一个输入,而与输入直接相关的,就是电感,所以把1偏差闭环放前面,而转速闭环2是在期望速度确认的情况下进行的pid控制,而角速度闭环3是根据角速度的反馈来调节差速,或者说调节左右电机的期望速度,所以应该放在2的前面.
这个时候控制流程如下:
计算偏差->控制1->一级pid输出->以此计算左右电机期望速度->控制3->二级pid输出(调整后的左右电机期望速度)->控制2->三级pid输出(也就是占空比)
至此,就完成的3个pid的串联(串级控制)了,当然,在这过程中会遇到许多问题,比如我是角速度,如何调整左右电机的速度?
根据高中物理知识,差速=角速度*间距,便可将角速度与差速联系起来,进而控制左右轮的期望速度了。除此之外,还有许多细节,这里我就不一一细说了,毕竟自己探究出来的,才有成就感,才有自己学到了东西的感觉嘛。
做了2年了,说实话并没有在论坛上学到什么,我这个老司机也快要下车了,希望走之前能用行动改变一下这里。毕竟这比赛都做了这么多年了,感觉强的还是那么些人,那么些学校。如果大家全民提速,百花齐放,思想多分享分享,也不至于这样吧。
话不多说,闪人
|
|