本篇主要介绍pid基本原理、实现和参数调试。其中主要有这几个部分的pid要进行实现:姿态的pid实现自稳. 高度pid实现定高. 循迹pid实现寻黑线而行。
一、pid的基本原理
参考:
【1】http://blog.csdn.net/nemol1990/article/details/45131603
【2】http://blog.csdn.net/super_mice/article/details/38436723
(注:将时间常数一并加入Kp,Kd,Ki中了)
1. 比例(P)控制规律:具有P控制的系统,其稳态误差可通过P控制器的增益Kp来调整:Kp越大,稳态误差越小;反之,稳态误差越大。但是Kp越大,其系统的稳定性会降低。m(t) = Kp*e(t);
由上式可知,控制器的输出m(t)与输入误差信号e(t)成比例关系,偏差减小的速度取决于比例系数Kp:Kp越大,偏差减小的越快,但是很容易引起振荡(尤其是在前向通道中存在较大的时滞环节时);Kp减小,发生振荡的可能性小,但是调节速度变慢。单纯的P控制无法消除稳态误差,所以必须要引入积分I控制。
2. 积分(I)控制规律:由于采用了积分环节,若当前误差e(t)为0,则其输出信号m(t)有可能是一个不为0的常量。需要注意的是,引入积分环节,可以提到系统型别,使得系统可以跟踪更高阶次的输入信号,以消除稳态误差。
m(t) = Ki * | e(t)*d(t) .
3. 微分(D)控制规律:可以反应输入信号的变化趋势,具有某种预见性,可为系统引进一个有效的早期修正信号,以增加系统的阻尼程度,而从提高系统的稳定性。(tao为微分时间常数)
m(t) = Kd*d[e(t)]/dt;
4.P控制对系统性能的影响:
开环增益越大,稳态误差减小(无法消除,属于有差调节)
过渡时间缩短
稳定程度变差
5.I控制对系统性能的影响:
消除系统稳态误差(能够消除静态误差,属于无差调节)
稳定程度变差
6.D控制对系统性能的影响:
减小超调量
减小调节时间(与P控制相比较而言)
增强系统稳定性
增加系统阻尼程度
二、不同部分的pid实现
参考:
http://forum.eepw.com.cn/thread/268670/1
1、姿态部分PID
采用串级PID,外环是角度环,内环是角速度环。
角度环通过角度误差pid计算,得到角速度的期望值,送到角速度环;角速度环再做一次pid得到电机输出。
这样做的目的是,通过两级pid串联,增大了四轴的阻尼(角度误差(角速度)阻尼、角速度误差(角加速度)阻尼)。参数调节好,四轴在飞行跟随手感会很好,机动性强,指哪打哪,也能很好的做到悬停。
#define angle_max 10.0f
#define angle_integral_max 1000.0f
/*******************************************************
函数原型: void Control_Angle(struct _out_angle *angle,struct _Rc *rc)
功 能: PID控制器(外环)
*******************************************************/
void Control_Angle(struct _out_angle *angle,struct _Rc *rc)
{
static struct _out_angle control_angle;
static struct _out_angle last_angle;
//////////////////////////////////////////////////////////////////
// 以下为角度环
//////////////////////////////////////////////////////////////////
if(rc->ROLL>1490 && rc->ROLL<1510)
rc->ROLL=1500;
if(rc->PITCH>1490 && rc->PITCH<1510)
rc->PITCH=1500;
////////////////////////////////////////////////////////////