Bienvenue sur la page du projet de MT3
Objectif du projet: découvrir ROS2
Sommaire:
- Quelques concepts de ROS2
- Liste du matériel
- Les étapes du challenge MT3
- Les contraintes et ce qui est évalué
- Les dates de projet
- ESP32 et sa vidéo
- Tâches à effectuer sur l'ESP32
- ROS2 et sa vidéo
- Vidéo de démonstration
- Tâches à effectuer sur la partie ROS2
La distribution ROS2 est jazzy (echo $ROS_DISTRO)
- Les nodes: Chaque noeud dans ROS doit être responsable d'une seule tâche (par exemple, commander les moteurs de roue ou publier une image de caméra).
-> Pour lister les noeuds:ros2 node list
ou, pour avoir plus d'infos:ros2 node info <node_name>
- Les topics: Les topics sont un élément essentiel dans ROS: ils jouent le rôle d'un bus permettant aux noeuds d'échanger des messages.
Un nœud peut publier des données sur un nombre quelconque de topics et, simultanément, être abonné à un nombre quelconque de topics
Pour lister les topics:ros2 topic list
ou avec plus d'informationsros2 topic list -t
Pour voir les informations d'un topic en particulier:ros2 topic info
Pour voir les données publiées sur un topic:ros2 topic echo <topic_name>
- rqt_graph est un utilitaire très important pour observer les nodes et les topics
Liste du matériel sur le robot:
- Machine virtuelle de Pierre Blazevic avec ROS2 et des exemples
- Servomoteur SG92R 360°
- Roues pour servomoteur
- Roue folle (bille)
- ESP32 WROOM-32S
- Batterie externe
Liste du matériel commun:
- Caméra en douche connectée sur un PC
- Node accessible
Présentation du Projet Robotique
Objectif général
Chaque binôme devra concevoir, programmer et tester un robot autonome capable de se déplacer de manière intelligente sur un parcours défini.
Contexte commun
-
Tous les binômes utilisent le même matériel et travaillent sur la même plateforme de développement.
-
Le projet est progressif : vous développerez votre robot par étapes successives, en ajoutant des fonctionnalités à chaque phase.
Le schéma de principe:
Les 3 Étapes du Challenge MT3
🟢 Étape 1 : Parcours libre
Objectif : Aller le plus rapidement possible d'une zone de départ vers une zone d’arrivée, sans obstacle et sans intervention humaine.
-
Première prise en main du robot.
-
Mise en place de la navigation de base.
-
Analyse du parcours et optimisation de la trajectoire.
🟡 Étape 2 : Parcours avec obstacles
Objectif : Aller le plus rapidement possible d'une zone de départ vers une zone d’arrivée, avec des obstacles fixes, sans intervention humaine.
-
Implémentation de la détection d’obstacles (capteurs).
-
Algorithmes d’évitement.
-
Adaptation dynamique de la trajectoire.
🔴 Étape 3 : Parcours avec concurrence
Objectif : Aller le plus rapidement possible d'une zone de départ vers une zone d’arrivée, avec obstacles et en présence d’un robot concurrent.
-
Capacité à s’adapter à un environnement dynamique.
-
Anticipation des mouvements d’un autre robot.
-
Gestion de priorités, trajectoires partagées, et compétition.
Contraintes et Évaluation
- Aucun contrôle manuel pendant les phases de test.
- ROS2 obligatoire
- Respect des consignes de sécurité et des règles de la plateforme.
- L’évaluation prendra en compte :
- Les performances (vitesse, fiabilité)
- L’intelligence du comportement (adaptabilité, prise de décision)
- La rigueur du développement (propreté du code, tests, documentation)
- Le design du robot: humour, frayeur, originalité, ....
- Un poster A3 de présentation du robot et de sa programmation
- Une vidéo de démonstration de moins de 2 minutes
Dates des projets MT3 (24h)
- Mardi 6 mai AM:
1/ venir votre PC et avec la VM qui fonctionne (et avec les add-ons installés)
2/ objectif 1: Commander les moteurs avec une rampe d'accélération et de décélération - Mercredi 7 mai PM
3/ objectif 2: se connecter sur le noeud de vision
4/ objectif 3: générer une trajectoire entre un point A et un point B - Mercredi 14 mai AM + PM
5/ objectif 4: le robot va du point A au point B seul
6/ objectif 5: la vision traite les obstacles
7/ objectif 6: le robot va du point A au point B, en évitant les obstacles, seul. - Jeudi 27 mai AM + PM
8/ AM: Tests et homologations
9/ PM: Compétitions - Dimanche 8 juin à minuit:
10/ Rendu du travail
Notes ESP32 WROOM 32D:
Attention au cablage: plusieurs broches bloquent la programmation... Regardez la datasheet.
Le document de référence de l'ESP32 est ici
- Prendre ESP32 DEV MODULE, vitesse de transfert de 115200 et Flash mode: DIO
- Les broches 21 (I2C Clock) et 22 (I2C Data) seront utilisées pour l'afficheur
- Connecter les servomoteurs sur GPIO 0 et GPIO 2 pour les "data" des 2 servomoteurs.
- Le +5V à coté de l'USB.
- Le GND, entre le GPIO12 et GPIO13.
Le programme que j'ai utilisé pour l'ESP32:
- Afficher des messages dans le moniteur série:
"Les servos sont initialiasés" + "Le WiFi est KO: attente" + "Le WiFi est OK" + "Fin du setup"
- Ajouter un afficheur LCD i2c (attention, il faut revoir la connectique complètement)
- Afficher les mêmes messages sur l'afficheur LCD i2c (état de la connexion et issus du topic cmd_vel)
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888
ros2 topic list
/parameter_events
/rosout
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"
ros2 topic list
/cmd_vel
/parameter_events
/rosout
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 1.0}, angular: {z: 0.0}}"
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: -1.0}, angular: {z: 0.0}}"
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.0}, angular: {z: 0.0}}"
ros2 topic info /cmd_vel
permet de connaitre le type de topic (ici, geometry_msgs/msg/Twist
), le nombre de "publisher" et le nombre de subscriber"