# Pilotage PCB Odométrie

## Informations que le PCB peut faire remonter
- Position du robot
- Vitesse instantanée du robot
- Valeurs des capteurs ToF
- Id du dernier point de passage atteint
## Ordres envoyables au PCB
- Modifier les coefficients des PIDs
- Liste de points de passages
- Arrêt/marche
## Protocole de communication
La communication se fait en USB CDC

Les mots de communication restent à définir mais un format qui peut être envisagé fonctionnerait de la sorte :

### Récupération d'une donnée par la raspi :
- GET;POS
- GET;SPEED
- GET;DIST;N pour récupérer la distance mesurée par le ToF numéro N.
- GET;PID pour récupérer les valeurs des PID.
### Réponse du PCB à une demande de donnée
- SET;POS;xx;yy;tt pour renvoyer la position mesurée (x,y,angle) en mm et en radians.
- SET;SPEED;xx;yy;tt pour renvoyer la vitesse mesurée (x,y,angle) en mm².
- SET;DIST;N;xx pour renvoyer la distance mesurée par le ToF N en mm.
- SET;PID;P;I;D pour renvoyer les valeurs des PID (P, I, D).
### Reset de la position par la raspi
- SET;POS;xx;yy;tt
### Envoi de la liste des points de passage par la raspi :
- SET;WAYPOINT;id;type;xx;yy;tt pour écraser le point de passage avec l'id renseigné. Type vaut 0 pour point de passage (en vitesse, peu précis), 1 pour un point d'arrivée (à l'arrêt, très précis)
### Démarrage de l'odométrie par la raspi :
- SET;START;b pour démarrer / éteindre l'odométrie (b = 1 pour démarrer, b = 0 pour éteindre)
### Changement des coefficients PID par la raspi :
- SET;PID;P;I;D pour changer les coefficients PID (P, I, D) de l'odométrie.
### Réponse du PCB à un ordre (4 dernières commandes)
- OK;XXXX;YYYY;...; avec XXXX, YYYY, ... identiques à la commande SET pour valider une commande effectuée.
- KO;XXXX;YYYY;...; pour une commande échouée, ou pas de réponse
### Envoi de la position en direct au passage d'un waypoint par le PCB :
- SET;WAYPOINT;id avec l'id du waypoint atteint