Merge changes from master

This commit is contained in:
Oleg Kalachev
2025-11-14 20:27:02 +03:00
parent 80f23ab016
commit 1551d096fc
2 changed files with 9 additions and 11 deletions

View File

@@ -9,7 +9,6 @@
#include "lpf.h"
#include "util.h"
#define ARMED_THRUST 0.1 // thrust to indicate armed state
#define PITCHRATE_P 0.05
#define PITCHRATE_I 0.2
#define PITCHRATE_D 0.001
@@ -135,12 +134,11 @@ void controlTorque() {
return;
}
if (thrustTarget < ARMED_THRUST) {
// minimal thrust to indicate armed state
motors[0] = ARMED_THRUST;
motors[1] = ARMED_THRUST;
motors[2] = ARMED_THRUST;
motors[3] = ARMED_THRUST;
if (thrustTarget < 0.1) {
motors[0] = 0.1; // idle thrust
motors[1] = 0.1;
motors[2] = 0.1;
motors[3] = 0.1;
return;
}

View File

@@ -11,20 +11,20 @@ class PID {
public:
float p, i, d;
float windup;
float maxdt;
float dtMax;
float derivative = 0;
float integral = 0;
LowPassFilter<float> lpf; // low pass filter for derivative term
PID(float p, float i, float d, float windup = 0, float dAlpha = 1, float maxdt = 0.1) :
p(p), i(i), d(d), windup(windup), lpf(dAlpha), maxdt(maxdt) {}
PID(float p, float i, float d, float windup = 0, float dAlpha = 1, float dtMax = 0.1) :
p(p), i(i), d(d), windup(windup), lpf(dAlpha), dtMax(dtMax) {}
float update(float error) {
float dt = t - prevTime;
if (dt > 0 && dt < maxdt) {
if (dt > 0 && dt < dtMax) {
integral += error * dt;
derivative = lpf.update((error - prevError) / dt); // compute derivative and apply low-pass filter
} else {