CRAC-LIB
Dependents: Asserv_mot Asserv_mot
Diff: MYCRAC_utility.h
- Revision:
- 0:cbe368f18aeb
diff -r 000000000000 -r cbe368f18aeb MYCRAC_utility.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MYCRAC_utility.h Wed Apr 19 17:41:26 2017 +0000 @@ -0,0 +1,101 @@ +#include "ident_crac.h" +#include "cyapicallbacks.h" + +//----------------------------- constantes ----------------------------------------- + +#define LARGEUR_ROBOT 324.25 +#define PERIMETRE_ROUE_CODEUSE 160.01 +#define COEF_ROUE_GAUCHE 1 + +#define GROS_ROB 1 + +#define VMAX_DANGER 20.0 +#define AMAX_DANGER 1.0 + +#define PI 3.14159265359 +#define RESOLUTION_ROUE_CODEUSE 1024.0 +#define RECALAGE_TH 300 + +#define TYPE_DEPLACEMENT_STOP 0 +#define TYPE_DEPLACEMENT_IMMOBILE 1 +#define TYPE_DEPLACEMENT_LIGNE_DROITE 2 +#define TYPE_DEPLACEMENT_ROTATION 3 +#define TYPE_DEPLACEMENT_X_Y_THETA 4 +#define TYPE_DEPLACEMENT_RAYON_COURBURE 5 +#define TYPE_DEPLACEMENT_RECALAGE 6 + +#define INITIALISATION 0 +#define ACCELERATION_TRAPEZE 1 +#define VITESSE_CONSTANTE_TRAPEZE 2 +#define DECELERATION_TRAPEZE 3 +#define ARRET 4 +#define ACCELERATION_TRIANGLE 5 +#define DECELERATION_TRIANGLE 6 + +#define INIT_RECALAGE 0 +#define ACCELERATION_RECALAGE 1 +#define VITESSE_CONSTANTE_RECALAGE 2 +#define FIN_RECALAGE 3 + +#define INIT_X_Y_THETA 0 +#define ROTATION_X_Y_THETA_1 1 +#define LIGNE_DROITE_X_Y_THETA 2 +#define ROTATION_X_Y_THETA_2 3 + +#define INIT_RAYON_COURBURE 0 +#define ACCELERATION_TRAPEZE_RAYON_COURBURE 1 +#define VITESSE_CONSTANTE_TRAPEZE_RAYON_COURBURE 2 +#define DECELERATION_TRAPEZE_RAYON_COURBURE 3 +#define ARRET_RAYON_COURBURE 4 +#define ACCELERATION_TRIANGLE_RAYON_COURBURE 5 +#define DECELERATION_TRIANGLE_RAYON_COURBURE 6 + +//----------------------------- nouveaux types ----------------------------------------- + +struct Ordre_deplacement +{ + char type, enchainement; + short vmax, amax; + short distance, recalage, val_recalage; + long angle; + short x, y, theta; + signed char sens; + short rayon, vit_ray, theta_ray; +}; + +//----------------------------- prototypes de fcts ----------------------------------------- + +void write_PWM1(double vit); +void write_PWM2(double vit); + + +//----------------- DECLARATIONS EXTERN de var globales (definies dans main.cpp) --------------------- + +extern PwmOut mot1; // attention pour la decl d'objet : pas de pin / d'initialisation +extern PwmOut mot2; + +extern DigitalOut INA_M2; +extern DigitalOut INB_M2; +extern DigitalOut INA_M1; +extern DigitalOut INB_M1 ; + +extern double test1; // attention pour la decl de var : pas d'initialisation +extern double test2; + +extern double consigne_pos, consigne_vit, // Consignes de position et de vitesse dans les mouvements + commande1, commande2, // Commande, aka duty cycle des PWM de chaque moteur + last_pos1, last_pos2, pos1, pos2, // Valeurs des compteurs incrémentaux aux instants t et t-1 + ErreurPos1, ErreurPos2, last_ErreurPos1, last_ErreurPos2, // Valeurs des erreurs de position de la boucle d'asservissement + Somme_ErreurPos1, Somme_ErreurPos2, // Valeurs des intégrales des erreurs + Delta_ErreurPos1, Delta_ErreurPos2, // Valeurs des dérivées des erreurs + Kpp1, Kip1, Kdp1, Kpp2, Kip2, Kdp2, // Valeurs des correcteurs d'asservissement pour les 2 moteurs + Kpp1a, Kip1a, Kdp1a, Kpp2a, Kip2a, Kdp2a, // Valeurs des correcteurs d'asservissement pour les 2 moteurs + VMAX, AMAX, DMAX, // Valeurs maximales d'accéleration, décélération et vitesse + Odo_x, Odo_y, Odo_theta, Odo_val_pos_1, Odo_val_pos_2, Odo_last_val_pos_1, Odo_last_val_pos_2; // Variables de positions utilisées pour l'odométrie +extern uint32_t roue_drt_init, roue_gch_init; // Valeur des compteurs (!= 0) quand on commence un nouveau mouvement +extern short etat_automate, etat_automate_depl, new_message, + xytheta_sens, next_move_xyt, next_move, i, cpt, stop, stop_receive, param_xytheta[3], + etat_automate_xytheta, ralentare, recalage_debut, couleur_debut, recalage_debut_receive; +extern char nb_ordres, vitesse_danger, Stop_Danger, cpt_ordre, asser_actif; +extern struct Ordre_deplacement liste[200]; +