1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-11-29 07:24:13 +01:00

Make the StabilizationSettings.MaxRate field only apply to the stabilized

modes.  That way ManualRate can exceed MaxRate.
This commit is contained in:
James Cotton 2011-09-11 12:27:17 -05:00
parent aad41ebb4f
commit 6945f17eba

View File

@ -254,6 +254,13 @@ static void stabilizationTask(void* parameters)
}
case STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE:
rateDesiredAxis[i] = ApplyPid(&pids[PID_ROLL + i], local_error[i]);
if(rateDesiredAxis[i] > settings.MaximumRate[i])
rateDesiredAxis[i] = settings.MaximumRate[i];
else if(rateDesiredAxis[ct] < -settings.MaximumRate[ct])
rateDesiredAxis[i] = -settings.MaximumRate[i];
axis_lock_accum[i] = 0;
break;
@ -272,6 +279,12 @@ static void stabilizationTask(void* parameters)
rateDesiredAxis[i] = ApplyPid(&pids[PID_ROLL + i], axis_lock_accum[i]);
}
if(rateDesiredAxis[i] > settings.MaximumRate[i])
rateDesiredAxis[i] = settings.MaximumRate[i];
else if(rateDesiredAxis[ct] < -settings.MaximumRate[ct])
rateDesiredAxis[i] = -settings.MaximumRate[i];
break;
}
}
@ -284,11 +297,6 @@ static void stabilizationTask(void* parameters)
//Calculate desired command
for(int8_t ct=0; ct< MAX_AXES; ct++)
{
if(rateDesiredAxis[ct] > settings.MaximumRate[ct])
rateDesiredAxis[ct] = settings.MaximumRate[ct];
else if(rateDesiredAxis[ct] < -settings.MaximumRate[ct])
rateDesiredAxis[ct] = -settings.MaximumRate[ct];
switch(stabDesired.StabilizationMode[ct])
{
case STABILIZATIONDESIRED_STABILIZATIONMODE_RATE: