aboutsummaryrefslogtreecommitdiff
path: root/zumo/pid.h
blob: beb73ac630b917e72495b2cdae0243cd052acfd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#pragma once

#include "protocol.h"

class PID {
private:
	float A0, A1, A0d, A1d, A2d, tau, alpha, d0, d1, fd0, fd1;
	float error[3];
	float output;
	const float dt = 1.0;
	const float N = 10.0;

public:
	PID(float P = -0.02, float I = 0.13, float D = -300.0);
	float iter(float target);
	void reset(float value);
};

/** @brief edit `current` to be closer to `target` using PID controllers */
void apply_pid(dui_state_t* target, dui_state_t* current);