TRR2018 omar

Dependencies:   mbed

Fork of biniou by TRR 2018

Committer:
ohlimi2
Date:
Tue Sep 18 20:00:38 2018 +0000
Revision:
32:a9af3b4d2eab
Parent:
31:9a3f7bbd32dd
remplacement dans les logs des , par des ; pour la prise en charge par excel

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaspardD 29:fc984fe08ca7 1 #ifndef STATE_MACHINES_H
GaspardD 29:fc984fe08ca7 2 #define STATE_MACHINES_H
GaspardD 29:fc984fe08ca7 3
GaspardD 12:51b1b40cc017 4 #include "mbed.h"
GaspardD 8:1d8c3ca5e508 5 #include <stdint.h>
GaspardD 8:1d8c3ca5e508 6
GaspardD 19:771bf61be276 7 //#define DLVV
GaspardD 19:771bf61be276 8 #define SAMPLING//commenter pour désactiver
GaspardD 23:04d393220daa 9 #define DUMP_SAMPLIG_PERIOD 10000
ohlimi2 32:a9af3b4d2eab 10 #define DEBUG 1//-1 pour avoir uniquement la gestion de l'interruption bouton
GaspardD 17:8c465656eea4 11
GaspardD 21:de7a0a47f8a3 12 #define NB_INTEGRAL_SAMPLES 5
GaspardD 21:de7a0a47f8a3 13
GaspardD 29:fc984fe08ca7 14 #define TACHY_CM 8.0
GaspardD 29:fc984fe08ca7 15 #define COEF_RAYON_BR_S_DIST 1
GaspardD 27:f8c3f1524a64 16 //#define FREINAGE_ADAPTATIF
GaspardD 24:698fefbbee00 17 #define PUISSANCE_FREINAGE_W 1000 //en W
GaspardD 28:af53caf04446 18 #define MASSE_BINIOU_KG 1.8
GaspardD 29:fc984fe08ca7 19 #define DEMI_LARGEUR_BINIOU_CM 10.0
GaspardD 22:26fc6e6f7a55 20
GaspardD 19:771bf61be276 21 #define DIERCTION_PERIOD_MS 10000
GaspardD 17:8c465656eea4 22 #define DIRECTION_PULSE_MAX 2100
GaspardD 17:8c465656eea4 23 #define DIRECTION_PULSE_MIN 800
GaspardD 23:04d393220daa 24 #define DIRECTION_PULSE_MIDDLE 1530
GaspardD 17:8c465656eea4 25
GaspardD 29:fc984fe08ca7 26 #define DIST_MIN_LONG_CM 30
GaspardD 29:fc984fe08ca7 27
GaspardD 19:771bf61be276 28 #define SPEED_PERIOD_US 20000
GaspardD 19:771bf61be276 29 #define BRAKING_PULSE_US 1350
GaspardD 19:771bf61be276 30 #define MAX_PULSE_WIDTH_FOR_TACHY_US 1850
GaspardD 19:771bf61be276 31 #define INITAL_PULSE_SPEED_US 1590
GaspardD 19:771bf61be276 32 #define ZERO_PULSE_SPEED_US 1500
GaspardD 13:af9a59ccf60b 33
GaspardD 23:04d393220daa 34 #define NB_ECHANTILLONS_IR 8
GaspardD 11:bc24b3ba51a9 35
GaspardD 21:de7a0a47f8a3 36 #define LIDAR_STRENGTH_THRESOLD 25 //pour la gestion de la vitesse MAX (MAXSpeed_ST)
GaspardD 21:de7a0a47f8a3 37 #define LIDAR_ERR 65535
GaspardD 11:bc24b3ba51a9 38
GaspardD 18:38504337d2fc 39 #define SPEED_DELTA_CMPS 30
GaspardD 11:bc24b3ba51a9 40
GaspardD 22:26fc6e6f7a55 41 #define CAPT_45_DROITE PC_2
ohlimi2 31:9a3f7bbd32dd 42 #define CAPT_45_GAUCHE PA_4
GaspardD 22:26fc6e6f7a55 43 #define CAPT_90_DROITE PA_1
GaspardD 22:26fc6e6f7a55 44 #define CAPT_90_GAUCHE PC_1
ohlimi2 31:9a3f7bbd32dd 45 #define CAPT_90_GAUCHE_SHORT PC_0
ohlimi2 31:9a3f7bbd32dd 46 #define CAPT_90_DROITE_SHORT PA_0
GaspardD 22:26fc6e6f7a55 47 #define CAPT_10_GAUCHE PB_0
GaspardD 22:26fc6e6f7a55 48 #define CAPT_10_DROITE PC_3
ohlimi2 31:9a3f7bbd32dd 49 #define CAPT_DEVANT PA_6
GaspardD 22:26fc6e6f7a55 50 #define ODOMETRE PA_11
GaspardD 22:26fc6e6f7a55 51
GaspardD 22:26fc6e6f7a55 52
GaspardD 19:771bf61be276 53 #ifdef SAMPLING
GaspardD 30:21642fb8297a 54 #define TAILLE_SAMPLES 1700
GaspardD 19:771bf61be276 55 typedef struct states
GaspardD 19:771bf61be276 56 {
GaspardD 19:771bf61be276 57 char murs_dlvv;
GaspardD 19:771bf61be276 58 char section;
GaspardD 19:771bf61be276 59 char maxSpeed;
GaspardD 19:771bf61be276 60 char throttle;
GaspardD 19:771bf61be276 61 }s_States;
GaspardD 11:bc24b3ba51a9 62
GaspardD 29:fc984fe08ca7 63 typedef struct sample
GaspardD 19:771bf61be276 64 {
GaspardD 19:771bf61be276 65 s_States states;
GaspardD 22:26fc6e6f7a55 66 int time;
GaspardD 22:26fc6e6f7a55 67 int16_t pwm_thro_us;
GaspardD 22:26fc6e6f7a55 68 int16_t pwm_dir_us;
GaspardD 29:fc984fe08ca7 69 double largeurPiste;
GaspardD 29:fc984fe08ca7 70 double position45;
GaspardD 29:fc984fe08ca7 71 double position90;
GaspardD 29:fc984fe08ca7 72 double dist;
GaspardD 23:04d393220daa 73 int16_t distLidar;
GaspardD 23:04d393220daa 74 int16_t strLidar;
GaspardD 19:771bf61be276 75 } s_Sample;
GaspardD 19:771bf61be276 76
GaspardD 19:771bf61be276 77 #endif
GaspardD 11:bc24b3ba51a9 78
GaspardD 8:1d8c3ca5e508 79 typedef enum{
GaspardD 29:fc984fe08ca7 80 REF_BIDIR,
GaspardD 29:fc984fe08ca7 81 REF_A_DROITE,
GaspardD 29:fc984fe08ca7 82 REF_A_GAUCHE
GaspardD 17:8c465656eea4 83 }MUR_ST;
GaspardD 17:8c465656eea4 84
GaspardD 17:8c465656eea4 85 #ifdef DLVV
GaspardD 17:8c465656eea4 86 typedef enum{//uniquement activé pour dlvv, se rajoute au PID de murOutput
GaspardD 29:fc984fe08ca7 87 ALL_CLEAR,
GaspardD 29:fc984fe08ca7 88 FRONT_OBSTRUCTED,//pas d'obstacle droit devant
GaspardD 29:fc984fe08ca7 89 RIGHT_OBSTRUCTED,//un obstacle à été detecté à gauche
GaspardD 29:fc984fe08ca7 90 LEFT_OBSTRUCTED//un obstacle à été detecté à droite
GaspardD 17:8c465656eea4 91 }OBSTACLE_ST;
GaspardD 17:8c465656eea4 92 #endif
GaspardD 17:8c465656eea4 93
GaspardD 17:8c465656eea4 94 typedef enum{
GaspardD 8:1d8c3ca5e508 95 ARRET,
GaspardD 8:1d8c3ca5e508 96 LOADING_SECTION,
GaspardD 8:1d8c3ca5e508 97 RUNNING_SECTION
GaspardD 8:1d8c3ca5e508 98 }SECTION_ST;
GaspardD 8:1d8c3ca5e508 99
GaspardD 8:1d8c3ca5e508 100 typedef enum{
GaspardD 17:8c465656eea4 101 SPEED_MAX,//pas de mur, on va a fond
GaspardD 21:de7a0a47f8a3 102 SPEED_WARNING,//signal suffisement fort pour gérer la vitesse
GaspardD 21:de7a0a47f8a3 103 BLOCKED//nous somme dans la plage de distance ou la vitesse doit être limitée
GaspardD 17:8c465656eea4 104 }MAX_SPEED_ST;
GaspardD 17:8c465656eea4 105
GaspardD 17:8c465656eea4 106 typedef enum{
GaspardD 21:de7a0a47f8a3 107 REGULATION_SPEED,
GaspardD 16:63690703b5b6 108 AT_SPEED,
GaspardD 19:771bf61be276 109 BRAKING,
GaspardD 19:771bf61be276 110 STOPPED
GaspardD 8:1d8c3ca5e508 111 }THROTTLE_ST;
GaspardD 8:1d8c3ca5e508 112
GaspardD 8:1d8c3ca5e508 113
GaspardD 8:1d8c3ca5e508 114 typedef struct s_section {
GaspardD 29:fc984fe08ca7 115 double targetSpeed_cmps;//supérieure a 328
GaspardD 29:fc984fe08ca7 116 double slowSpeed_cmps;//supérieure a 328; pour effectuer les virages: pour ne pas avoir d'a coups entre la vitesse variable et la vitesse limitée
GaspardD 29:fc984fe08ca7 117 double coef_p_speed;
GaspardD 29:fc984fe08ca7 118 double consigne_position;
GaspardD 29:fc984fe08ca7 119 double lidarWarningDist_cm;
GaspardD 29:fc984fe08ca7 120 double lng_section_cm;
GaspardD 29:fc984fe08ca7 121 double coef_p;
GaspardD 29:fc984fe08ca7 122 double coef_i;
GaspardD 29:fc984fe08ca7 123 double coef_d;
GaspardD 8:1d8c3ca5e508 124 s_section* nextSection;
GaspardD 8:1d8c3ca5e508 125 }s_Section;
GaspardD 8:1d8c3ca5e508 126
GaspardD 11:bc24b3ba51a9 127 //*************** fonctions utilitaires ***************
GaspardD 8:1d8c3ca5e508 128
GaspardD 11:bc24b3ba51a9 129 void getTachySpeed();
GaspardD 29:fc984fe08ca7 130 double getDistMoy(AnalogIn* p, double *tab, int size);
GaspardD 12:51b1b40cc017 131 void it4cm();
GaspardD 12:51b1b40cc017 132 void it_serial();
GaspardD 23:04d393220daa 133 void sampleLog();
GaspardD 29:fc984fe08ca7 134 void initSamples();
GaspardD 29:fc984fe08ca7 135 void initIntegrationTable();
GaspardD 29:fc984fe08ca7 136 void pressed();
GaspardD 11:bc24b3ba51a9 137
GaspardD 11:bc24b3ba51a9 138 //*************** fonctions states machines ***************
GaspardD 8:1d8c3ca5e508 139 //gestion de la direction quand la vue est dégagée
GaspardD 11:bc24b3ba51a9 140 void mursInit(void);
GaspardD 11:bc24b3ba51a9 141 void mursUpdate(void);
GaspardD 11:bc24b3ba51a9 142 void mursOutput(void);
GaspardD 8:1d8c3ca5e508 143
GaspardD 11:bc24b3ba51a9 144 #ifdef DLVV
GaspardD 8:1d8c3ca5e508 145 //gestion de la direction en mode course et de l'évitement en mode DLVV
GaspardD 11:bc24b3ba51a9 146 void obstacleInit(void);
GaspardD 11:bc24b3ba51a9 147 void obstacleUpdate(void);
GaspardD 11:bc24b3ba51a9 148 void obstacleOutput(void);
GaspardD 11:bc24b3ba51a9 149 #endif
GaspardD 8:1d8c3ca5e508 150
GaspardD 11:bc24b3ba51a9 151 //gestion du comportement en fn de l'avancement sur le parcours
GaspardD 11:bc24b3ba51a9 152 void sectionInit(void);
GaspardD 11:bc24b3ba51a9 153 void sectionUpdate(void);
GaspardD 11:bc24b3ba51a9 154 void sectionOutput(void);
GaspardD 11:bc24b3ba51a9 155
GaspardD 11:bc24b3ba51a9 156 //gestion de la gesion de la vitesse max/rotation max des roues la rotation est plus importante que la vitesse :)
GaspardD 11:bc24b3ba51a9 157 void maxSpeedInit(void);
GaspardD 11:bc24b3ba51a9 158 void maxSpeedUpdate(void);
GaspardD 11:bc24b3ba51a9 159 void maxSpeedOutput(void);
GaspardD 8:1d8c3ca5e508 160
GaspardD 8:1d8c3ca5e508 161 //gestion de l'allure en fonction des paramètres de la section
GaspardD 11:bc24b3ba51a9 162 void throttleInit(void);
GaspardD 11:bc24b3ba51a9 163 void throttleUpdate(void);
GaspardD 11:bc24b3ba51a9 164 void throttleOutput(void);
GaspardD 29:fc984fe08ca7 165
GaspardD 29:fc984fe08ca7 166 #endif