1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-18 08:54:15 +01:00

OP-1848 altvario fixes

1. CC compile fix
2. on reinit calculate a new thrustdemand after which gyro updates will retrigger subsequent calcs
This commit is contained in:
abeck70 2015-05-12 22:02:03 +10:00
parent e0919542e7
commit 794605b3d9
2 changed files with 4 additions and 0 deletions

View File

@ -84,6 +84,8 @@ float stabilizationAltitudeHold(float setpoint, ThrustModeType mode, bool reinit
if (reinit || !controlDown.IsActive()) { if (reinit || !controlDown.IsActive()) {
controlDown.Activate(); controlDown.Activate();
newaltitude = true; newaltitude = true;
// calculate a thrustDemand on reinit only
altitudeHoldTask();
} }
const float DEADBAND = 0.20f; const float DEADBAND = 0.20f;

View File

@ -107,11 +107,13 @@ static void stabilizationOuterloopTask()
bool reinit = (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST] != previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST]); bool reinit = (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST] != previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST]);
previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST]; previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] = StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST];
#ifdef REVOLUTION
if (reinit && (previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] == STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE || if (reinit && (previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] == STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE ||
previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] == STABILIZATIONSTATUS_OUTERLOOP_ALTITUDEVARIO)) { previous_mode[STABILIZATIONSTATUS_OUTERLOOP_THRUST] == STABILIZATIONSTATUS_OUTERLOOP_ALTITUDEVARIO)) {
// disable the altvario velocity control loop // disable the altvario velocity control loop
stabilizationDisableAltitudeHold(); stabilizationDisableAltitudeHold();
} }
#endif /* REVOLUTION */
switch (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST]) { switch (StabilizationStatusOuterLoopToArray(enabled)[STABILIZATIONSTATUS_OUTERLOOP_THRUST]) {
#ifdef REVOLUTION #ifdef REVOLUTION
case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE: case STABILIZATIONSTATUS_OUTERLOOP_ALTITUDE: