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