TRR2018 omar

Dependencies:   mbed

Fork of biniou by TRR 2018

Committer:
GaspardD
Date:
Tue Sep 11 14:49:55 2018 +0000
Revision:
16:63690703b5b6
Parent:
15:129f205ff030
Child:
17:8c465656eea4
braking good

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaspardD 12:51b1b40cc017 1 #include "mbed.h"
GaspardD 8:1d8c3ca5e508 2 #include <stdint.h>
GaspardD 8:1d8c3ca5e508 3
GaspardD 16:63690703b5b6 4 #//define DEBUG 3
GaspardD 16:63690703b5b6 5 #define MAX_PULSE_WIDTH_FOR_TACHY 0.00165
GaspardD 16:63690703b5b6 6 #define BRAKING_PWM 0.00135
GaspardD 16:63690703b5b6 7 #define INITAL_PULSE_SPEED 0.00159
GaspardD 13:af9a59ccf60b 8
GaspardD 11:bc24b3ba51a9 9 #define NB_ECHANTILLONS_IR 4
GaspardD 11:bc24b3ba51a9 10 #define NB_ECHANTILLONS_LIDAR 4
GaspardD 11:bc24b3ba51a9 11
GaspardD 11:bc24b3ba51a9 12 #define LIDAR_STRENGTH_THRESOLD 200 //pour la gestion de la vitesse MAX (MAXSpeed_ST)
GaspardD 11:bc24b3ba51a9 13 #define LIDAR_STRENGH_DELTA 50
GaspardD 11:bc24b3ba51a9 14
GaspardD 11:bc24b3ba51a9 15 #define IR_DEADZONE_U16_22cm 49677
GaspardD 11:bc24b3ba51a9 16 #define IR_FAR_U16_105cm 11915
GaspardD 11:bc24b3ba51a9 17
GaspardD 11:bc24b3ba51a9 18 #define SPEED_DELTA_CMPS 2
GaspardD 11:bc24b3ba51a9 19
GaspardD 11:bc24b3ba51a9 20 //#define DLVV
GaspardD 11:bc24b3ba51a9 21
GaspardD 11:bc24b3ba51a9 22
GaspardD 8:1d8c3ca5e508 23 typedef enum{
GaspardD 8:1d8c3ca5e508 24 ARRET,
GaspardD 8:1d8c3ca5e508 25 LOADING_SECTION,
GaspardD 8:1d8c3ca5e508 26 RUNNING_SECTION
GaspardD 8:1d8c3ca5e508 27 }SECTION_ST;
GaspardD 8:1d8c3ca5e508 28
GaspardD 8:1d8c3ca5e508 29 typedef enum{
GaspardD 8:1d8c3ca5e508 30 UNDER_SPEED,
GaspardD 8:1d8c3ca5e508 31 OVER_SPEED,
GaspardD 16:63690703b5b6 32 AT_SPEED,
GaspardD 16:63690703b5b6 33 BRAKING
GaspardD 8:1d8c3ca5e508 34 }THROTTLE_ST;
GaspardD 8:1d8c3ca5e508 35
GaspardD 8:1d8c3ca5e508 36 typedef enum{
GaspardD 11:bc24b3ba51a9 37 ATTRACTIF_G,
GaspardD 11:bc24b3ba51a9 38 ATTRACTIF_D,
GaspardD 11:bc24b3ba51a9 39 EQUILIBRAGE_REPULSIF
GaspardD 8:1d8c3ca5e508 40 }MUR_ST;
GaspardD 8:1d8c3ca5e508 41
GaspardD 8:1d8c3ca5e508 42 typedef enum{
GaspardD 11:bc24b3ba51a9 43 SPEED_MAX,//pas de mur, on va a fond
GaspardD 11:bc24b3ba51a9 44 SPEED_VARIABLE,//signal suffisement fort pour gérer la vitesse
GaspardD 11:bc24b3ba51a9 45 SPEED_LIMITED//nous somme dans la plage de distance ou la vitesse doit être limitée
GaspardD 11:bc24b3ba51a9 46 }MAX_SPEED_ST;
GaspardD 11:bc24b3ba51a9 47
GaspardD 11:bc24b3ba51a9 48 #ifdef DLVV
GaspardD 11:bc24b3ba51a9 49 typedef enum{//uniquement activé pour dlvv, se rajoute au PID de murOutput
GaspardD 11:bc24b3ba51a9 50 FRONT_CLEAR,//pas d'obstacle droit devant
GaspardD 11:bc24b3ba51a9 51 FRONT_OBSTRUCTED//un obstacle à été detecté à moins de 20/30 cm tbd
GaspardD 8:1d8c3ca5e508 52 }OBSTACLE_ST;
GaspardD 11:bc24b3ba51a9 53 #endif
GaspardD 8:1d8c3ca5e508 54
GaspardD 8:1d8c3ca5e508 55 typedef struct s_section {
GaspardD 11:bc24b3ba51a9 56 int targetSpeed_cmps;
GaspardD 11:bc24b3ba51a9 57 int slowSpeed_cmps;//pour effectuer les virages... pour ne pas avoir d'a coups entre la vitesse variable et la vitesse limitée: brakingCoefficient = 30*((targetSpeed_cmps/slowSpeed_cmps)-1)
GaspardD 11:bc24b3ba51a9 58 int brakingCoefficient;
GaspardD 11:bc24b3ba51a9 59 float ms_accel;
GaspardD 11:bc24b3ba51a9 60 float ms_decel;
GaspardD 11:bc24b3ba51a9 61 int lidarWarningDist_cm;
GaspardD 8:1d8c3ca5e508 62 int lng_section_cm;
GaspardD 12:51b1b40cc017 63 double coef_p;
GaspardD 12:51b1b40cc017 64 double coef_i;
GaspardD 12:51b1b40cc017 65 double coef_d;
GaspardD 8:1d8c3ca5e508 66 s_section* nextSection;
GaspardD 8:1d8c3ca5e508 67 }s_Section;
GaspardD 8:1d8c3ca5e508 68
GaspardD 11:bc24b3ba51a9 69 //*************** fonctions utilitaires ***************
GaspardD 8:1d8c3ca5e508 70
GaspardD 11:bc24b3ba51a9 71 void getTachySpeed();
GaspardD 12:51b1b40cc017 72 uint16_t getDistMoy(uint16_t* tab, int size);
GaspardD 12:51b1b40cc017 73 void it4cm();
GaspardD 12:51b1b40cc017 74 void it_serial();
GaspardD 11:bc24b3ba51a9 75
GaspardD 11:bc24b3ba51a9 76 //*************** fonctions states machines ***************
GaspardD 8:1d8c3ca5e508 77 //gestion de la direction quand la vue est dégagée
GaspardD 11:bc24b3ba51a9 78 void mursInit(void);
GaspardD 11:bc24b3ba51a9 79 void mursUpdate(void);
GaspardD 11:bc24b3ba51a9 80 void mursOutput(void);
GaspardD 8:1d8c3ca5e508 81
GaspardD 11:bc24b3ba51a9 82 #ifdef DLVV
GaspardD 8:1d8c3ca5e508 83 //gestion de la direction en mode course et de l'évitement en mode DLVV
GaspardD 11:bc24b3ba51a9 84 void obstacleInit(void);
GaspardD 11:bc24b3ba51a9 85 void obstacleUpdate(void);
GaspardD 11:bc24b3ba51a9 86 void obstacleOutput(void);
GaspardD 11:bc24b3ba51a9 87 #endif
GaspardD 8:1d8c3ca5e508 88
GaspardD 11:bc24b3ba51a9 89 //gestion du comportement en fn de l'avancement sur le parcours
GaspardD 11:bc24b3ba51a9 90 void sectionInit(void);
GaspardD 11:bc24b3ba51a9 91 void sectionUpdate(void);
GaspardD 11:bc24b3ba51a9 92 void sectionOutput(void);
GaspardD 11:bc24b3ba51a9 93
GaspardD 11:bc24b3ba51a9 94 //gestion de la gesion de la vitesse max/rotation max des roues la rotation est plus importante que la vitesse :)
GaspardD 11:bc24b3ba51a9 95 void maxSpeedInit(void);
GaspardD 11:bc24b3ba51a9 96 void maxSpeedUpdate(void);
GaspardD 11:bc24b3ba51a9 97 void maxSpeedOutput(void);
GaspardD 8:1d8c3ca5e508 98
GaspardD 8:1d8c3ca5e508 99 //gestion de l'allure en fonction des paramètres de la section
GaspardD 11:bc24b3ba51a9 100 void throttleInit(void);
GaspardD 11:bc24b3ba51a9 101 void throttleUpdate(void);
GaspardD 11:bc24b3ba51a9 102 void throttleOutput(void);