mirror of
https://github.com/okalachev/flix.git
synced 2026-09-06 00:10:58 +00:00
Implement motors output desaturation
So the drone continues stabilization on max thrust.
This commit is contained in:
@@ -149,12 +149,25 @@ void controlTorque() {
|
||||
motors[MOTOR_REAR_LEFT] = thrustTarget + torqueTarget.x + torqueTarget.y - torqueTarget.z;
|
||||
motors[MOTOR_REAR_RIGHT] = thrustTarget - torqueTarget.x + torqueTarget.y + torqueTarget.z;
|
||||
|
||||
desaturate(motors[MOTOR_FRONT_LEFT], motors[MOTOR_FRONT_RIGHT], motors[MOTOR_REAR_LEFT], motors[MOTOR_REAR_RIGHT]);
|
||||
|
||||
motors[0] = constrain(motors[0], 0, 1);
|
||||
motors[1] = constrain(motors[1], 0, 1);
|
||||
motors[2] = constrain(motors[2], 0, 1);
|
||||
motors[3] = constrain(motors[3], 0, 1);
|
||||
}
|
||||
|
||||
void desaturate(float& a, float& b, float& c, float& d) {
|
||||
float maxThrust = max(max(a, b), max(c, d));
|
||||
if (maxThrust > 1) {
|
||||
float diff = maxThrust - 1;
|
||||
a -= diff;
|
||||
b -= diff;
|
||||
c -= diff;
|
||||
d -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
const char* getModeName() {
|
||||
switch (mode) {
|
||||
case RAW: return "RAW";
|
||||
|
||||
Reference in New Issue
Block a user