Guillaume Chauvon
/
Asservissment_robot2_v16_05
l
deplacement.h@7:6b15a1feed2d, 2019-05-26 (annotated)
- Committer:
- JimmyAREM
- Date:
- Sun May 26 14:57:54 2019 +0000
- Revision:
- 7:6b15a1feed2d
- Parent:
- 6:e1585b8bd07d
- Child:
- 8:f2425e4302fc
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GuillaumeCH | 2:3066e614372f | 1 | #ifndef DEPLACEMENT_H |
GuillaumeCH | 2:3066e614372f | 2 | #define DEPLACEMENT_H |
GuillaumeCH | 2:3066e614372f | 3 | |
JimmyAREM | 6:e1585b8bd07d | 4 | /** |
JimmyAREM | 6:e1585b8bd07d | 5 | **************************************************************************** |
JimmyAREM | 6:e1585b8bd07d | 6 | * @file deplacement.h |
JimmyAREM | 6:e1585b8bd07d | 7 | * @author Guillaume Chauvon && Corentin Courtot #l'assert |
JimmyAREM | 6:e1585b8bd07d | 8 | * @version V0.2.3 |
JimmyAREM | 6:e1585b8bd07d | 9 | * @date 22/05/2019 |
JimmyAREM | 6:e1585b8bd07d | 10 | * @brief Implementation file for the deplacement of the robot |
JimmyAREM | 6:e1585b8bd07d | 11 | **************************************************************************** |
JimmyAREM | 6:e1585b8bd07d | 12 | *This software has been developed to be used in AREM's robot for the cdfr 2019 |
JimmyAREM | 6:e1585b8bd07d | 13 | **/ |
JimmyAREM | 6:e1585b8bd07d | 14 | |
JimmyAREM | 6:e1585b8bd07d | 15 | /* Includes ------------------------------------------------------------------*/ |
JimmyAREM | 6:e1585b8bd07d | 16 | |
JimmyAREM | 6:e1585b8bd07d | 17 | |
JimmyAREM | 6:e1585b8bd07d | 18 | #include "BrasPousser.h" |
JimmyAREM | 7:6b15a1feed2d | 19 | #include "Pompe.h" |
JimmyAREM | 6:e1585b8bd07d | 20 | |
JimmyAREM | 6:e1585b8bd07d | 21 | /* Constants -------------------------------------------------------------------*/ |
JimmyAREM | 6:e1585b8bd07d | 22 | |
JimmyAREM | 6:e1585b8bd07d | 23 | #define A_GAUCHE 1 |
JimmyAREM | 6:e1585b8bd07d | 24 | #define A_DROITE 0 |
GuillaumeCH | 2:3066e614372f | 25 | #define TAILLE_TAB 250 |
JimmyAREM | 6:e1585b8bd07d | 26 | |
JimmyAREM | 6:e1585b8bd07d | 27 | /* structures-----------------------------------------------------------------------*/ |
JimmyAREM | 6:e1585b8bd07d | 28 | |
GuillaumeCH | 4:eac6746544fb | 29 | struct Coordonnees |
GuillaumeCH | 4:eac6746544fb | 30 | { |
GuillaumeCH | 4:eac6746544fb | 31 | double x; |
GuillaumeCH | 4:eac6746544fb | 32 | double y; |
GuillaumeCH | 4:eac6746544fb | 33 | }; |
JimmyAREM | 6:e1585b8bd07d | 34 | |
JimmyAREM | 6:e1585b8bd07d | 35 | |
JimmyAREM | 6:e1585b8bd07d | 36 | |
JimmyAREM | 6:e1585b8bd07d | 37 | /* Class BrasPousser ------------------------------------------------------------------*/ |
JimmyAREM | 6:e1585b8bd07d | 38 | |
GuillaumeCH | 2:3066e614372f | 39 | class deplacement{ |
GuillaumeCH | 2:3066e614372f | 40 | public: |
GuillaumeCH | 2:3066e614372f | 41 | deplacement(); |
GuillaumeCH | 3:d38aa400d5e7 | 42 | void initialisation(void);//init |
GuillaumeCH | 3:d38aa400d5e7 | 43 | |
GuillaumeCH | 3:d38aa400d5e7 | 44 | void rotation_rel(double angle_vise); // rotation relative angle positif pour tourner vers la gauche |
GuillaumeCH | 3:d38aa400d5e7 | 45 | void rotation_abs(double angle_vise); //rotation absolue du robot |
JimmyAREM | 6:e1585b8bd07d | 46 | void rotation_rel_pente(double angle_vise); |
JimmyAREM | 6:e1585b8bd07d | 47 | void rotation_abs_pente(double angle_vise); |
GuillaumeCH | 3:d38aa400d5e7 | 48 | |
GuillaumeCH | 3:d38aa400d5e7 | 49 | void commande_vitesse(float vitesse_G, float vitesse_D); //set_PWM avec des vitesses flottantes. |
GuillaumeCH | 3:d38aa400d5e7 | 50 | |
GuillaumeCH | 3:d38aa400d5e7 | 51 | void vitesse_nulle_D(int zero); //coupe moteur droit |
GuillaumeCH | 3:d38aa400d5e7 | 52 | void vitesse_nulle_G(int zero); //coupe moteur gauche |
JimmyAREM | 6:e1585b8bd07d | 53 | void arreterRobot(); |
GuillaumeCH | 3:d38aa400d5e7 | 54 | void marche_arriere(int distance); // ligne droite en marche arriere, argument entier NEGATIF |
JimmyAREM | 6:e1585b8bd07d | 55 | void ligne_droite_basique(long int distance); // ligne droite en marche avant, argument entier POSITIF |
JimmyAREM | 6:e1585b8bd07d | 56 | |
JimmyAREM | 6:e1585b8bd07d | 57 | void ligne_droite(long int distance, double x, double y, double cap); |
GuillaumeCH | 3:d38aa400d5e7 | 58 | |
GuillaumeCH | 3:d38aa400d5e7 | 59 | void asservissement(void); // asservissement en vitesse à ne pas utiliser avec les fonctions de déplacement séquentiel |
GuillaumeCH | 2:3066e614372f | 60 | void printftab(void); |
GuillaumeCH | 2:3066e614372f | 61 | void test(void); |
GuillaumeCH | 2:3066e614372f | 62 | void changement_consigne(int cons_D, int cons_G); |
JimmyAREM | 5:3638d7e7c5c1 | 63 | |
JimmyAREM | 5:3638d7e7c5c1 | 64 | void poussette(float temps); // set PWM 150 pendant 1.5s |
JimmyAREM | 6:e1585b8bd07d | 65 | void arc(Coordonnees p1, Coordonnees p2, int sens);//p2 point final p1 point intermediaire |
GuillaumeCH | 4:eac6746544fb | 66 | int cercle(Coordonnees a,Coordonnees b, Coordonnees c); |
GuillaumeCH | 4:eac6746544fb | 67 | double int_ext_cercle(double x, double y); |
GuillaumeCH | 4:eac6746544fb | 68 | void va_au_point(double x,double y, double cap); |
GuillaumeCH | 4:eac6746544fb | 69 | double recup_angle_entre_trois_points_213(double x1,double y1,double x2,double y2,double x3,double y3); |
JimmyAREM | 6:e1585b8bd07d | 70 | void pente(long int distance, float vitesse, double angle_a_tourner); |
JimmyAREM | 7:6b15a1feed2d | 71 | void pente_combo(BrasPousser brasPousserGauche, BrasPousser brasPousserDroit, Pompe pompe); |
JimmyAREM | 6:e1585b8bd07d | 72 | |
JimmyAREM | 6:e1585b8bd07d | 73 | void evitement(double x, double y, double cap); |
GuillaumeCH | 2:3066e614372f | 74 | |
GuillaumeCH | 2:3066e614372f | 75 | private: |
GuillaumeCH | 2:3066e614372f | 76 | float consigne; |
GuillaumeCH | 2:3066e614372f | 77 | int consigne_D; |
GuillaumeCH | 2:3066e614372f | 78 | int consigne_G; |
GuillaumeCH | 2:3066e614372f | 79 | float somme_erreur_D; |
GuillaumeCH | 2:3066e614372f | 80 | float somme_erreur_G; |
GuillaumeCH | 2:3066e614372f | 81 | float erreur_precedente_D; |
GuillaumeCH | 2:3066e614372f | 82 | float erreur_precedente_G; |
GuillaumeCH | 2:3066e614372f | 83 | float erreur_glissee_D[5]; |
GuillaumeCH | 2:3066e614372f | 84 | float erreur_glissee_G[5]; |
GuillaumeCH | 2:3066e614372f | 85 | int compteur_glisse; |
GuillaumeCH | 2:3066e614372f | 86 | float Kp_D; |
GuillaumeCH | 2:3066e614372f | 87 | float Ki_D; |
GuillaumeCH | 2:3066e614372f | 88 | float Kd_D; |
GuillaumeCH | 2:3066e614372f | 89 | float Kp_G; |
GuillaumeCH | 2:3066e614372f | 90 | float Ki_G; |
GuillaumeCH | 2:3066e614372f | 91 | float Kd_G; |
GuillaumeCH | 2:3066e614372f | 92 | long int tick_prec_D; |
GuillaumeCH | 2:3066e614372f | 93 | long int tick_prec_G; |
GuillaumeCH | 2:3066e614372f | 94 | float tab_cmd_D[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 95 | float tab_cmd_G[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 96 | float vtab_D[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 97 | float vtab_G[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 98 | float erreur_tab_G[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 99 | float erreur_tab_D[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 100 | float somme_erreur_tab_G[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 101 | float somme_erreur_tab_D[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 102 | float c_D[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 103 | float c_G[TAILLE_TAB]; |
GuillaumeCH | 2:3066e614372f | 104 | int dix_ms; |
GuillaumeCH | 2:3066e614372f | 105 | int consigne_tab[20][2]; |
GuillaumeCH | 2:3066e614372f | 106 | int compteur_asser; |
GuillaumeCH | 2:3066e614372f | 107 | double somme_y; |
GuillaumeCH | 4:eac6746544fb | 108 | double point[3]; |
GuillaumeCH | 2:3066e614372f | 109 | }; |
GuillaumeCH | 2:3066e614372f | 110 | |
JimmyAREM | 5:3638d7e7c5c1 | 111 | Coordonnees pointIntermediaire(); |
JimmyAREM | 5:3638d7e7c5c1 | 112 | Coordonnees pointFinale(); |
GuillaumeCH | 2:3066e614372f | 113 | #endif |