前言
我了解的智能车PID控制方案有:单回路速度环-单回路位置环(电感为反馈)型(1+1)、串级位置环串角速度环-单回路速度环型(2+1)、串级位置环串速度环型(2)、串级位置环串角速度环串速度环(3)。本文讲解的是串级位置环串速度环型PID。
第一节.PID公式解读
PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写,它结合比例、积分和微分三种环节于一体的控制算法,理想PID控制规律为:
(Kp——比例增益,Kp与比例度成倒数关系,Tt——积分时间常数,TD——微分时间常数,u(t)——PID控制器的输出信号,e(t)——给定值r(t)与测量值之差。)
(1).比例:通过公式可知得Kpe(t)–比例系数×误差。与输出u(t)成正比能够迅速的反应偏差,从而减小误差但不能消除静态误差。什么是静态误差看这篇文章https://zhidao.baidu.com/question/501869396.html
(2).积分:通过公式得Kp/Tt∫e(t)dt–积分系数×误差和。与在积分环节中,主要用于就是消除静态误差提高系统的无差度。积分作用的强弱,取决于积分时间常数Ti, Ti越大积分作用越弱,反之则越强。积分控制作用的存在与偏差e(t)的存在时间有关,只要系统存在着偏差,积分环节就会不断起作用,对输入偏差进行积分, 使控制器的输出及执行器的开度不断变化,产生控制作用以减小偏差。在积分时间足够的情况下,可以完全消除静差,这时积分控制作用将维持不变。
(3).微分:通过公式得KpTdde(t)/dt–微分系数×误差微分。微分环节的作用是反应系统偏差的一个变化趋势,也可以说是变化率,可以在误差来临之前提前引入一个有效的修正信号, 有利于提高输出响应的快速性,减小被控量的超调和增加系统的稳定性。
第二节.PID公式离散化
PID控制算法的离散化是将连续时间的PID算法转换为离散时间的过程,通常在采样周期远小于信号变化周期时采用。离散化的数学表达式涉及到采样周期(Ts)和采样序号(k),以及相应的变换关系。通过将连续PID控制器的传递函数和控制规律代入离散化公式,得到离散形式的控制输出。理想PID控制规律通过离散化得到位置式和增量式。
1.位置式
优点::位置式PID是一种非递推式算法,可直接控制执行机构(如平衡小车),u(k)的值和执行机构的实际位置(如小车当前角度)是一一对应的, 因此在执行机构不带积分部件的对象中可以很好应用;
缺点::每次输出均与过去的状态有关,计算时要对e(k)进行累加,运算工作量大。
2.增量式
优点:
误动作时影响小,必要时可用逻辑判断的方法去掉出错数据。
手动/自动切换时冲击小,便于实现无扰动切换。
算式中不需要累加。控制增量Δu(k)的确定仅与最近3次的采样值有关。在速度闭环控制中有很好的实时性。
缺点:
积分截断效应大,有稳态误差;
溢出的影响大。有的被控对象用增量式则不太好;
第3节.PID程序
位置式
float PID_Positional(float err1,float err2)
{
P_sum = P_set * err1;
I_sum += I_set * err1;
D_sum = D_set * ( err1 - err2);
if(I_sum > I_max) I_sum = I_max;
if(I_sum < -I_max) I_sum = -I_max;
Out = P_sum + I_sum + D_sum;
if(Out > Out_max) Out = Out_max;
else if(Out < -Out_max) Out = -Out_max;
return Out;
}
增量式
float Incremental(float err1,float err2)
{
P_sum = P_set * ( err1 - err2);
I_sum = I_set * err1;
D_sum = D_set * ( err1 - 2 * err2 + err3);
Out = P_sum + I_sum + D_sum;
if(Out > Out_max) Out = Out_max;
else if(Out < -Out_max) Out = -Out_max;
return Out;
}
第4节.串级PID
串级PID的介绍看这篇文章个人感觉这篇文章讲的非常非常的好通俗易懂十分到位https://blog.csdn.net/skythinker616/article/details/123019829
接下说串级PID在智能车程序中如何实现:
1.控制流程图
采用串级位置环串速度环型PID。
串级PID控制要求:1.外环输出是内环输入。2.调节时间内环比外环快。例如位置环中断时间:10ms,速度环中断时间:2ms
2.控制调参方法
串级PID先调内环速度环,调速度坏的时候屏蔽位置环。速度环通常采用PI控制,所以只需要调PI即可。调速度环就是让车跑直线然后用上位机看波形,车在不同期望时都能够反应及时不超调。波形大概如图
串级PID外环就需要在赛道上看实际转向需求来,转向环通常采用PD控制,转向环不可以加入积分,因为加入积分会有延后性。
额外篇.苯环
20届智能车正常如火如荼的进行中,我看最近不少群友都在为了苯环烦恼,那我就说一下我使用的苯环思路吧。我的苯环思路也是学习逐飞提供的资料所以会有很多相同点。
1.苯环的特色点
这个特征点时候中间电感很容易识别,再配合左右电感就能完成入环。
此时车向环行驶,持此中间电感在逐渐增大,左电感减右电感的差值也在逐渐变大。本且这点位是全图唯一一个两线重叠点,这里电感值普遍很大。所以根据这些特征就能够找到唯一的入环条件。
2.入苯环的方法
入环点我们已经获取到了,但是如何入环就成了一个问题,我们需要打出一个固定的角度,如果角度不够很容易被直行到的电感给拉回来,所以我们采用陀螺仪z轴角速度积分来辅助入环。
为了能够每次都打出一样的角度所以我们采用PID闭环,以入环所需角度为期望,z轴角速度积分为角度作为反馈,z轴角速度积分本身是不准确的,但是做为入环角度来说影响不大。
最后
19届智能车最后败给东北赛区佬们,止步于东北赛区第七名。希望这篇文章能够对你有所帮助,祝愿你能够走进国赛赛场。
VID_20240725104502