L'initialisation prépare les servomoteurs et la connexion série pour garantir le bon fonctionnement du robot.
Étapes :
Connexion série
Configuration des servomoteurs
Pour chaque moteur dans DXL_IDS :
Activation du couple : TORQUE_ENABLE = 1
Vitesse par défaut : DEFAULT_MOVING_SPEED = 300
LED allumée : LED_ON = 1
Lecture de la tension pour vérifier l'alimentation
En cas d’erreur (communication, surcharge, etc.), le processus s’arrête et un message d’erreur s’affiche.
Position initiale
Les moteurs amènent le robot à une position de repos définie par INITIAL_POSITIONS, en 1,5 seconde.
×
LECTURE DES DONNÉES
La lecture des données des servomoteurs permet de surveiller l’état du robot, d’analyser son comportement et d’assurer un diagnostic en temps réel.
Données surveillées :
Position actuelle
Lecture via ADDR_PRESENT_POSITION avec packetHandler.read2ByteTxRx :
Vérifier que les positions cibles sont atteintes
Asservir les mouvements avec retour
Détecter les blocages ou erreurs de déplacement
Tension d'alimentation
Lecture via ADDR_PRESENT_VOLTAGE, transformée en volts (division par 10) :
Surveiller l’état de la batterie
Détecter une alimentation insuffisante (< 9V)
Prévenir les dommages aux moteurs
Vitesse actuelle
Accessible via ADDR_PRESENT_SPEED :
Analyser les performances des moteurs
Identifier les blocages mécaniques (vitesse nulle)
×
Gestion de l'équilibre
La gestion de l'équilibre est cruciale pour la stabilité d'un robot bipède, idéalement via des capteurs IMU et des algorithmes de Point de Moment Nul (ZMP) pour des ajustements en temps réel. Cependant, des défis d'intégration avec un microcontrôleur IMU ont limité cette capacité dans notre projet, nous amenant à nous reposer sur des mouvements pré-calculés pour la stabilité.
×
CYCLE DE MARCHE
Le cycle de marche correspond à une séquence de mouvements prédéfinis permettant au robot bipède d’avancer. Il ne s’agit pas d’une marche adaptative, mais d’un enchaînement de positions fixes simulant les étapes d’un pas.
Fonctionnement :
Séquence de pas : le script perform_walk_steps() exécute plusieurs phases :
Levée de jambe : une jambe est soulevée et avancée.
Pose et transfert de poids : le robot transfère son poids sur cette jambe.
Durées contrôlées : chaque phase utilise des durées définies (DUR_STEP_PHASE, DUR_PLANT) pour ajuster vitesse et fluidité.
Synchronisation : les commandes sont envoyées en parallèle aux servomoteurs avec GroupSyncWrite pour des mouvements coordonnés.
Retour au repos : après les pas, le robot revient à sa position initiale.
Arrêt d'urgence : le programme interrompt immédiatement la marche si la touche ESPACE est pressée (emergency_stop_triggered).
Limites actuelles :
Cette marche repose uniquement sur des positions fixes. Elle n’utilise pas de capteurs pour réagir en temps réel aux déséquilibres. Une marche vraiment autonome nécessiterait un système de stabilisation avec IMU et algorithmes avancés.
Programmation Robot Bipède — 06/06/2025
dynamixel_tests
dynamixel_position_reader : lit et affiche les positions actuelles des servomoteurs Dynamixel.
voltage_monitor : surveille et rapporte la tension d'alimentation de chaque servomoteur.
robot_motion_routines
robot_dance_controller : contient les séquences de mouvements pour faire danser le robot.
robot_left_leg_init : initialise les servomoteurs de la jambe gauche du robot.
robot_right_leg_init : initialise les servomoteurs de la jambe droite du robot.
robot_walk_controller_with_emergency_stop : gère la marche avec fonction d'arrêt d'urgence.
simple_dynamixel_controller : interface basique pour contrôler les servomoteurs.