CRAC-LIB

Dependents:   Asserv_mot Asserv_mot

Files at this revision

API Documentation at this revision

Comitter:
Brand101
Date:
Wed Apr 19 17:41:26 2017 +0000
Commit message:
B1

Changed in this revision

MYCRAC_utility.cpp Show annotated file Show diff for this revision Revisions of this file
MYCRAC_utility.h Show annotated file Show diff for this revision Revisions of this file
cyapicallbacks.h Show annotated file Show diff for this revision Revisions of this file
ident_crac.h Show annotated file Show diff for this revision Revisions of this file
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
+