l

Dependencies:   mbed Asser2

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?

UserRevisionLine numberNew 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