mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-19 14:25:20 +03:00
Revise GPS Rescue throttle and yaw handling to not modify rcCommand
Injecting new values directly into rcCommand to override pilot inputs does not work correctly when rc interpolation or smoothing is enabled. This is because the smoothing functions maintain an internal state that is used to produce the final rcCommand values. So in effect it re-overrides the values set by GPS Rescue. Additionally, modifying rcCommand directly is undesirable because: - It happens before rates are applied. So the pilot's rates will effect the control commanded by GPS Rescue. - rcCommand values are used for more than input in the flight control. They also are used for stick commands, etc. - In the case of throttle, various modifications can be additionally applied like throttle boost and throttle limit that may negatively effect GPS Rescue. These changes revise the logic to only modify the commanded values used in the PID controller (yaw) and mixer (throttle) rather than attempting to override rcCommand.
This commit is contained in:
parent
e260c37be3
commit
9868557c11
5 changed files with 83 additions and 23 deletions
|
@ -54,6 +54,7 @@
|
|||
|
||||
#include "flight/failsafe.h"
|
||||
#include "flight/imu.h"
|
||||
#include "flight/gps_rescue.h"
|
||||
#include "flight/mixer.h"
|
||||
#include "flight/mixer_tricopter.h"
|
||||
#include "flight/pid.h"
|
||||
|
@ -810,6 +811,14 @@ FAST_CODE_NOINLINE void mixTable(timeUs_t currentTimeUs, uint8_t vbatPidCompensa
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_GPS_RESCUE
|
||||
// If gps rescue is active then override the throttle. This prevents things
|
||||
// like throttle boost or throttle limit from negatively affecting the throttle.
|
||||
if (FLIGHT_MODE(GPS_RESCUE_MODE)) {
|
||||
throttle = gpsRescueGetThrottle();
|
||||
}
|
||||
#endif
|
||||
|
||||
motorMixRange = motorMixMax - motorMixMin;
|
||||
if (motorMixRange > 1.0f) {
|
||||
for (int i = 0; i < motorCount; i++) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue