mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-24 08:45:31 +03:00
Braking disabled on Omnibus target
This commit is contained in:
parent
9212209d96
commit
bf626e2ec1
7 changed files with 25 additions and 1 deletions
|
@ -1358,6 +1358,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
break;
|
||||
|
||||
case MSP2_INAV_MC_BRAKING:
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
sbufWriteU16(dst, navConfig()->mc.braking_speed_threshold);
|
||||
sbufWriteU16(dst, navConfig()->mc.braking_disengage_speed);
|
||||
sbufWriteU16(dst, navConfig()->mc.braking_timeout);
|
||||
|
@ -1366,6 +1367,7 @@ static bool mspFcProcessOutCommand(uint16_t cmdMSP, sbuf_t *dst, mspPostProcessF
|
|||
sbufWriteU16(dst, navConfig()->mc.braking_boost_speed_threshold);
|
||||
sbufWriteU16(dst, navConfig()->mc.braking_boost_disengage_speed);
|
||||
sbufWriteU8(dst, navConfig()->mc.braking_bank_angle);
|
||||
#endif
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -2542,6 +2544,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
#endif
|
||||
|
||||
case MSP2_INAV_SET_MC_BRAKING:
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
navConfigMutable()->mc.braking_speed_threshold = sbufReadU16(src);
|
||||
navConfigMutable()->mc.braking_disengage_speed = sbufReadU16(src);
|
||||
navConfigMutable()->mc.braking_timeout = sbufReadU16(src);
|
||||
|
@ -2550,6 +2553,7 @@ static mspResult_e mspFcProcessInCommand(uint16_t cmdMSP, sbuf_t *src)
|
|||
navConfigMutable()->mc.braking_boost_speed_threshold = sbufReadU16(src);
|
||||
navConfigMutable()->mc.braking_boost_disengage_speed = sbufReadU16(src);
|
||||
navConfigMutable()->mc.braking_bank_angle = sbufReadU8(src);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case MSP2_INAV_SELECT_BATTERY_PROFILE:
|
||||
|
|
|
@ -205,9 +205,11 @@ void initActiveBoxIds(void)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
if (mixerConfig()->platformType == PLATFORM_MULTIROTOR) {
|
||||
activeBoxIds[activeBoxIdCount++] = BOXBRAKING;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1309,34 +1309,42 @@ groups:
|
|||
max: 10000
|
||||
- name: nav_mc_braking_speed_threshold
|
||||
field: mc.braking_speed_threshold
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 0
|
||||
max: 1000
|
||||
- name: nav_mc_braking_disengage_speed
|
||||
field: mc.braking_disengage_speed
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 0
|
||||
max: 1000
|
||||
- name: nav_mc_braking_timeout
|
||||
field: mc.braking_timeout
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 100
|
||||
max: 5000
|
||||
- name: nav_mc_braking_boost_factor
|
||||
field: mc.braking_boost_factor
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 0
|
||||
max: 200
|
||||
- name: nav_mc_braking_boost_timeout
|
||||
field: mc.braking_boost_timeout
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 0
|
||||
max: 5000
|
||||
- name: nav_mc_braking_boost_speed_threshold
|
||||
field: mc.braking_boost_speed_threshold
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 100
|
||||
max: 1000
|
||||
- name: nav_mc_braking_boost_disengage_speed
|
||||
field: mc.braking_boost_disengage_speed
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 0
|
||||
max: 1000
|
||||
- name: nav_mc_braking_bank_angle
|
||||
field: mc.braking_bank_angle
|
||||
condition: USE_MR_BRAKING_MODE
|
||||
min: 15
|
||||
max: 60
|
||||
- name: nav_fw_cruise_thr
|
||||
|
|
|
@ -2342,6 +2342,8 @@ static bool adjustPositionFromRCInput(void)
|
|||
const int16_t rcPitchAdjustment = applyDeadband(rcCommand[PITCH], rcControlsConfig()->pos_hold_deadband);
|
||||
const int16_t rcRollAdjustment = applyDeadband(rcCommand[ROLL], rcControlsConfig()->pos_hold_deadband);
|
||||
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
|
||||
const bool brakingEntryAllowed =
|
||||
IS_RC_MODE_ACTIVE(BOXBRAKING) &&
|
||||
!STATE(NAV_CRUISE_BRAKING_LOCKED) &&
|
||||
|
@ -2419,6 +2421,7 @@ static bool adjustPositionFromRCInput(void)
|
|||
*/
|
||||
setDesiredPosition(&navGetCurrentActualPositionAndVelocity()->pos, 0, NAV_POS_UPDATE_XY);
|
||||
}
|
||||
#endif
|
||||
|
||||
retValue = adjustMulticopterPositionFromRCInput(rcPitchAdjustment, rcRollAdjustment);
|
||||
}
|
||||
|
|
|
@ -389,9 +389,11 @@ static void updatePositionAccelController_MC(timeDelta_t deltaMicros, float maxA
|
|||
|
||||
float maxAccelChange = US2S(deltaMicros) * 1700.0f;
|
||||
//When braking, raise jerk limit even if we are not boosting acceleration
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
if (STATE(NAV_CRUISE_BRAKING)) {
|
||||
maxAccelChange = maxAccelChange * 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
const float accelLimitXMin = constrainf(lastAccelTargetX - maxAccelChange, -accelLimitX, +accelLimitX);
|
||||
const float accelLimitXMax = constrainf(lastAccelTargetX + maxAccelChange, -accelLimitX, +accelLimitX);
|
||||
|
@ -409,6 +411,7 @@ static void updatePositionAccelController_MC(timeDelta_t deltaMicros, float maxA
|
|||
int32_t maxBankAngle = DEGREES_TO_DECIDEGREES(navConfig()->mc.max_bank_angle);
|
||||
uint8_t accCutoffFrequency = NAV_ACCEL_CUTOFF_FREQUENCY_HZ;
|
||||
|
||||
#ifdef USE_MR_BRAKING_MODE
|
||||
//Boost required accelerations
|
||||
if (STATE(NAV_CRUISE_BRAKING_BOOST) && navConfig()->mc.braking_boost_factor > 0)
|
||||
{
|
||||
|
@ -434,6 +437,7 @@ static void updatePositionAccelController_MC(timeDelta_t deltaMicros, float maxA
|
|||
maxBankAngle = DEGREES_TO_DECIDEGREES(navConfig()->mc.braking_bank_angle);
|
||||
accCutoffFrequency = NAV_ACCEL_CUTOFF_FREQUENCY_HZ * 2;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Save last acceleration target
|
||||
lastAccelTargetX = newAccelX;
|
||||
|
|
|
@ -162,3 +162,5 @@
|
|||
#define TARGET_IO_PORTB 0xffff
|
||||
#define TARGET_IO_PORTC (BIT(13)|BIT(14)|BIT(15))
|
||||
#define TARGET_IO_PORTF (BIT(0)|BIT(1)|BIT(4))
|
||||
|
||||
#undef USE_MR_BRAKING_MODE
|
|
@ -50,6 +50,7 @@
|
|||
#define USE_TELEMETRY_FRSKY
|
||||
|
||||
#define USE_GYRO_BIQUAD_RC_FIR2
|
||||
#define USE_MR_BRAKING_MODE
|
||||
|
||||
#if defined(STM_FAST_TARGET)
|
||||
#define SCHEDULER_DELAY_LIMIT 10
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue