PID实践笔记-PID浅解及两轮直立车参数调试经验

写在前面:

       好快啊做车生涯就这么结束了,虽然无缘厦门但也没有遗憾了,大公主在预赛和决赛中都跑的不错,最后写这篇文章就当画上一个完美的句号吧,目的也在于总结一下大半年以来调车的玄学经历和解决方案,同时也结合了许多其他队伍的小车由于参数不合适出现的各种情况,希望能给在调车过程中遇到各种困难的车友和同学们一些启发。

       首先要明确一点,实际中参数的调试诊定不是一门技术活,而是一门体力活,一套比较好的参数是用时间砸出来的,同时参数的调试也是一门玄学,仅仅就一台智能小车而言,其影响因素就太多太多了(可能你不相信,甚至包括气候,地磁场干扰,和空气湿度,这可能也是至今很少关于PID参数调试资料原因吧),因此不要盲目的相信网上的一些经验公式(比如我曾看到过的I=50/1P,实践证明根本不可靠),坚信一点:适合自己的才是最好的。OK,下面进入正题:

零、PID参数的作用

      在进入正题之前,还是想先啰嗦一下PID三个参数的作用以及我个人的一些理解,关于这部分已经很了解的朋友可以直接跳过啦,因为在后续的调参过程中,只有对这些参数的作用了如指掌,才能根据小车的状态判断出哪个参数大了,哪个参数小了等等,先推荐一首在卓大大公众号里看见的佛系调车颂:                                      

    1.P参数(比例参数):这个参数的作用简而言之就是增大反应速率,它所乘的变量就是最直接的偏差量,因此也是PID控制器中最主要的参数,可以没有D或I,甚至DI都没有,但唯独不能缺了P,下面我就借花献佛,来看两张十分直观的平衡小车之家的纯P控制器图:

       由这两张图不难看出,增大了P,反应速度有了明显的提升,也就是上升部分的红线越来越靠近白线,例如反应在实际的直立小车中也就是增大了直立环的“硬度”和转向环反应的速度,但祸福相依,有一利必有一弊,PID三个参数都不例外,根据上图就能看出,反应速度的增大会导致震荡越来越严重,而要抑制这个震荡,就得靠我们威武霸气花样百出的D参数了。

    2.D参数(微分参数):如上所说,这个参数最主流的作用就是抑制震荡,注意主流这个词圈起来,也就是在实践过程中我们还偶然的领悟到了这个参数的另一个“非主流”用法,这个这里暂且按下不表,后面转向环再说,同样通过下面这幅图来直观的感受一下PD配合的效果吧:

    对比上一幅图可以看出加入D后震荡得到了明显的抑制,但这幅图的的D参数给的明显过大了,因而他的弊端也就显而易见了:D参数的过大会减小系统的反应速度,也就是会在一定程度上抑制P参数的作用,可见上图的反应速度似乎连第一幅图KP=50都不如,但相比第一幅图KP=50的情况,他震荡后恢复到稳定状态的时间明显就要短很多,因此要适当的调整PD的大小让他们达到一个合适的效果。

    3.I参数(积分参数):这个参数的作用也可以简单概括为减小静差,他的作用通过下图就能很直观的体会到:

       同样上图便是PID三个参数配合的比较好的一副理想图了,但在实际中,I参数确是最傲娇的一个,非常的难调,过小了几乎没什么作用,稍微大一点就很容易引起超调,其所乘的变量是偏差的积分量,而且积分是需要时间的,因此这个参数的作用不像其他两个参数那么“立杆见影”,而且还要配合上限幅和定时清零等麻烦的操作,限幅多少,什么时候清零又是一项巨麻烦的调试工程,因而对于这个参数,我个人的建议就是:用不好不如不用

       这部分的最后再补充几句,在调参的时候新手建议按照“以P为主,ID为辅”的原则进行,先调出一个凑合的P,在渐渐的调整D或I与之配合,当然到了成为老司机的时候,掐指一算就能做到PD甚至PID同时更改了。当然,根据实际中不同的需求,应当合理的选择控制器,不一定非得PID全用上,这样有时反而会适得其反,比如只求快的,就用纯P控制,求快求稳的,就用PD控制,求精确的,就用PI控制,较为高端场合,没办法就PID都上吧。

