大家好,我是小政。本篇文章我将针对PID调参进行详细的讲解,让每位小伙伴能够对比例、积分、微分三个参数如何调节有更加清晰的理解。
一、调参步骤
- 确立机械中值
- 直立环(内环)——Kp极性、Kp大小、Kd极性、Kd大小
- 速度环(外环)——Kp&Ki极性、Kp&Ki大小
- 转向环——系数极性、系数大小
二、机械中值
把小车放在底面上,从前向后以及从后向前绕电机轴旋转平衡小车,两次向另一边倒下的角度的中值,即为机械中值。
举例:往后倒在2度,往后倒在-3度左右,这边我取的机械中值为-1度。
float Med_Angle=-1.0; // 机械中值,能使得小车真正平衡住的角度
图1 往后倒在2度左右(Y轴,即Roll)
图2 往前倒在-3度左右(Y轴,即Roll)
三、直立环
1.Kp极性:
极性错误:小车往哪边倒,车轮就往反方向开,会使得小车加速倒下。
极性正确:小车往哪边倒,车轮就往哪边开,以保证小车有直立的趋势。
2.Kp大小:
Kp一直增加,直到出现大幅低频振荡。(即小车平衡时出现抖动)
注:Kp的绝对值范围大概在150至350内,当我设置为320时出现低频振荡,可以略微增大Kp,当出现大幅度低频振荡时,说明Kp已经足够大,是时候引入微分项。
3.Kd极性:
极性错误:拿起小车绕电机轴旋转,车轮反向转动,无跟随。
极性正确:拿起小车绕电机轴旋转,车轮同向转动,有跟随。
4.Kd大小:
Kd一直增加,直到出现高频振荡。(即触碰小车出现剧烈抖动)
注:Kd的绝对值范围大概在0.1至0.9内,当我设置为0.8时出现高频振荡,此时需及时关闭电机,以防电机及驱动烧毁。
直立环调试完毕后,对所有确立的参数乘以0.6作为最终参数。
原因:之前得到的参数都是Kp、Kd最大值,根据工程经验平衡小车的理想参数为最大参数乘以0.6求得。
结果:乘0.6后,小车抖动消失,但同时直立效果也变差。待下面加入速度环就能得到更好的性能。
我最终调整好的直立环Kp与Kd参数:
float
Vertical_Kp=200,
Vertical_Kd=0.5; // 直立环Kp、Kd
四、速度环
1.需要注意的点
(1)
在调节【速度环参数极性】时,需要去掉【直立环运算】;
在调节【速度环参数大小】时,需要引入【直立环运算】。
(2)
【转向环运算】始终是去掉的一个状态,若转向环已提前将参数调好,未注释也影响不大。
2.Kp&Ki:
线性关系:Ki=(1/200)*Kp,仅调Kp即可。
3.Kp&Ki极性:(直立环注释)
极性错误:手动转动其中一个车轮,另一车轮会以同样速度反向旋转——典型负反馈。
极性正确:手动转动其中一个车轮,两个车轮会同向加速,直至电机最大速度——典型正反馈。
4.Kp&Ki大小:
增加Kp&Ki,直至:小车保持平衡的同时,速度接近于0,且回位效果好。
注:Kp的绝对值范围在0.1至0.9内。
我最终调整好的速度环Kp与Kd参数:
float
Velocity_Kp=0.30,
Velocity_Ki=0.0015; // 速度环Kp、Ki(正反馈)
五、转向环
1.Kp极性:
极性错误:拿起小车,并将小车绕Z轴旋转,两车轮旋转的趋势与小车旋转趋势一致——典型正反馈。
极性正确:拿起小车,并将小车绕Z轴旋转,两车轮旋转的趋势与小车旋转趋势相反——典型负反馈
2.Kp大小:
加大Kp,直至走直线效果较好,且无剧烈抖动。
注:Kp大概范围在0.1至0.9内。
我最终调整好的转向环Kp与Kd参数:
float
Turn_Kp=-0.6;
六、展示
PID参数调整完成后实物展示如下:
平衡小车(纯平衡)
七、总结
以上一系列文章是平衡小车(纯平衡)系列的全部教学,后续还会更新利用蓝牙模块遥控平衡小车的详细讲解。感兴趣的小伙伴点个关注吧!
(1)硬件原理图+程序+APP:
网址:https://pan.baidu.com/s/1SNBUEOw2lIi0Ry_oNciVxg
提取码:1234
以上就是平衡小车系列文章第七讲——串级PID调参,若文章中出现错误或者小伙伴对以上内容有所疑问,欢迎大家在评论区留言,小政看到后会尽快回复大家!
【平衡小车制作】(八)蓝牙遥控及平衡成果展示(超详解)
https://blog.csdn.net/weixin_44270218/article/details/113806544
版权声明:本文为CSDN博主「鲁乎乎」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44270218/article/details/113786386
暂无评论