总结:PID该怎么调,我们该注意什么
①先要保证电机的输出是线性的,微型四轴等没有电调的最好先对电机的油门行程和供电电压进行矫正,保证对电机的控制输入和电机输出的力矩程线性关系。
②严格注意自己控制程序中的每一步是否有线程安全的问题,不要让四轴的一次控制运算中使用了不是同一时间的状态测量值。
③用陀螺作为微分项能减少姿态解算误差带来的干扰,但要小心有可能会破坏了PID的控制模型导致控制效果变坏。
④作者强烈建议你使用Kp Ti Td的PID参数形式。
⑤记住Kp Ti Td参数变化对系统产生的影响是什么样的。
⑥注意调参的时候你是怎么固定你的四轴的。
⑦选择我上面提到的我的两种调参方法的一种整定参数。
⑧不要相信仅用PID能调出完美的四轴控制器,PID仅仅能让你的四轴飞起来而已,更不要相信增量式PID能在四轴的姿态控制中有所作为,牛逼的开源不开源四轴都不仅仅使用了PID控制器。
⑨不要手贱报控制专业
这里附上MATLAB的仿真代码
[plain] view plain copy%% lynx的四轴飞行器PID调试模型
clc,clear
%被控线性模型
TfPitchNum = [-0.00004584 0.0001312 0.0009171 0.000228];
TfPitchDen = [1 -2.514 2.087 -0.5657];
sysPitch = tf(TfPitchNum,TfPitchDen,0.04); %重新构造无噪声输入的模型
%ltiview(sysPitch)
sysPitchZpk = zpk(sysPitch);
%使用标准PID参数的柿子,这个是一个可用的参数
Kp = 6.5;
Ti = 0.8;
Td = 1.1;
% %临界稳定增益
% Kp = 11.6;
% Ti = 1000;
% Td = 0;
% %齐格勒-尼克尔思整定方法
% Kp = 11.6*0.6;
% Ti = 0.5*1.1;
% Td = 0.125*1.1+0.5;
Ts = 0.04
Ki = Kp*Ts/Ti; %0.3
Kd = Kp*Td/Ts; %17
p2 = Kd;
p1 = -Kp-2*p2;
p0 = Kp+Ki+p2;
ControlSys1Num = [p0 p1 p2];
ControlSys1Den = [1 -1 0];
ControlSys1 = tf(ControlSys1Num,ControlSys1Den,0.04);
SysOpen = series(ControlSys1,sysPitchZpk);
SysSum = feedback(SysOpen,1)
ltiview(SysSum)
ltiview(SysOpen)
%ltiview(ControlSys1)
tf(ControlSys1)
评论
查看更多