mirror of
https://github.com/modelec/odo_STM32.git
synced 2026-01-18 16:27:25 +01:00
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
/*
|
|
* pid.h
|
|
*
|
|
* Created on: Mar 25, 2025
|
|
* Author: CHAUVEAU Maxime
|
|
*/
|
|
|
|
#ifndef INC_PID_H_
|
|
#define INC_PID_H_
|
|
#include "point.h"
|
|
#include <cmath>
|
|
#include <array>
|
|
|
|
/*
|
|
Pour notre robot, on va faire 3 PID. On va avoir un premier PID qui prend une position et qui
|
|
doit donner en sortie deux ordres pour les moteurs (un moteur gauche et un moteur droit).
|
|
Ainsi on aura aussi un PID par moteur qui eux recevront la consigne du pid position, donc 3 en tout.
|
|
|
|
Le premier PID (position) prend en entrée un Point de la carte (objectif) et renvoie en sortie un tableau de 2 val en m/s.
|
|
les pid vitesse de chaque moteurs prennent en entrée une vitesse à atteindre et en sortie une consigne à envoyer au moteur (qu'il faudra traduire en pwm).
|
|
*/
|
|
|
|
class Pid {
|
|
protected:
|
|
|
|
float Vmax; //vitesse linéaire max du robot (mps)
|
|
float Wmax; //vitesse angulaire max du robot (mps)
|
|
float L; //Largeur entre les deux roues (en mètre)
|
|
|
|
float kp;
|
|
float ki;
|
|
float kd;
|
|
|
|
|
|
|
|
|
|
public:
|
|
// Constructeur
|
|
Pid(float kp, float ki, float kd);
|
|
|
|
// Setters
|
|
void setKp(float k);
|
|
void setKi(float k);
|
|
void setKd(float k);
|
|
|
|
// Getters
|
|
float getKp();
|
|
float getKi();
|
|
float getKd();
|
|
|
|
//Methodes
|
|
int getPWMCommand(float vitesse); //convertir des m/s en notre signal pwm
|
|
};
|
|
|
|
|
|
|
|
#endif /* INC_PID_H_ */
|