2026-Propulsion/Readme.md

18 KiB
Raw Blame History

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 :

Les adresses en gras sont celles pour lesquelles des #define existent qui sont utilisées pour copier les données dans les structures.

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 davance du robot
0x1B RW Flottant 32 bits Consigne davance du robot
0x1C RW Flottant 32 bits Consigne davance du robot
0x1D RW Flottant 32 bits Consigne davance 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