这几天打校内赛,需要用到视觉巡线,所以学习了PID。
看的这篇博主的blog入的门:https://blog.youkuaiyun.com/qq1205512384/article/details/72614871
(%%%%,谢谢大佬的分享)
说说自己关于PID作用的理解:
P:比例控制,作用就是是加快系统的响应速度,提高系统的调节精度(副作用是会导致超调)——现在
I: 积分控制,作用就是消除稳态误差(副作用是导致积分饱和现象)——过去
D:微分控制,作用就是改善整个系统的动态性能(副作用是延长系统的调节时间)——未来
理解的没有很透彻,因为只是把理论代码打了出来,估计今天晚上会开始实际跑车,到时候有新的理解在来改动吧。
关于PID有两种不同的计算方式——一种是位置,一种是增值
两种的具体区别我个人的理解:
位置PID:是当前系统的实际位置,与你想要达到的预期位置的偏差,进行PID控制
这个算法有误差积分,一直累加,也就是当前的输出值与过去的所有状态都有关系,用到了误差的累加值;误差会有误差累加,输出对应的是执行物体的实际位置,一旦控制输出出错(控制物体的当前的状态值有了问题 ),输出的值会发生大幅度变化。并且位置PID在积分项达到饱和时,误差仍然会继续累积,所以在输出值达到最大和最小时,要停止积分作用,并且要有积分限制和输出限制
嗯嗯,贴个代码会好一点理解?(只是理解,并未实际执行,所以理解不透彻望理解)
//其主要问题点和难点在于比例、积分、微分环节上的参数整定过程
float index;
struct _pid
{
float