| .vscode | ||
| Platform | ||
| VL53L8CX_ULD_API | ||
| .gitignore | ||
| Asser_Moteurs.c | ||
| Asser_Moteurs.h | ||
| Asser_Position.c | ||
| Asser_Position.h | ||
| changelog.txt | ||
| CMakeLists.txt | ||
| Commande_vitesse.c | ||
| Commande_vitesse.h | ||
| communication.c | ||
| communication.h | ||
| Evitement.c | ||
| Evitement.h | ||
| Geometrie_robot.h | ||
| Geometrie.c | ||
| Geometrie.h | ||
| i2c_maitre.c | ||
| i2c_maitre.h | ||
| Localisation.c | ||
| Localisation.h | ||
| main.c | ||
| messagerie_applicative.c | ||
| messagerie_applicative.h | ||
| Messagerie_propulsion2026.ods | ||
| messagerie.c | ||
| messagerie.h | ||
| messages_propulsion.h | ||
| Moteurs.c | ||
| Moteurs.h | ||
| pico_sdk_import.cmake | ||
| QEI.c | ||
| QEI.h | ||
| quadrature_encoder.pio | ||
| Readme.md | ||
| Servomoteur.c | ||
| Servomoteur.h | ||
| Strategie_deplacement.c | ||
| Strategie_deplacement.h | ||
| Strategie.c | ||
| Strategie.h | ||
| Temps.c | ||
| Temps.h | ||
| Trajectoire_bezier.c | ||
| Trajectoire_bezier.h | ||
| Trajectoire_circulaire.c | ||
| Trajectoire_circulaire.h | ||
| Trajectoire_composees.c | ||
| Trajectoire_composees.h | ||
| Trajectoire_droite.c | ||
| Trajectoire_droite.h | ||
| Trajectoire.c | ||
| Trajectoire.h | ||
| Trajet.c | ||
| Trajet.h | ||
| VL53L8_2024.c | ||
| VL53L8_2024.h | ||
Propulsion 2026 - Riombotique
Basé sur le code du PAMI 2025 de l'équipe Poivron Robotique.
Principales évolutions:
- Ajout de la communication USB
- Définition des messages applicatifs
Méthode de test
-
Éteindre la LED avec la trame :
echo -e "\xFF\xFF\x06rD\x00\x01\x36\x00" > /dev/ttyACM0 -
Allumer la LED avec la trame :
echo -e "\xFF\xFF\x06rD\x00\x01\x06\x00" > /dev/ttyACM0 -
Tester la réception de la position
echo -e "\xFF\xFF\x11rP\x00\x0C\x01\x01\x01\x01\x05\x05\x05\x05\x09\x09\x09\x09\x00" > /dev/ttyACM0
Difficultés
Il suffit d'une petite modification du code (ajout d'un printf par exemple), pour que la communication se bloque côté PC
L'utilisation du second cœur pour envoyer la télémétrie peut perturber le débug avec printf => Augment grandement le délai de réponse
La communication crash rapidement : à cause de la danse du PAMI => Suppression de la dance du PAMI (c'était codé à l'arrache)
Les points des trajectoires sont des double, il faut les mettre en float.
Pas de trajectoire rotation sur soi-même ?
Annexes
Tables des registres
Table des registres :
| Adresse | R/W | Type | Donnée |
|---|---|---|---|
| 0x00 | RW | flottant 32 bits | Position X en mm |
| 0x01 | RW | flottant 32 bits | Position X en mm |
| 0x02 | RW | flottant 32 bits | Position X en mm |
| 0x03 | RW | flottant 32 bits | Position X en mm |
| 0x04 | RW | flottant 32 bits | Position Y en mm |
| 0x05 | RW | flottant 32 bits | Position Y en mm |
| 0x06 | RW | flottant 32 bits | Position Y en mm |
| 0x07 | RW | flottant 32 bits | Position Y en mm |
| 0x08 | RW | flottant 32 bits | Orientation en radian |
| 0x09 | RW | flottant 32 bits | Orientation en radian |
| 0x0A | RW | flottant 32 bits | Orientation en radian |
| 0x0B | RW | flottant 32 bits | Orientation en radian |
| 0x0C | R | Boolean | Mouvement en cours : 1 Mouvement terminé : 0 |
| 0x0D | RW | uint8_t | Mode 0 : arrêt des moteurs 1 : pilotage des moteurs PWM 2 : pilotage en vitesse des roues 3 : pilotage avec la loi de commande 4 : Trajectoire |
| 0x0E | RW | int_16 | Commande PWM moteur gauche |
| 0x0F | RW | int_16 | Commande PWM moteur gauche |
| 0x10 | RW | int_16 | Commande PWM moteur droit |
| 0x11 | RW | int_16 | Commande PWM moteur droit |
| 0x12 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x13 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x14 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x15 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x16 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x17 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x18 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x19 | RW | Flottant 32 bits | Consigne vitesse gauche en mm/s |
| 0x1A | RW | Flottant 32 bits | Consigne d’avance du robot |
| 0x1B | RW | Flottant 32 bits | Consigne d’avance du robot |
| 0x1C | RW | Flottant 32 bits | Consigne d’avance du robot |
| 0x1D | RW | Flottant 32 bits | Consigne d’avance du robot |
| 0x1E | RW | Flottant 32 bits | Consigne de rotation du robot |
| 0x1F | RW | Flottant 32 bits | Consigne de rotation du robot |
| 0x20 | RW | Flottant 32 bits | Consigne de rotation du robot |
| 0x21 | RW | Flottant 32 bits | Consigne de rotation du robot |
| 0x22 | RW | Enum 8 bits | Trajectoire, type : 0 : Droite 1 : Circulaire 2 : Bézier 3 : Composée 4 : Rotation |
| 0x23 | RW | Flottant 32 bits | Point 1, X |
| 0x24 | RW | Flottant 32 bits | Point 1, X |
| 0x25 | RW | Flottant 32 bits | Point 1, X |
| 0x26 | RW | Flottant 32 bits | Point 1, X |
| 0x27 | RW | Flottant 32 bits | Point 1, Y |
| 0x28 | RW | Flottant 32 bits | Point 1, Y |
| 0x29 | RW | Flottant 32 bits | Point 1, Y |
| 0x2A | RW | Flottant 32 bits | Point 1, Y |
| 0x2B | RW | Flottant 32 bits | Point 2, X |
| 0x2C | RW | Flottant 32 bits | Point 2, X |
| 0x2D | RW | Flottant 32 bits | Point 2, X |
| 0x2E | RW | Flottant 32 bits | Point 2, X |
| 0x2F | RW | Flottant 32 bits | Point 2, Y |
| 0x30 | RW | Flottant 32 bits | Point 2, Y |
| 0x31 | RW | Flottant 32 bits | Point 2, Y |
| 0x32 | RW | Flottant 32 bits | Point 2, Y |
| 0x33 | RW | Flottant 32 bits | Point 3, X |
| 0x34 | RW | Flottant 32 bits | Point 3, X |
| 0x35 | RW | Flottant 32 bits | Point 3, X |
| 0x36 | RW | Flottant 32 bits | Point 3, X |
| 0x37 | RW | Flottant 32 bits | Point 3, Y |
| 0x38 | RW | Flottant 32 bits | Point 3, Y |
| 0x39 | RW | Flottant 32 bits | Point 3, Y |
| 0x3A | RW | Flottant 32 bits | Point 3, Y |
| 0x3B | RW | Flottant 32 bits | Point 4, X |
| 0x3C | RW | Flottant 32 bits | Point 4, X |
| 0x3D | RW | Flottant 32 bits | Point 4, X |
| 0x3E | RW | Flottant 32 bits | Point 4, X |
| 0x3F | RW | Flottant 32 bits | Point 4, Y |
| 0x40 | RW | Flottant 32 bits | Point 4, Y |
| 0x41 | RW | Flottant 32 bits | Point 4, Y |
| 0x42 | RW | Flottant 32 bits | Point 4, Y |
| 0x43 | RW | Flottant 32 bits | orientation_debut_rad |
| 0x44 | RW | Flottant 32 bits | orientation_debut_rad |
| 0x45 | RW | Flottant 32 bits | orientation_debut_rad |
| 0x46 | RW | Flottant 32 bits | orientation_debut_rad |
| 0x47 | RW | Flottant 32 bits | orientation_fin_rad |
| 0x48 | RW | Flottant 32 bits | orientation_fin_rad |
| 0x49 | RW | Flottant 32 bits | orientation_fin_rad |
| 0x4A | RW | Flottant 32 bits | orientation_fin_rad |
| 0x4B | RW | Flottant 32 bits | rayon mm |
| 0x4C | RW | Flottant 32 bits | rayon mm |
| 0x4D | RW | Flottant 32 bits | rayon mm |
| 0x4E | RW | Flottant 32 bits | rayon mm |
| 0x4F | RW | Flottant 32 bits | Angle début rad |
| 0x50 | RW | Flottant 32 bits | Angle début rad |
| 0x51 | RW | Flottant 32 bits | Angle début rad |
| 0x52 | RW | Flottant 32 bits | Angle début rad |
| 0x53 | RW | Flottant 32 bits | Angle fin rad |
| 0x54 | RW | Flottant 32 bits | Angle fin rad |
| 0x55 | RW | Flottant 32 bits | Angle fin rad |
| 0x56 | RW | Flottant 32 bits | Angle fin rad |