🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_605cvmn_605.py
Version 1.0.0
Date de création 17/03/2026
Auteur / Demandeur refoïa jeremy
Objectif principal Décoder et visualiser graphiquement la télémétrie des roues d’un système de robotique de type Swerve Drive.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Ce script simule la réception de paquets de données binaires provenant d’un robot. Il extrait l’identifiant de la roue, sa vitesse et son angle de braquage, puis génère une représentation visuelle vectorielle montrant l’état de chaque module de propulsion sur un châssis en 2D.
📌 Problème résolu
Il permet de déboguer visuellement l’orientation et l’intensité de la poussée des roues d’un robot, transformant des chaînes hexadécimales brutes (difficiles à lire pour un humain) en un graphique intuitif.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution CLI / Script de visualisation
📦 Dépendances / Librairies
# Librairies standard (built-in)
struct : Pour le dépaquetage des données binaires.
# Librairies externes (pip install)
matplotlib : Pour la génération du graphique.
numpy : Pour les calculs trigonométriques.
📥 ENTRÉES (INPUTS)
📂 Fichiers / Sources de données en entrée
Type Chemin / Format Description
Liste statique raw_packets (Hex) Liste de chaînes hexadécimales simulant un flux réseau.
📤 SORTIES (OUTPUTS)
📂 Fichiers / Données en sortie
Type Chemin / Format Description
Graphique Fenêtre interactive Visualisation Matplotlib montrant les vecteurs de force des roues.
🧱 STRUCTURE DU SCRIPT
script_605cvmn_605.py
│
├── 📌 IMPORTS (matplotlib, numpy, struct)
├── 📌 FONCTION DE DÉCODAGE (decode_swerve_packet)
├── 📌 DONNÉES SIMULÉES (raw_packets)
├── 📌 BOUCLE DE TRAITEMENT (Décodage des hex vers liste)
└── 📌 VISUALISATION (Configuration plt.subplots et rendu quiver)
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
decode_swerve_packet(hex_data) hex_data: str tuple ou None Convertit l’hexa en (ID, vitesse, angle).
🔄 LOGIQUE / ALGORITHME
ÉTAPE 1 → Réception d’une chaîne hexadécimale (ex: « 000000803f… »)
↓
ÉTAPE 2 → Conversion de la chaîne en octets (bytes.fromhex)
↓
ÉTAPE 3 → Dépaquetage binaire via le format Little-Endian
↓
ÉTAPE 4 → Conversion de l’angle en radians (rad=180deg×π)
↓
ÉTAPE 5 → Calcul du vecteur (dx, dy) et affichage sur le graphique.
🚨 GESTION DES ERREURS
Cas d’erreur Type d’exception Comportement attendu
Données hexa corrompues Exception Capture via try/except, affichage d’un message d’erreur et retour None.
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : L’ID de la roue doit correspondre aux clés du dictionnaire wheel_positions (0 à 3).
Règle 2 : Le format binaire attendu est strictement : 1 octet (ID) suivi de deux floats de 4 octets chacun.
Règle 3 : L’angle fourni dans les données est exprimé en degrés.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Cas nominal « 000000803f00000000 » ID 0, Speed 1.0, Angle 0 ✅
2 Hexa invalide « ZZZZ » Message d’erreur de décodage ⬜ À tester
📝 EXEMPLE D’UTILISATION
▶️ Lancement
Bash
python script_605cvmn_605.py
📋 Exemple de sortie attendue (Console & Graphique)
Graphique : Un carré de 4 points (roues) avec des flèches bleues indiquant la direction de la marche.
Console : (Vide si pas d’erreur, ou messages Erreur de décodage en cas de problème).



Avis
Il n’y a pas encore d’avis.