PID 学习笔记
引入:从无人机的升降进行解读
P(比例) 的初步引入
P 越大,无人机对于该目标高度的响应速度就越大(提供的向上的升力F就越大),达到目标高度大概位置的速度就会变得越快。但是,在极大的升力条件作用下,在达到目标高度时,无法做出及时的**“刹车反应”,就会在目标高度附近“震荡”**,因此,我们需要对 D 进行一个初步引入。
D(微分) 的初步引入
D 越小,无人机可以减小飞行高度目标线的超调量,克服振荡,使系统的稳定性提高,同时加快系统的动态响应速度,减小调整时间,从而改善系统的动态性能
I (积分)的初步引入
I 会对误差进行累计,从而提供无人机更大的升力,I 的加入,可以使得无人机逐渐的向着目标高度靠拢,最终将累计误差消除为0。但是I 不宜过大,过大会容易产生超调现象,甚至会重返振荡现象。
PID 是什么
是一种闭环控制算法
- 开环:输入不受输出影响
- 闭环:输入会受输出的影响,让输出不断接近我们设定的期望值
什么时候用到PID
PID 的数学表达式以及含义
连续型表达式:
离散型表达式:
P的再次解读
P算法的作用是减小测量值和理论值之间的误差,让测量值不断接近理论值。
D的再次解读
D 算法的作用是“阻尼”。如果系统误差很大或者是P参数较大,那么P的输出就会很大,导致系统剧烈响应,出现过冲现象,此时就需要用到D算法来抑制,让数值可以刚好停在理论值而不过冲
I的再次解读
I 算法的作用是消除稳态误差,当系统误差已经接近0时,p的输出会很小,起不到继续减小误差的作用,导致误差时钟没有办法减小到0。这个时候就需要用到i算法,让误差值不断累加,并将累加后的值输出。(i算法用于追求更精确的控制)
模拟调参图像
从数学表达式到代码
int PID_value(float measure,float calculate)
{
error=measure-calculate;//误差
error_sum=error_smum+error;//误差的累计
I_xianfu(2000);//限幅
error_difference = error - last_error;//误差的差值
last_error = error;//将此次误差记录为“上次误差”
return Kp*error + Ki*error_sum + Kd*error_difference;
}
实际使用中PID的各类组合
直立环:主要负责维持系统的平衡状态。在平衡车的应用中,直立环通过传感器(如陀螺仪)检测车辆的倾斜角度和角速度,然后通过PID(比例-积分-微分)控制器计算出控制信号,驱动电机进行调整,以保持车辆的直立状态。直立环通常采用PD控制算法,即只有比例和微分环节,以快速响应并减少系统的震荡。
速度环:则是用来控制和调节系统的速度。在平衡车中,速度环通过编码器等传感器测量车辆的实际速度,然后与目标速度进行比较,控制器根据速度偏差产生控制信号,通过调整电机的转速来达到预期的速度。速度环通常采用PI控制算法,即比例和积分环节,以消除稳态误差并提高系统的稳定性。