Modifications

Sauter à la navigation Sauter à la recherche
1 117 octets ajoutés ,  8 mars 2021 à 16:28
Ligne 49 : Ligne 49 :     
=Explication Programme=
 
=Explication Programme=
==Odometry==
+
Le programme peut être séparé en 3 principales parties :
===MCP233.c===
+
- Le Main.c et FreeRTOS
 +
- Les fichiers de configuration
 +
- Les tâches
 +
==Main.c et FreeRTOS==
 +
 
 +
==Les fichiers de configuration==
 +
 
 +
===Odometry===
 +
====MCP233.c====
 
Ce fichier contient les commandes permettant de configurer le moteur
 
Ce fichier contient les commandes permettant de configurer le moteur
===rbtMovement.c===
+
====rbtMovement.c====
 
On trouvera ici toutes les commandes de déplacement pour le robot
 
On trouvera ici toutes les commandes de déplacement pour le robot
 +
 
<syntaxhighlight lang="c">
 
<syntaxhighlight lang="c">
 
void rbtMovement Init ( uint16_t whDist , uint16_t dmWh1, uint16_t dmWh2,
 
void rbtMovement Init ( uint16_t whDist , uint16_t dmWh1, uint16_t dmWh2,
uint16_t ti c k s 1 , uint16_t t i c k s 2 )
+
uint16_t ticks 1 , uint16_t ticks 2 )
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
Cette fonction permet de configurer les encodeurs :
 
Cette fonction permet de configurer les encodeurs :
 +
 
1. whDist = distance entre les 2 encodeurs
 
1. whDist = distance entre les 2 encodeurs
 +
 
2. dmWh1 et dmWh2 = diamètre en mm de chaque encodeur
 
2. dmWh1 et dmWh2 = diamètre en mm de chaque encodeur
 +
 
3. ticks1 et ticks2 = nombre de ticks par rotation des encodeurs
 
3. ticks1 et ticks2 = nombre de ticks par rotation des encodeurs
    
<syntaxhighlight lang="c">
 
<syntaxhighlight lang="c">
void rbtMove ( in t32_ t d i s t ) //Deplacement du robo t en l i g n e d r o i t e en mm∗/
+
void rbtMove ( int32_t dist ) //Deplacement du robo t en ligne droite en mm
2 void rbt_turn ( in t16_ t a ngl e ) // Ro ta tion du ro bo t en d eg r e
+
void rbt_turn ( int16_t angle ) // Rotation du robot en degre
 
</syntaxhighlight>
 
</syntaxhighlight>
       
<syntaxhighlight lang="c">
 
<syntaxhighlight lang="c">
s t a t i c void rb tS ta teMachine ( in t32_ t targetEncoderCountsM1 , in t32_ t
+
static void rb tS ta teMachine ( int32_t targetEncoderCountsM1 , int32_ttargetEncoderCountsM2 )
targetEncoderCountsM2 )
   
</syntaxhighlight>
 
</syntaxhighlight>
    
Cette fonction permet de recevoir l’état du robot :
 
Cette fonction permet de recevoir l’état du robot :
 +
 
1. BLOCKED = le robot ne bouge pas
 
1. BLOCKED = le robot ne bouge pas
2. READY_TO_SEND = prêt a envoyer une commande
+
 
3. IDLE = prêt a recevoir une commmande
+
2. READY_TO_SEND = prêt à envoyer une commande
 +
 
 +
3. IDLE = prêt à recevoir une commmande
 +
 
 
4. BUSY = En train d’exécuter une commande
 
4. BUSY = En train d’exécuter une commande
5. PAUSED = une commande a été annulé, le mouvement doit reprendre avant de repasser en état IDLE
+
 
 +
5. PAUSED = une commande a été annulée, le mouvement doit reprendre avant de repasser en état IDLE
 +
 
 
6. RESUMING = compléte la commande qui a été annulée avant de repasser en IDLE
 
6. RESUMING = compléte la commande qui a été annulée avant de repasser en IDLE
 +
 +
==Tâches==
 +
 +
===movementTask.c===
 +
 +
Les taches que le robot pourra effectuer Pour l’instant il n'y en a qu’une seule : movement-Task.c
 +
 +
<syntaxhighlight lang="c">
 +
#include "movementTask.h"
 +
#include "rbtMovement.h"
 +
#include "MCP233.h"
 +
 +
 +
/* Variables */
 +
 +
robotState_t robotState = BLOCKED;
 +
 +
 +
/* Task */
 +
 +
    void StartSendMovementCmd(void const * argument){
 +
/******** Initializations ********/
 +
//TODO measure accurately
 +
 +
rbtMovementInit(265, 88, 88, 4096, 4096);
 +
drive_forward(0); //making sure that the MCP command buffer is empty
 +
 +
robotState = IDLE;
 +
 +
/******** Movement path command list ********/
 +
 +
/*Aller retour x2*/
 +
 +
rbtMove(1000); //distance en mm
 +
rbt_turn(180); //angle en degres, (-) pour tourner a gauche et (+) pour tourner a droite
 +
rbtMove(1000);
 +
rbt_turn(180);
 +
 +
while(1){
 +
osDelay(1); //boucle pour debugger, le programme devrait rester bloquer ici a la fin de son execution
 +
}
 +
 +
  /* USER CODE END 5 */
 +
}
 +
 +
</syntaxhighlight>
38

modifications

Menu de navigation