CRAC-LIB
Dependents: Asserv_mot Asserv_mot
Revision 0:cbe368f18aeb, committed 2017-04-19
- Comitter:
- Brand101
- Date:
- Wed Apr 19 17:41:26 2017 +0000
- Commit message:
- B1
Changed in this revision
diff -r 000000000000 -r cbe368f18aeb MYCRAC_utility.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MYCRAC_utility.cpp Wed Apr 19 17:41:26 2017 +0000 @@ -0,0 +1,42 @@ +#include "mbed.h" +#include "MYCRAC_utility.h" + +void write_PWM1(double vit) +{ + + if(vit < 0.0) + { + vit = -vit; + INA_M1 = 1; + INB_M1 = 0; + } + else + { + INA_M1 = 0; + INB_M1 = 1; + } + + mot1.write(vit); + test1++; +} + +void write_PWM2(double vit) +{ + + if(vit < 0.0) + { + + vit = -vit; + INA_M2 = 1; + INB_M2 = 0; + + } + else + { + INA_M2 = 0; + INB_M2 = 1; + } + + mot2.write(vit); + test2++; +}
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]; +
diff -r 000000000000 -r cbe368f18aeb cyapicallbacks.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cyapicallbacks.h Wed Apr 19 17:41:26 2017 +0000 @@ -0,0 +1,20 @@ +/* ======================================== + * + * Copyright YOUR COMPANY, THE YEAR + * All Rights Reserved + * UNPUBLISHED, LICENSED SOFTWARE. + * + * CONFIDENTIAL AND PROPRIETARY INFORMATION + * WHICH IS THE PROPERTY OF your company. + * + * ======================================== +*/ +#ifndef CYAPICALLBACKS_H +#define CYAPICALLBACKS_H + + /*Define your macro callbacks here */ + /*For more information, refer to the Macro Callbacks topic in the PSoC Creator Help.*/ + +#endif /* CYAPICALLBACKS_H */ +/* [] */ +
diff -r 000000000000 -r cbe368f18aeb ident_crac.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ident_crac.h Wed Apr 19 17:41:26 2017 +0000 @@ -0,0 +1,120 @@ + /****************************************************************************************/ +/* IDENT_CRAC.H */ +/****************************************************************************************/ + +/****************************************************************************************/ +/* Securite contre les multi-inclusions */ +/****************************************************************************************/ +#ifndef CRAC_IDENTH +#define CRAC_IDENTH + +/****************************************************************************************/ +/* Identiants pour le bus CAN */ +/****************************************************************************************/ +#define GLOBAL_GAME_END 0x004 // Stop fin du match +#define GLOBAL_START 0x002 // Start +#define GLOBAL_END_INIT_POSITION 0x005 // Fin positionnement robot avant depart +#define GLOBAL_FUNNY_ACTION 0x007 // Funny action start (0: start, 1: stop) + + +#define BALISE_STOP 0x003 // Trame stop (angle en °, Type du robot : 1=>gros robot, 2=> petit) +#define BALISE_DANGER 0xA // Trame danger (angle en °, Type du robot : 1=>gros robot, 2=> petit) +#define BALISE_END_DANGER 0xB // Trame fin de danger + + +#define ASSERVISSEMENT_STOP 0x001 // Stop moteur +#define ASSERVISSEMENT_SPEED_DANGER 0x006 // Vitesse de danger +#define ASSERVISSEMENT_XYT 0x020 // Asservissement (x,y,theta) (0 : au choix 1 : avant -1 : arrière) +#define ASSERVISSEMENT_COURBURE 0x021 // Asservissement rayon de courbure (+ gauche, - droite , sens : 1avt , -1arr; enchainement => 1 oui, 0 => non, 2=>derniére instruction de l'enchainement) +#define ASSERVISSEMENT_CONFIG 0x022 // Asservissement paramètre (définir les valeurs de vitesse max et d'eccélération max) +#define ASSERVISSEMENT_ROTATION 0x023 // Asservissement rotation +#define ASSERVISSEMENT_RECALAGE 0x024 // Moteur tout droit (recalage : 0 mouvement seul, 1 x, 2y valeur : coordonnée à laquelle est recalé x/y; enchainement => 1 oui, 0 => non) + +#define ASSERVISSEMENT_LIGNE_DROITE 0x025 //N'exsite pas. + +#define ODOMETRIE_BIG_POSITION 0x026 // Odométrie position robot (Position actuel du robot) +#define ODOMETRIE_BIG_VITESSE 0x027 // Odométrie vitesse (Indication sur l'état actuel) +#define ODOMETRIE_SMALL_POSITION 0x028 // Odométrie position robot (Position actuel du robot) +#define ODOMETRIE_SMALL_VITESSE 0x029 // Odométrie vitesse (Indication sur l'état actuel) + +#define ASSERVISSEMENT_INFO_CONSIGNE 0x1F0 // Info Consigne et Commande moteur +#define ASSERVISSEMENT_CONFIG_KPP_DROITE 0x1F1 // Config coef KPP_Droit +#define ASSERVISSEMENT_CONFIG_KPI_DROITE 0x1F2 // Config coef KPI_Droit +#define ASSERVISSEMENT_CONFIG_KPD_DROITE 0x1F3 // Config coef KPD_Droit +#define ASSERVISSEMENT_CONFIG_KPP_GAUCHE 0x1F4 // Config coef KPP_Gauche +#define ASSERVISSEMENT_CONFIG_KPI_GAUCHE 0x1F5 // Config coef KPI_Gauche +#define ASSERVISSEMENT_CONFIG_KPD_GAUCHE 0x1F6 // Config coef KPD_Gauche +#define ASSERVISSEMENT_ENABLE 0x1F7 // Activation asservissement (0 : désactivation, 1 : activation) + + +#define RESET_BALISE 0x030 // Reset balise +#define RESET_MOTEUR 0x031 // Reset moteur +#define RESET_IHM 0x032 // Reset écran tactile +#define RESET_ACTIONNEURS 0x033 // Reset actionneurs + + +#define RESET_STRAT 0x3A // Reset stratégie + + +#define CHECK_BALISE 0x060 // Check balise +#define CHECK_MOTEUR 0x061 // Check moteur +#define CHECK_IHM 0x062 // Check écran tactile +#define CHECK_ACTIONNEURS 0x063 // Check actionneurs + + +#define ALIVE_BALISE 0x070 // Alive balise +#define ALIVE_MOTEUR 0x071 // Alive moteur +#define ALIVE_IHM 0x072 // Alive écran tactile +#define ALIVE_ACTIONNEURS 0x073 // Alive actionneurs + + +#define ACKNOWLEDGE_BALISE 0x100 // Acknowledge balise +#define ACKNOWLEDGE_MOTEUR 0x101 // Acknowledge moteur +#define ACKNOWLEDGE_IHM 0x102 // Acknowledge ecran tactile +#define ACKNOWLEDGE_ACTIONNEURS 0x103 // Acknowledge actionneurs + + +#define INSTRUCTION_END_BALISE 0x110 // Fin instruction balise (Indique que l'instruction est terminée) +#define INSTRUCTION_END_MOTEUR 0x111 // Fin instruction moteur (Indique que l'instruction est terminée) +#define INSTRUCTION_END_IHM 0x112 // Fin instruction ecran tactile (Indique que l'instruction est terminée) +#define INSTRUCTION_END_ACTIONNEURS 0x113 // Fin instruction actionneurs (Indique que l'instruction est terminée) + + +#define ECRAN_CHOICE_STRAT 0x601 // Choix d'une stratégie (n° strat (1-4)) +#define ECRAN_CHOICE_COLOR 0x602 // Couleur (0->Purple;1->green) +#define ECRAN_START_MATCH 0x603 // Match (Indique que l'on souhaite commencer le match) +#define ECRAN_ACK_STRAT 0x611 // Acknowledge stratégie (si 0 erreur, sinon n°strat) +#define ECRAN_ACK_COLOR 0x612 // Acknowledge couleur (0->Purple;1->green) +#define ECRAN_ACK_START_MATCH 0x613 // Acknowledge Match (Indique que l'on a bien reçu le debut du match) +#define ECRAN_ALL_CHECK 0x620 // Carte all check (Si provient de carte strat => toutes les cartes sont en ligne, Si provient IHM => forcer le lancement) +#define ECRAN_TIME 0x621 // Time match (Indication de moment cle du temps (10,30,60,70,80,85,90)) +#define ECRAN_PRINTF_1 0x6C0 // Tactile printf (Afficher les 8 permier caractères) +#define ECRAN_PRINTF_2 0x6C1 // Tactile printf (Afficher les 8 second caractères) +#define ECRAN_PRINTF_3 0x6C2 // Tactile printf (Afficher les 8 troisième caractères) +#define ECRAN_PRINTF_4 0x6C3 // Tactile printf (Afficher les 8 quatrième caractères) +#define ECRAN_PRINTF_CLEAR 0x6CF // Tactile printf clear (Permet d'effacer l'ecran) + + +#define ERROR_OVERFLOW_BALISE 0x040 // Overflow odométrie +#define ERROR_OVERFLOW_MOTEUR 0x041 // Overflow asservissement +#define ERROR_OVERFLOW_IHM 0x042 // Overflow balise +#define ERROR_OVERFLOW_STRAT 0x043 // Overflow stratégie +#define ERROR_BALISE 0x785 // Bug balise +#define ERROR_RTC 0x786 // Bug RTC +#define ERROR_MOTEUR 0x787 // Bug moteur +#define ERROR_TELEMETRIE 0x788 // Bug télémètre +#define ERROR_STRATEGIE 0x789 // Bug stratégie + + +#define DEBUG_STRATEGIE_AUTOMATE 0x760 // Etat automate stratégie (Permet de savoir l'etat de l'automate) +#define DEBUG_FAKE_JAKE 0x761 // Fake jack (Permet d'outre passerr le JACk du robot) +#define DEBUG_ASSERV 0x762 // Info debug carte moteur + + +#define SERVO_AX12_SETGOAL 0x090 // AX12 setGoal (Indiquer la nouvelle position de l'AX12 !! Ne bouge pas) +#define SERVO_AX12_PROCESS 0x091 // AX12 processChange (Lancer le déplacement des AX12) +#define SERVO_AX12_DONE 0x092 // AX12 done (Indique q'un AX12 a terminé son déplacement) +#define SERVO_XL320 0x093 // XL320 + +#endif +