一、直立环PD参数

    1.直立控制主要是保证小车在运行过程中保持在一个理想的角度,这个理想的角度一般由小车的机械零点决定,说是一个点,在实际中大多都是一个范围,比如大公主现在的机械零点由陀螺仪反馈回来的数据显示大概在10°-15°左右,可想而知直立控制主要求快求稳,因而一般都选用PD控制。

     2.对于直立小车而言,不能像课本上理论所说的“原则上PID参数尽可能越大越好”,也就是不能把小车的直立环调的太“硬”,因为小车的直立环与其它的两个环存在耦合关系,而且直立环是三环之中最主要的一环,因此过大的直立环PD参数会增大这种耦合关系,而且对于速度输出而言,直立输出是一个减益部分,所以若直立环过硬,表现在实际中就是小车的实际速度会远远低于设置的目标速度,因此在开始的直立环调试部分,直立环的参数应适当的小,也就是使得小车适当的偏“软”,而且对于比赛,直立环调的比较软还有一个好处就是颠簸和下坡会过得更容易和顺畅,这一点大家一试便知。

    3.对于不同的车体结构而言,参数的大小也不同,一般而言直立小车追求的结构无非就6个字:重心低质量轻,而一般越满足这6字真言的结构,合适的P参数就会越小且D参数越大(真实玄学经验),因此在改变小车结构后,也可以根据PD参数的大致变化判断这个结构改得对不对或是好不好。

二、速度环P/PI参数

    1.关于速度环的控制器,自古以来也和甜咸粽子之争一般分为纯P党和PI党,博主现在是个坚定的纯P党,诚如之前所说,I参数调不好不如不用,纯P控制的优点显而易见:调试简单,新手友好。但缺点就是会有些静差,表现在实际中就是给的目标速度是65,小车平均只能跑到60左右,给85,只能跑到75左右,如果你觉得能接受的话那么...欢迎入党HHH。

    2.博主个人采用的策略是串级PID,也就是说将速度环的纯P控制器串入了直立环的PD控制器,将他们两个视为同一个环,实际效果也很不错,具体大家参考我的上一篇文章两轮直立车的速度控制即可,最后也提醒一下,速度环在串入直立环之前也要加入限幅操作,毕竟直立车加速也得要一步步加,别想一口吃成一个胖子。

三、转向环PD参数

    1.转向环可想而知也是主要求快(速度越高越是要求转向环反应越快,其次求稳,因此也和直立环一样建议使用PD控制。

    2.如之前所说,D的主流作用是抑制震荡,当然这有一个前提,就是D的符号给对了,大家不如大胆的想想若是D的符号给反了会怎么样?其实就是会加剧P引起的震荡,起了一个反作用。这也正是为什么很多人在调转向环时单给一个P能凑合着跑,但加入了D之后就和酒驾了一样,直道都会走的歪七扭八的大多就是这个原因了。前期的时候我们就因为这个错误被卡了好几天,直到一个偶然的机会在和一位曾经研究过直立车的研究生学长聊天时才恍然醒悟,但同时也想到了这种反向D的一个“非主流”作用,就是在偏差过大时不妨就给一个反向的D,以此能让小车更快的回到中线,当然这是比较进阶的用法,效果前期也不太明显,大家不妨在后期有空可以试试。

    3.关于转向环的PD参数动态诊定方法自古以来便是各个学校传承的“祖传代码”中最核心机密部分,博主手上的方案也不例外,但我们没有祖传代码(当然从我这开始就有了HHH,但不懂能传几代...),而是参考自别的学院一位无缘得见的研究生学长的毕设方案,在这里也不太方便直接把程序贴出,但每每看到那段代码,还是十分敬佩那位学长的实践能力和天马行空的思维。以此调出的转向环在我眼里真心担得起“完美”两个字。在这里也能小小的泄露一点“天机”:将P和D与速度和偏差相关联。有心的朋友不妨照着这个思路大胆的去试试。

       写到这里也有洋洋洒洒的几千字了吧,也差不多了,虽然这次长理之行不是很如人意,赛程体验较差,但并不影响我们对智能车的热忱,比赛的结果在比赛前就已经看得很淡了,因为在这大半年的过程中学到的东西真是太多了,这才是实打实的真东西,这两篇文章也只是其中一部分“可言传”的东西,其余的东西都只能在培养下一届的学弟学妹过程中慢慢传承了。最后如果对文章有任何的疑问或指教批评,欢迎在下方评论或联系本人(QQ:869476269),希望各位同学,车友不吝赐教,共同学习。

       最后还是那句话,此生无悔学做车:

猜你喜欢

转载自blog.csdn.net/qq_24221271/article/details/80837203
PID
今日推荐