void resetMulticopterAltitudeController(void) { navPidReset(&posControl.pids.vel[Z]); navPidReset(&posControl.pids.surface); filterResetPt1(&altholdThrottleFilterState, 0.0f); posControl.desiredState.vel.V.Z = posControl.actualState.vel.V.Z; // Gradually transition from current climb posControl.rcAdjustment[THROTTLE] = 0; /* Prevent jump if activated with zero throttle - start with -50% throttle adjustment. That's obviously too much, but it will prevent jumping */ if (prepareForTakeoffOnReset) { posControl.pids.vel[Z].integrator = -500.0f; prepareForTakeoffOnReset = false; } }
void resetFixedWingAltitudeController() { navPidReset(&posControl.pids.fw_alt); posControl.rcAdjustment[PITCH] = 0; isPitchAdjustmentValid = false; throttleSpeedAdjustment = 0; }
void resetMulticopterAltitudeController() { navPidReset(&posControl.pids.vel[Z]); filterResetPt1(&altholdThrottleFilterState, 0.0f); posControl.desiredState.vel.V.Z = posControl.actualState.vel.V.Z; // Gradually transition from current climb posControl.rcAdjustment[THROTTLE] = 0; }
void resetFixedWingPositionController(void) { virtualDesiredPosition.V.X = 0; virtualDesiredPosition.V.Y = 0; virtualDesiredPosition.V.Z = 0; navPidReset(&posControl.pids.fw_nav); posControl.rcAdjustment[ROLL] = 0; isRollAdjustmentValid = false; pt1FilterReset(&fwPosControllerCorrectionFilterState, 0.0f); }
void resetMulticopterPositionController(void) { int axis; for (axis = 0; axis < 2; axis++) { navPidReset(&posControl.pids.vel[axis]); posControl.rcAdjustment[axis] = 0; filterResetPt1(&mcPosControllerAccFilterStateX, 0.0f); filterResetPt1(&mcPosControllerAccFilterStateY, 0.0f); lastAccelTargetX = 0.0f; lastAccelTargetY = 0.0f; } }