1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-24 00:35:39 +03:00

increase alt_hold sensitivity 5x and narrow deadband to 20

This commit is contained in:
ctzsnooze 2024-11-07 11:05:51 +11:00
parent 3ea4742acc
commit 738f5973fb
3 changed files with 5 additions and 3 deletions

View file

@ -1109,7 +1109,7 @@ const clivalue_t valueTable[] = {
{ "yaw_control_reversed", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RC_CONTROLS_CONFIG, offsetof(rcControlsConfig_t, yaw_control_reversed) }, { "yaw_control_reversed", VAR_INT8 | MASTER_VALUE | MODE_LOOKUP, .config.lookup = { TABLE_OFF_ON }, PG_RC_CONTROLS_CONFIG, offsetof(rcControlsConfig_t, yaw_control_reversed) },
#ifdef USE_ALT_HOLD_MODE #ifdef USE_ALT_HOLD_MODE
{ PARAM_NAME_ALT_HOLD_ADJUST_RATE, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 200 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_adjust_rate) }, { PARAM_NAME_ALT_HOLD_ADJUST_RATE, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 0, 250 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_adjust_rate) },
{ PARAM_NAME_ALT_HOLD_DEADBAND, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 5, 50 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_deadband) }, { PARAM_NAME_ALT_HOLD_DEADBAND, VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 5, 50 }, PG_ALTHOLD_CONFIG, offsetof(altHoldConfig_t, alt_hold_deadband) },
#endif #endif

View file

@ -40,6 +40,7 @@ static const float taskIntervalSeconds = HZ_TO_INTERVAL(ALTHOLD_TASK_RATE_HZ); /
typedef struct { typedef struct {
bool isAltHoldActive; bool isAltHoldActive;
float targetAltitudeCm; float targetAltitudeCm;
float adjustRateMultiplier;
float targetAltitudeAdjustRate; float targetAltitudeAdjustRate;
float deadband; float deadband;
} altHoldState_t; } altHoldState_t;
@ -74,6 +75,7 @@ void altHoldInit(void)
{ {
altHoldState.isAltHoldActive = false; altHoldState.isAltHoldActive = false;
altHoldState.deadband = altHoldConfig()->alt_hold_deadband / 100.0f; altHoldState.deadband = altHoldConfig()->alt_hold_deadband / 100.0f;
altHoldState.adjustRateMultiplier = 5.0f * altHoldConfig()->alt_hold_adjust_rate;
altHoldReset(); altHoldReset();
} }
@ -136,7 +138,7 @@ void altHoldUpdateTargetAltitude(void)
// constant (set) deceleration target in the last 2m // constant (set) deceleration target in the last 2m
throttleAdjustmentFactor = -(0.9f + constrainf(getAltitudeCm() / 2000.0f, 0.1f, 9.0f)); throttleAdjustmentFactor = -(0.9f + constrainf(getAltitudeCm() / 2000.0f, 0.1f, 9.0f));
} }
altHoldState.targetAltitudeAdjustRate = throttleAdjustmentFactor * altHoldConfig()->alt_hold_adjust_rate; altHoldState.targetAltitudeAdjustRate = throttleAdjustmentFactor * altHoldState.adjustRateMultiplier;
// if taskRate is 100Hz, default adjustRate of 100 adds/subtracts 1m every second, or 1cm per task run, at full stick position // if taskRate is 100Hz, default adjustRate of 100 adds/subtracts 1m every second, or 1cm per task run, at full stick position
altHoldState.targetAltitudeCm += altHoldState.targetAltitudeAdjustRate * taskIntervalSeconds; altHoldState.targetAltitudeCm += altHoldState.targetAltitudeAdjustRate * taskIntervalSeconds;

View file

@ -34,6 +34,6 @@ PG_REGISTER_WITH_RESET_TEMPLATE(altHoldConfig_t, altHoldConfig, PG_ALTHOLD_CONFI
PG_RESET_TEMPLATE(altHoldConfig_t, altHoldConfig, PG_RESET_TEMPLATE(altHoldConfig_t, altHoldConfig,
.alt_hold_adjust_rate = 100, // max rate of change of altitude target using sticks in cm/s .alt_hold_adjust_rate = 100, // max rate of change of altitude target using sticks in cm/s
.alt_hold_deadband = 40, // throttle deadband in percent of stick travel .alt_hold_deadband = 20, // throttle deadband in percent of stick travel
); );
#endif #endif