CRAC-LIB

Dependents:   Asserv_mot Asserv_mot

MYCRAC_utility.h

Committer:
Brand101
Date:
2017-04-19
Revision:
0:cbe368f18aeb

File content as of revision 0:cbe368f18aeb:

#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];