mirror of
https://github.com/okalachev/flix.git
synced 2026-01-11 05:26:53 +00:00
Merge changes from master
This commit is contained in:
@@ -9,7 +9,6 @@
|
|||||||
#include "lpf.h"
|
#include "lpf.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#define ARMED_THRUST 0.1 // thrust to indicate armed state
|
|
||||||
#define PITCHRATE_P 0.05
|
#define PITCHRATE_P 0.05
|
||||||
#define PITCHRATE_I 0.2
|
#define PITCHRATE_I 0.2
|
||||||
#define PITCHRATE_D 0.001
|
#define PITCHRATE_D 0.001
|
||||||
@@ -135,12 +134,11 @@ void controlTorque() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (thrustTarget < ARMED_THRUST) {
|
if (thrustTarget < 0.1) {
|
||||||
// minimal thrust to indicate armed state
|
motors[0] = 0.1; // idle thrust
|
||||||
motors[0] = ARMED_THRUST;
|
motors[1] = 0.1;
|
||||||
motors[1] = ARMED_THRUST;
|
motors[2] = 0.1;
|
||||||
motors[2] = ARMED_THRUST;
|
motors[3] = 0.1;
|
||||||
motors[3] = ARMED_THRUST;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,20 +11,20 @@ class PID {
|
|||||||
public:
|
public:
|
||||||
float p, i, d;
|
float p, i, d;
|
||||||
float windup;
|
float windup;
|
||||||
float maxdt;
|
float dtMax;
|
||||||
|
|
||||||
float derivative = 0;
|
float derivative = 0;
|
||||||
float integral = 0;
|
float integral = 0;
|
||||||
|
|
||||||
LowPassFilter<float> lpf; // low pass filter for derivative term
|
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) :
|
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), maxdt(maxdt) {}
|
p(p), i(i), d(d), windup(windup), lpf(dAlpha), dtMax(dtMax) {}
|
||||||
|
|
||||||
float update(float error) {
|
float update(float error) {
|
||||||
float dt = t - prevTime;
|
float dt = t - prevTime;
|
||||||
|
|
||||||
if (dt > 0 && dt < maxdt) {
|
if (dt > 0 && dt < dtMax) {
|
||||||
integral += error * dt;
|
integral += error * dt;
|
||||||
derivative = lpf.update((error - prevError) / dt); // compute derivative and apply low-pass filter
|
derivative = lpf.update((error - prevError) / dt); // compute derivative and apply low-pass filter
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user