1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-19 04:52:12 +01:00

Merge remote-tracking branch 'origin/rodney/OP-1794_dump_axis_lock_accumulators_on_low_throttle' into next

This commit is contained in:
Alessio Morale 2015-04-20 11:52:35 +02:00
commit 107f807c92

View File

@ -49,7 +49,7 @@
#include <stabilization.h> #include <stabilization.h>
#include <virtualflybar.h> #include <virtualflybar.h>
#include <cruisecontrol.h> #include <cruisecontrol.h>
#include <sanitycheck.h>
// Private constants // Private constants
#define CALLBACK_PRIORITY CALLBACK_PRIORITY_CRITICAL #define CALLBACK_PRIORITY CALLBACK_PRIORITY_CRITICAL
@ -66,6 +66,7 @@ static float axis_lock_accum[3] = { 0, 0, 0 };
static uint8_t previous_mode[AXES] = { 255, 255, 255, 255 }; static uint8_t previous_mode[AXES] = { 255, 255, 255, 255 };
static PiOSDeltatimeConfig timeval; static PiOSDeltatimeConfig timeval;
static float speedScaleFactor = 1.0f; static float speedScaleFactor = 1.0f;
static bool frame_is_multirotor;
// Private functions // Private functions
static void stabilizationInnerloopTask(); static void stabilizationInnerloopTask();
@ -95,6 +96,8 @@ void stabilizationInnerloopInit()
// schedule dead calls every FAILSAFE_TIMEOUT_MS to have the watchdog cleared // schedule dead calls every FAILSAFE_TIMEOUT_MS to have the watchdog cleared
PIOS_CALLBACKSCHEDULER_Schedule(callbackHandle, FAILSAFE_TIMEOUT_MS, CALLBACK_UPDATEMODE_LATER); PIOS_CALLBACKSCHEDULER_Schedule(callbackHandle, FAILSAFE_TIMEOUT_MS, CALLBACK_UPDATEMODE_LATER);
frame_is_multirotor = (GetCurrentFrameType() == FRAME_TYPE_MULTIROTOR);
} }
static float get_pid_scale_source_value() static float get_pid_scale_source_value()
@ -248,6 +251,11 @@ static void stabilizationInnerloopTask()
if (t < STABILIZATIONSTATUS_INNERLOOP_THRUST) { if (t < STABILIZATIONSTATUS_INNERLOOP_THRUST) {
if (reinit) { if (reinit) {
stabSettings.innerPids[t].iAccumulator = 0; stabSettings.innerPids[t].iAccumulator = 0;
if (frame_is_multirotor) {
// Multirotors should dump axis lock accumulators when unarmed or throttle is low.
// Fixed wing or ground vehicles can fly/drive with low throttle.
axis_lock_accum[t] = 0;
}
} }
switch (StabilizationStatusInnerLoopToArray(enabled)[t]) { switch (StabilizationStatusInnerLoopToArray(enabled)[t]) {
case STABILIZATIONSTATUS_INNERLOOP_VIRTUALFLYBAR: case STABILIZATIONSTATUS_INNERLOOP_VIRTUALFLYBAR: