l

Dependencies:   mbed Asser2

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?

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