mirror of
https://github.com/okalachev/flix.git
synced 2026-01-09 12:36:49 +00:00
Merge changes from master
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user