Eirbot1A-2020
asserv_vitesse_angle.hpp
1 #ifndef __ASSERV_VITESSE_ANGLE
2 #define __ASSERV_VITESSE_ANGLE
3 
4 #define PI 3.1415926535
5 #define INC_ENCODER 1000//nombre increment pour un tour d'encodeur
6 #define MAX_LIM_ERR_INTE 10000000
7 #define MIN_LIM_ERR_INTE -10000000
8 #define MAX_LIM_COMMANDE 100 //100
9 #define MIN_LIM_COMMANDE -100 //-100
10 #define OVERFLOW_ENCODEUR 32500
11 #define LEN_TAB_LISSAGE 15 //6
12 #define LIM_ERR_DIS 0.002 //0.2
13 #define LIM_ERR_ANGLE (PI/180)*1 //0.2
14 
15 #define RA 0.074 //distance entre point milieu et la roue en mètre
16 #define RC 0.135 //distance entre point milieu et l'encodeur en mètre
17 #define RR 0.0312 //rayon de la roue en mètre
18 #define RW 0.01532 //rayon de l'encodeur en mètre
19 
20 #define K1 (RW/RR) //simplification 1
21 #define K2 ((RW*RA)/(RR*RC)) //simplification 2
22 
23 //nouvelle asserv
24 // #define KP_MG 14//14 //coefficient proportionnel Asserv Vitesse Moteur Gauche
25 // #define KI_MG 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Gauche
26 // #define KP_MD 14//14 //coefficient proportionnel Asserv Vitesse Moteur Droit
27 // #define KI_MD 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Droit
28 
29 // #define KP_Pos 0.00175 //0.0007 coefficient proportionnel Asserv Position (Distance)
30 // #define KI_Pos 0//0 coefficient intégral Asserv Position (Distance)
31 // #define KD_Pos 1//1 coefficient dérivé Asserv Position (Distance)
32 // #define KP_Angle 0.00175// 0.00175 coefficient proportionnel Asserv Position (Angle)
33 // #define KI_Angle 0.000001// 0.000001 coefficient intégral Asserv Position (Angle)
34 // #define KD_Angle 40//40//coefficient dérivé Asserv Position (Angle)
35 
36 //ancienne asserv
37 // #define KP_MG 18//18 //coefficient proportionnel Asserv Vitesse Moteur Gauche
38 // #define KI_MG 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Gauche
39 // #define KP_MD 18//18 //coefficient proportionnel Asserv Vitesse Moteur Droit
40 // #define KI_MD 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Droit
41 
42 // #define KP_Pos 0.0007 //0.0007 coefficient proportionnel Asserv Position (Distance)
43 // #define KI_Pos 0//coefficient intégral Asserv Position (Distance)
44 // #define KD_Pos 0//coefficient intégral Asserv Position (Distance)
45 // #define KP_Angle 0.00083// 0.00082 coefficient proportionnel Asserv Position (Angle)
46 // #define KI_Angle 0// 0.000008 coefficient intégral Asserv Position (Angle)
47 // #define KD_Angle 0//40//coefficient dérivé Asserv Position (Angle)
48 
49 //asserv courante
50 #define KP_MG 14//14 //coefficient proportionnel Asserv Vitesse Moteur Gauche
51 #define KI_MG 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Gauche
52 #define KP_MD 14//14 //coefficient proportionnel Asserv Vitesse Moteur Droit
53 #define KI_MD 0.15//0.15 //coefficient intégral Asserv Vitesse Moteur Droit
54 #define KP_Pos 0.0007 //0.0007 coefficient proportionnel Asserv Position (Distance)
55 #define KI_Pos 0//coefficient intégral Asserv Position (Distance)
56 #define KD_Pos 0//coefficient intégral Asserv Position (Distance)
57 
58 
59 void range(float*commande, int max, int min); //limite la plage d'une valeur entre min et max
60 int interval_err(const float lim,const float err);//Renvoie 1 si l'erreur est dans l'intervalle
61 void lecture_Wc1_Wc2(Encoder &Encoder_Gauche,Encoder &Encoder_Droit,float*Wc1,float*Wc2,const float Te); //lecture des encodeur Gauche et Droit au rythme Te
62 void lecture_V_W(float*Vitesse,float*W,const float Wc1,const float Wc2); //lecture de la vitesse et de la vitesse angulaire, en fonction des vitesse angulaire encodeur Wc1 et Wc2
63 void lecture_VG_VD(float*VG,float*VD,const float Vitesse,const float W); //lectute de la vitesse du moteur gauche et droit
64 void lecture_Distance_Angle(const float Vitesse,const float W,const float Te,float *Distance, float *Angle, int reset); //lecture de la distance parcourue, et de l'angle parcourue
65 void get_posG(Encoder &Encoder_Gauche,int *posG); //supprime l'overflow à -32,768; 32,767 inc
66 void get_posD(Encoder &Encoder_Droit,int *posD); //supprime l'overflow à -32,768; 32,767 inc
67 float Asserv_V_MG(const float VG, const float ConsVG,int reset, float *ass_fbG); //Asserv de Vitesse Moteur Gauche
68 float Asserv_V_MD(const float VD, const float ConsVD,int reset, float *ass_fbD); //Asserv de Vitesse Moteur Droit
69 float Asserv_Position(const float Position, const float ConsPosition,int reset,int *feedback); //Asserv de Position Distance
70 float Asserv_Angle(const float Angle, const float ConsAngle,int reset,int *feedback); //Asserv de Position Angle
71 float lissage(const float in,float tab[],int len);//Permet de crée une rampe sur le front des commandes de vitesse
72 
73 void set_KA(float kp, float ki, float kd);
74 
75 #endif // __ASSERV_VITESSE_ANGLE
Encoder
Definition: encoder.hpp:6