|
本帖最后由 lzb1989666 于 2013-8-1 18:51 编辑
//**** PITCH & ROLL & YAW PID ****
for(axis=0;axis<3;axis++)
{
if (accMode == 1 && axis<2 ) { //LEVEL MODE
errorAngle = rcCommand[axis]/2 - angle[axis]/2;
PTerm = (errorAngle)*PLEVEL8/50 - gyroData[axis]*dynP8[axis]/10;
errorAngleI[axis] += errorAngle;
errorAngleI[axis] = constrain(errorAngleI[axis],-5000,+5000); //WindUp
ITerm = errorAngleI[axis] *ILEVEL8/2000;
} else { //ACRO MODE or YAW axis
error = rcCommand[axis]*10/P8[axis] - gyroData[axis];
PTerm = rcCommand[axis]-gyroData[axis]*dynP8[axis]/10;
errorGyroI[axis] += error;
errorGyroI[axis] = constrain(errorGyroI[axis],-2000,+2000); //WindUp
if (abs(gyroData[axis])>80) errorGyroI[axis] = 0;
ITerm = errorGyroI[axis]*I8[axis]/1000;
}
delta = gyroData[axis] - lastGyro[axis];
DTerm = (delta1[axis]+delta2[axis]+delta+1)*dynD8[axis]/3;
delta2[axis] = delta1[axis];
delta1[axis] = delta;
lastGyro[axis] = gyroData[axis];
axisPID[axis] = PTerm + ITerm - DTerm;
}
为什么要减去gyroData[axis]*dynP8[axis]/10这项,还有红色部分为什么会不同啊,有什么区别,还望大神指点,小弟谢了
另外LEVEL与ACRO MODE or YAW axis模式有什么不同
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|