Add in-flight adjustments support for feedforward terms
Renamed/repurposed the "D Setpoint" adjustment to be "Pitch & Roll F Adjustment" and have it simultaneously adjust pitch and roll. Renamed the "D Setpoint Transition" adjustment to be "Feedforward Transition" - no functionality changes. Added adjustments for the individual Pitch, Roll and Yaw axes.
This commit is contained in:
parent
17e76e48f6
commit
a1d3a0dba8
|
@ -203,11 +203,11 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU
|
|||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}, {
|
||||
.adjustmentFunction = ADJUSTMENT_D_SETPOINT,
|
||||
.adjustmentFunction = ADJUSTMENT_PITCH_ROLL_F,
|
||||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}, {
|
||||
.adjustmentFunction = ADJUSTMENT_D_SETPOINT_TRANSITION,
|
||||
.adjustmentFunction = ADJUSTMENT_FEEDFORWARD_TRANSITION,
|
||||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}, {
|
||||
|
@ -218,6 +218,18 @@ static const adjustmentConfig_t defaultAdjustmentConfigs[ADJUSTMENT_FUNCTION_COU
|
|||
.adjustmentFunction = ADJUSTMENT_PID_AUDIO,
|
||||
.mode = ADJUSTMENT_MODE_SELECT,
|
||||
.data = { .switchPositions = ARRAYLEN(pidAudioPositionToModeMap) }
|
||||
}, {
|
||||
.adjustmentFunction = ADJUSTMENT_PITCH_F,
|
||||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}, {
|
||||
.adjustmentFunction = ADJUSTMENT_ROLL_F,
|
||||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}, {
|
||||
.adjustmentFunction = ADJUSTMENT_YAW_F,
|
||||
.mode = ADJUSTMENT_MODE_STEP,
|
||||
.data = { .step = 1 }
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -244,14 +256,17 @@ static const char * const adjustmentLabels[] = {
|
|||
"ROLL I",
|
||||
"ROLL D",
|
||||
"RC RATE YAW",
|
||||
"D SETPOINT",
|
||||
"D SETPOINT TRANSITION",
|
||||
"PITCH/ROLL F",
|
||||
"FF TRANSITION",
|
||||
"HORIZON STRENGTH",
|
||||
"ROLL RC RATE",
|
||||
"PITCH RC RATE",
|
||||
"ROLL RC EXPO",
|
||||
"PITCH RC EXPO",
|
||||
"PID AUDIO",
|
||||
"PITCH F",
|
||||
"ROLL F",
|
||||
"YAW F"
|
||||
};
|
||||
|
||||
static int adjustmentRangeNameIndex = 0;
|
||||
|
@ -405,15 +420,31 @@ static int applyStepAdjustment(controlRateConfig_t *controlRateConfig, uint8_t a
|
|||
controlRateConfig->rcRates[FD_YAW] = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_RATE_YAW, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_D_SETPOINT:
|
||||
newValue = constrain((int)pidProfile->pid[PID_ROLL].F + delta, 0, 2000); // FIXME magic numbers repeated in cli.c
|
||||
case ADJUSTMENT_PITCH_ROLL_F:
|
||||
case ADJUSTMENT_PITCH_F:
|
||||
newValue = constrain(pidProfile->pid[PID_PITCH].F + delta, 0, 2000);
|
||||
pidProfile->pid[PID_PITCH].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue);
|
||||
|
||||
if (adjustmentFunction == ADJUSTMENT_PITCH_F) {
|
||||
break;
|
||||
}
|
||||
// fall through for combined ADJUSTMENT_PITCH_ROLL_F
|
||||
FALLTHROUGH;
|
||||
case ADJUSTMENT_ROLL_F:
|
||||
newValue = constrain(pidProfile->pid[PID_ROLL].F + delta, 0, 2000);
|
||||
pidProfile->pid[PID_ROLL].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT, newValue);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_D_SETPOINT_TRANSITION:
|
||||
newValue = constrain((int)pidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c
|
||||
case ADJUSTMENT_YAW_F:
|
||||
newValue = constrain(pidProfile->pid[PID_YAW].F + delta, 0, 2000);
|
||||
pidProfile->pid[PID_YAW].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_FEEDFORWARD_TRANSITION:
|
||||
newValue = constrain(pidProfile->feedForwardTransition + delta, 1, 100); // FIXME magic numbers repeated in cli.c
|
||||
pidProfile->feedForwardTransition = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT_TRANSITION, newValue);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue);
|
||||
break;
|
||||
default:
|
||||
newValue = -1;
|
||||
|
@ -554,15 +585,31 @@ static int applyAbsoluteAdjustment(controlRateConfig_t *controlRateConfig, adjus
|
|||
controlRateConfig->rcRates[FD_YAW] = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_RC_RATE_YAW, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_D_SETPOINT:
|
||||
newValue = constrain(value, 0, 2000); // FIXME magic numbers repeated in cli.c
|
||||
case ADJUSTMENT_PITCH_ROLL_F:
|
||||
case ADJUSTMENT_PITCH_F:
|
||||
newValue = constrain(value, 0, 2000);
|
||||
pidProfile->pid[PID_PITCH].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_PITCH_F, newValue);
|
||||
|
||||
if (adjustmentFunction == ADJUSTMENT_PITCH_F) {
|
||||
break;
|
||||
}
|
||||
// fall through for combined ADJUSTMENT_PITCH_ROLL_F
|
||||
FALLTHROUGH;
|
||||
case ADJUSTMENT_ROLL_F:
|
||||
newValue = constrain(value, 0, 2000);
|
||||
pidProfile->pid[PID_ROLL].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT, newValue);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_ROLL_F, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_D_SETPOINT_TRANSITION:
|
||||
case ADJUSTMENT_YAW_F:
|
||||
newValue = constrain(value, 0, 2000);
|
||||
pidProfile->pid[PID_YAW].F = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_YAW_F, newValue);
|
||||
break;
|
||||
case ADJUSTMENT_FEEDFORWARD_TRANSITION:
|
||||
newValue = constrain(value, 1, 100); // FIXME magic numbers repeated in cli.c
|
||||
pidProfile->feedForwardTransition = newValue;
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_D_SETPOINT_TRANSITION, newValue);
|
||||
blackboxLogInflightAdjustmentEvent(ADJUSTMENT_FEEDFORWARD_TRANSITION, newValue);
|
||||
break;
|
||||
default:
|
||||
newValue = -1;
|
||||
|
|
|
@ -47,14 +47,17 @@ typedef enum {
|
|||
ADJUSTMENT_ROLL_I,
|
||||
ADJUSTMENT_ROLL_D,
|
||||
ADJUSTMENT_RC_RATE_YAW,
|
||||
ADJUSTMENT_D_SETPOINT,
|
||||
ADJUSTMENT_D_SETPOINT_TRANSITION,
|
||||
ADJUSTMENT_PITCH_ROLL_F,
|
||||
ADJUSTMENT_FEEDFORWARD_TRANSITION,
|
||||
ADJUSTMENT_HORIZON_STRENGTH,
|
||||
ADJUSTMENT_ROLL_RC_RATE,
|
||||
ADJUSTMENT_PITCH_RC_RATE,
|
||||
ADJUSTMENT_ROLL_RC_EXPO,
|
||||
ADJUSTMENT_PITCH_RC_EXPO,
|
||||
ADJUSTMENT_PID_AUDIO,
|
||||
ADJUSTMENT_PITCH_F,
|
||||
ADJUSTMENT_ROLL_F,
|
||||
ADJUSTMENT_YAW_F,
|
||||
ADJUSTMENT_FUNCTION_COUNT
|
||||
} adjustmentFunction_e;
|
||||
|
||||
|
|
Loading…
Reference in New Issue