1
0
Fork 0
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:
Pawel Spychalski (DzikuVx) 2018-08-07 14:13:12 +02:00
parent 9212209d96
commit bf626e2ec1
7 changed files with 25 additions and 1 deletions

View file

@ -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,8 +2553,9 @@ 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:
if (!ARMING_FLAG(ARMED)) {
if (sbufReadU8Safe(&tmp_u8, src))

View file

@ -205,9 +205,11 @@ void initActiveBoxIds(void)
}
}
#ifdef USE_MR_BRAKING_MODE
if (mixerConfig()->platformType == PLATFORM_MULTIROTOR) {
activeBoxIds[activeBoxIdCount++] = BOXBRAKING;
}
#endif
#endif

View file

@ -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

View file

@ -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);
}

View file

@ -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;

View file

@ -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

View file

@ -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