SE5 2023/2024 P2
Documents finaux
Définition du projet
Coupe de France de robotique 2024
La coupe de France de Robotique est un évènement ayant lieu à La Roche Sur Yon en mai.
Les équipes doivent concevoir un ou plusieurs robots autonomes qui ont pour objectif de marquer un maximum de points en 100 secondes.
Les robots sont placés sur une table de 2m x 3m, et deux équipes concourent en même temps pour marquer un maximum de points.
Les points sont décrits dans le règlement senior.
Cette année, un seul robot principal peut être proposé (contrairement à deux typiquement). Cependant, dans cette édition, on retrouve les PAMI (Petits Actionneurs Motorisés Indépendants).
Carnet de bord
Semaine 37
- Rédaction du cahier des charges disponible ici
- Correction du bus CAN sur des cartes existantes pour valider le bloc de design "Transciever CAN" sur toutes mes cartes :
Simplification, inversion de TX & RX et suppression des protections contre les sur-tensions. On passe de 50bit/s à 1MBit/s.
- Conception de la base roulante avant usinage
Semaine 38
- Usinage d'une partie de la base roulante
- Modification de la carte contrôleur de moteur BLDC avant la commande pour adopter les modifications sur le transciever CAN
- Début du travail sur les PAMI : choix technologiques
Semaine 39
- Conception des PAMI sur KiCAD
- Conception d'une clé USB radio Sub-GHz pour communiquer avec les PAMI depuis un ordinateur.
Semaine 40
- Idem à semaine 39
Semaine 41
- Génération des fichiers de conception
- Commande des PCBs (5 Cartes mères de PAMI, 15 capteurs de distance, 5 "chassis" de PAMI, 5 clé USB de radio-contrôle des PAMI, 5 contrôleur moteur BLDC, 5 capteurs de position absolue.
- Premiers essais de Computer Vision avec OpenCV pour repérage des PAMI dans l'espace.
Semaine 42
- Développement logiciel minimal pour les projets sous ESP32
- Expérimentation avec des caméras 3D pour le repérage du robot.
Semaine 43
- Réception des PCB. Correctifs :
- Changement de crystal (séléctionné un crystal 24 MHz, alors qu'une plage de [8-16]Mhz est attendue pour les STM32F103 (contrairement à [8-32] pour les STM32F303)).
- jumper wire car erreur de nom de net (VCC & VBAT non reliés).
- Broche ENable des contrôleurs de moteurs non connectées, alors que pull-down.
Le suivi de qualité des PAMI est disponible.
Documentation Technique
Robot Principal
Carte mère
Hardware
Alimentation
La carte peut être alimentée par une source de 6 à 30V, donc par des batteries Lithium Polymère (Li-Po) 6 cellules.
Pour ce faire 2 bucks convertissent la tension d'entrée respectivement en 3.3V et 5V.
Par défaut, ces hacheurs sont désactivés (pin ENABLE à l'état bas). L'appui sur le bouton Power active le buck 3.3V. Cela vient alimenter le STM32, qui, si l'état de la batterie est satisfaisant, tire lui aussi la broche enable du BUCK 3.3V & celle du buck 5V. Cela permet une consommation à vide d'environ 3uA, et un rendement d'environ 90% (théorique, non mesuré).
Raspberry Pi
La carte mère est basée sur les Raspberry Pi Compute Module 4. Comparé à un Raspberry Pi classique, ceux-ci embarquent une mémoire EMMC, et permettent l'accès au port PCIe du processeur Broadcomm. Cependant, aucun connecteur/périphérique n'est présent : il n'y a pas de HUB USB, de puces de gestion de l'audio, ...
L’intérêt étant de pouvoir gagner de l'espace sur une carte, et de permettre de remplacer certains composants par un autre (ex : passage de 4 à 7 ports USB, dont 2 sont directement reliés en dur à des double convertisseurs série, et 1 au STM32).
STM32
Un STM32F105RBT6 est également présent sur la carte, pour gérer les entrées sorties en temps réel, d'avoir 9 entrées analogiques, 9 sorties PWM, de la communication CAN, RS485 (pas encore testé), Neopixel (pour un contrôle de LEDs 5V), et la gestion de la batterie (mesure de la tension & contrôle des bucks d'alimentation)
Périphériques
- La carte compte plusieurs entrées vidéos CSI et sorties DSI, dont une est placée pour pour venir accrocher un écran tactile Waveshare à l'arrière de la carte. 2 ports HDMI sont également disponibles.
- Un HUB USB 7 ports décuple le port USB en 4 connecteurs USB-A 2.0, 2 convertisseurs USB-Série doubles, et une communication avec le STM32 qui permet sa mise à jour via DFU.
- 6 ports série natifs au Raspberry pi (4 via usb, 2 natifs Raspberry Pi) + 1 port série RPI <=> STM32 + 2 ports séries disponible sur le STM32.
- Un port audio numérique (I2C + I2S)
- Un accéléromètre, gyroscope, et magnétomètre.
- Un connecteur Ethernet Gigabit
- Un connecteur PCIe pour connecteur M.2 (SSD NVMe)
Software
Le STM32 est programmé via le STM32CubeIDE.
Le Raspberry Pi fait tourner Ubuntu Server 22.04 , sans les "bloatware" propres à Ubuntu (cloud-init, télémétrie, ...).
Le framework ROS2 est installé et est la base du projet :
A chaque capteur / actionneur / interpréteur est associé un nœud. Ces nœuds sont des programmes Python ou C++. Ces nœuds émettent ou écoutent des données sur des topics (à la MQTT), et communiquent avec leur capteur / actionneur réservé.
Cela permet une modularité : pouvoir remplacer le nœud de décision par un nœud de lecture d'une manette pour pouvoir contrôler le robot à distance plutôt qu'en autonomie. Les nœuds peuvent être isolés et récupérés sur d'autres projets, lancés plusieurs fois si un capteur est présent en plusieurs exemplaires, visualiser les valeurs envoyées via un logiciel tel que RVIZ2
Pour l'affichage sur l'écran, nous utilisons QT5.
Carte de contrôle moteur DC
Hardware
Un STM32F303 vient contrôler jusqu'à 6 moteurs à courant continu, jusqu'à 30V-3A. Chacun des moteurs est commuté par un pont en H, et une résistance de Shunt vient mesurer le courant consommé par chacun des moteurs pour pouvoir asservir ces moteurs en couple/courant.
6 connecteurs d'encodeurs incrémentatifs (encodeurs dits "A-B") sont présents, avec leur adaptation de tension. Ces connecteurs servent également à brancher des capteurs de fin de course lorsque le moteur n'est pas asservi en vitesse.
6 connecteurs SPI & 6 connecteurs I2C sont présents pour pouvoir y ajouter des encodeurs absolus.
La communication entre le STM32 et l'extérieur peut se faire via plusieurs interfaces : 2 ports série, un port CAN et un port mini USB 2.0 qui émule un port série.
Firmware
Le STM32F303 est programmé via le STM32CubeIDE. La communication se fait via un G-Code simplifié qui permet de configurer les moteurs, les encodeurs, la méthode de régulation, et les consignes des boucles de régulation
Carte d'adaptation de tension pour Lidar
Cette carte minimale convertit le 5V des connecteurs série de la carte mère vers le 3.3V requis par certains Lidar
🆕 Carte de contrôle de moteur BLDC
Hardware
Basé sur un STM32F303 et un DRV8323, le contrôleur peut commuter jusqu'à 36V à ~30A pour venir alimenter un moteur synchrone (BLDC).
Il dispose d'un port USB, de 2 ports série et d'un port CAN pour venir changer la consigne.
Un encodeur (incrémental ou positionnel) peut venir être connecté.
🆕 Encodeur absolu magnétique
Hardware
Cette carte est un simple support pour l'encodeur magnétique MT6701, capable de communiquer en I2C ou en incrémental (UVW).
🆕 Clé USB Radio
Hardware
Pour communiquer avec les PAMI et ne pas modifier en profondeur la carte mère, un STM32 vient interfacer un port USB-A et une puce CC1101 pour permettre à un ordinateur la communication 865 MHz.
Tour de supervision
Hardware
On utilise le micro-ordinateur Nano-Pi M4B de chez Friendly-Elec, sponsor chinois de l'édition 2023. C'est un micro-PC suffisamment puissant pour pouvoir faire de l'analyse d'image et de la supervision
Software
Le NanoPi est sous Ubuntu Server 22.04, également avec ROS2.
🆕 PAMI
🆕 Carte mère
Hardware
Basé sur un STM32F103, les PAMI sont dotés de 2 contrôleurs de moteurs DRV8837, Un contrôleur de charge de batterie Li-Po/Li-Ion, un buck boost 2.5V-6V -> 3.3V. Il peut être alimenté par des piles AA ou une batterie.
Un second PCB sert également à venir intégrer des connecteurs d'extension.
🆕 Capteur de distance
Hardware
Basé sur un VL53L3. Vient s'emboîter à la verticale pour permettre au PAMI d'éviter les collisions.