Ici nous vous informerons des dernières nouvelles concernant l'avancement de nos projets et autres !
Bonne lecture !
7 juillet 2025
Après plusieurs participations, nous avons observé des problèmes de communication I2C entre nos cartes équipées de Raspberry Pi Pico. Nous avions deux choix :
Nous avions tenté, avec plus ou moins d’acharnement et pas trop de succès, le premier choix. La difficulté résidant dans la reproduction du défaut. On peut toujours débrancher un fil, mais le débranche-t-on le bon fil ? au bon moment ? Bref, nous n’avons rien produit de concluant.
Pour la seconde solution, nous faisons l’hypothèse que les problèmes de communication viennent des perturbations électromagnétiques. Alors qu’est-ce qui permettrait de se protéger des perturbations électromagnétiques ?
Et quel protocole (relativement) bien supporté par tout microcontrôleur moderne coche ces cases ? Devinez... L’USB !
De son nom, Universal Serial Bus, nous pourrions croire que le protocole se rapproche d’une liaison UART un peu évoluée, mais il n’en est rien. Le protocole est organisé autour d’un "hôte" (host) et des périphériques (devices). La norme USB décrit un empilement de protocoles, de la définition du 0 et du 1 sur le bus à la définition des classes de périphériques (Devices class) qui vont jusqu’à spécifier, de manière flexible, les cas d’utilisation de l’USB.
Ces classes de périphérique permettent de prendre en charge un grand nombre de périphérique différents sans développer de pilote spécifique à chaque fois. Quelques exemples de classes :
Pour une liste plus complète, wikipédia en anglais propose quelque chose de compréhensible.
Vouloir utiliser l’USB sans utiliser l’une des classes existante demande un effort considérable ! Bref, nous ne le conseillons pas !
La flexibilité du protocole USB en fait sa force mais crée une complexité qui fait que, même si nous maîtrisions parfaitement le protocole, nous ne pourrions le résumer en un billet de blog. Le meilleur résumé que nous pouvons vous proposer en ligne est USB in a Nutsheel. En français, j’ai le souvenir d’une revue qui présentait l’USB à travers une série d’articles, mais je n’en trouve pas la trace.
Et nos microcontrôleurs, dans tout ça ? La plupart des cartes pour développer sur microcontrôleur proposent un port USB, mais nous les classerons en 3 familles :
Les 2 premières familles peuvent envoyer des données sur le bus USB sans soucis. La première sera restreinte à la classe CDC, tandis que la seconde sera plus flexible et pourra, par exemple, émuler un clavier ou une souris.
Mais seuls les microcontrôleurs appartenant à la 3e famille peuvent coordonner le bus USB. La solution "simple" est de laisser un ordinateur embarqué assurer ce rôle. Mais ce n’est pas notre souhait. Le Raspberry Pi Pico, basé sur le RP2040 est de la 3e famille, qui support hôte et périphériques. Notons qu’ayant qu’un seul port, un seul des rôles USB (hôte ou périphérique) peut être actif à un moment donné.
Pour tester la fonctionnalité hôte USB, nous utilisons le code de démonstration fourni dans pico-example : host_cdc_msc_hid.
L’exemple de la fondation RaspberryPi marche bien. Ce qui nous a pris du temps :
Si le port USB est pris, il faut récupérer les informations par un autre moyen. Nous utiliserons la liaison UART avec un convertisseur UART / RS232 puis un second convertisseur RS232/USB (parce que nous avions ceci sous la main).
Note : sur le montage ci-dessus, il manque encore un câble USB pour l’alimentation...
L’exemple permet de gérer 4 types de périphériques USB :
Pour tester, nous commençons par relier un Raspberry Pi Pico avec un bête code printf("exemple\n") toutes les secondes à notre hôte USB. La connexion est détectée et les informations sont bien reçues !
TinyUSB Host CDC MSC HID Example
# Branchement d'un Rapsberry Pi Pico
CDC Interface is mounted: address = 1, itf_num = 0
Baudrate: 115200, Stop Bits : 0
Parity : 0, Data Width: 8
A device with address 1 is mounted
# Echo des données reçues
Exemple
Exemple
Exemple
# Déconnection du Raspberry Pi Pico
A device with address 1 is unmounted
CDC Interface is unmounted: address = 1, itf_num = 0
# Branchement d'un hub USB
A device with address 1 is mounted
# Branchement d'un Rapsberry Pi Pico sur le hub
CDC Interface is mounted: address = 2, itf_num = 0
Baudrate: 115200, Stop Bits : 0
Parity : 0, Data Width: 8
A device with address 2 is mounted
# Echo des données reçues
Exemple
Exemple
Exemple
# Déconnection du Raspberry Pi Pico
A device with address 2 is unmounted
CDC Interface is unmounted: address = 2, itf_num = 0
# Déconnection du hub USB
A device with address 1 is unmounted
29 juin 2025
Voilà un mois que la coupe 2025 s’est terminée. C’était pour nous une coupe très particulière. En effet, nous étions grandement impliqués dans les deux équipes "Riombotique", au point d’avoir décidé de ne pas réaliser de robot pour Poivron Robotique cette année. C’est une expérience totalement différente avec énormément de trucs chouettes et quelques écueils qui nous ont fait mal.
L’une de nos conclusions, c’est que nous aimons notre équipe "Poivron Robotique". Mais Poivron Robotique c’est quoi ? Notre équipe n’est pas la seule à se poser ce genre de questions existentielles, vous avez Les Karibou qui présentent leurs réflexions à ce sujet.
En très bref, Poivron Robotique est bâti sur deux axes : maîtriser les technologies que nous utilisons et écrire des articles les présentant. Le détail de nos réflexions se trouve sur notre page Présentation.
Poivron Robotique sera probablement présent à la coupe de France de Robotique 2026. Nous travaillons toujours - bien qu’avec moins d’acharnement - sur nos articles sur le déplacement d’un robot.
Après des échanges avec différentes équipes, nous allons troquer notre bus de communication I2C pour un bus USB. Ce qui amènera probablement un ou plusieurs articles sur l’USB. Nous cherchons également à stocker nos logs, pour enregistrer massivement ce que se passe sur le robot. Enfin, nous cherchons un moyen de mieux comprendre l’environnement du robot à partir des capteurs VL53L8CX. Nous avons bien quelques idées mais rien d’abouti pour l’instant.
L’été s’annonce chargé et j’espère que nous reprendrons le rythme de publication que nous avions les années précédentes !
15 février 2025
Nous profitons de cette nouvelle année pour présenter, tardivement, nos meilleurs vœux pour cette année 2025.
Après une année 2023-2024 bien chargée, nous levons un peu le pied, ce qui explique cette activité éditoriale bien plus faible.
Cependant, plus faible ne veux pas dire inexistante ! Nous préparons une série d’articles sur le déplacement des robots qui sera publiée sur ce site quand elle sera prête, et pas avant. Si vous êtes curieux, ou que vous souhaitez participer à la rédaction de ces articles, notre bouillon (qui commence à prendre forme) est en ligne sur ce le wiki Eurobot.
Nos projets se concentrent sur les activités du club robotique de Riom. Ces activités nous amèneront probablement à publier des articles mais pas les points d’avancement que nous partagions habituellement sur ce site...
Bref, nous sommes toujours là, mais moins actifs ici !
19 mai 2024
Après une participation à la Coupe de France de robotique puis une participation à la Coupe d’Île de France, la fin du projet appelle un bilan et comme tous les ans, nous terminons ce projet avec une sensation d’inachevé.
Notre projet était ambitieux et supposait que nous partions d’une base solide - notre robot de l’année précédente.
Globalement, le travail réalisé cette année manquait de fiabilité :
Le robot de l’an dernier avait bien un ou deux soucis, tels que :
Nous avons observé ces soucis sur le robot de cette année également, dans une moindre mesure, certes, mais ces problèmes sont toujours présents. Et cette année, en plus, le robot pouvait redémarrer de manière "aléatoire". Nous ne l’avons observé que quelques rares fois en essais, mais une fois à notre dernier match de la coupe d’Île de France.
Côté PAMI, c’est un peu le même constat. Nous sommes partis du code de déplacement du robot principal. Ceci nous a montré à quel point le code était réutilisable - et ça nous a fait vraiment plaisir ! Par contre, quand vous réglez l’asservissement la veille de la compétition, évidemment que le robot manque un peu de maturité. Nous nous sommes fait avoir par :
Donc, oui, il y a des raisons d’être insatisfaits de nos robots.
Et de l’autre côté, nous avons rempli nos objectifs :
Bref, nous espérons avoir quand même vendu du rêve, car c’était un de nos buts !
Alors pour fêter ça, voici une vidéo des meilleures actions du robot :
19 mai 2024
Nous arrivons donc à la compétition avec un robot qui pourrait marcher mais qui ne marque pas forcément de points et un PAMI non-homologable.
Nous travaillons d’abord sur le PAMI, et relativement rapidement nous obtenons un PAMI homologable (tirette, bouton de couleur, ajustement de l’asservissement).
L’après-midi sera consacrée à l’activation des panneaux solaires avec un bras tenant un pot. Vers 15h30, nous nous dirigeons vers l’homologation. 15h40, nous sommes homologués.
Il nous reste donc du temps pour travailler sur le robot ! Et ça tombe bien car nous avons du travail ! Les servomoteurs nous posent toujours des soucis et nous découvrons que celui de la pince chauffe. Nous sortons alors notre scie à chantourner et nous installons un gros servomoteur à la place du petit qui actionnait la pince.
Rappelez-vous, notre grappin ressemblait à ça :
Maintenant, c’est moins élégant, mais plus fonctionnel :
Le fonctionnement global des servomoteurs semble s’améliorer à partir de ce moment.
Nous attaquons notre premier match avec sérénité. Le robot ne va pas faire des merveilles, nous le savons. Nous sommes du côté Jaune, celui sur lequel nous ne nous sommes quasiment pas entraînés.
Le robot n’attrape que 3 pots sur les 5. Il tente de pousser les panneaux solaires avec un pot, les rate tous puis en tourne un en allant chercher une plante. Le robot attrape une plante et la met sur un bras qui n’avait pas attrapé de pot. Au deuxième essai, le robot n’arrive pas à attraper la plante et rentre déposer ses pots. Il embarque par hasard une plante violette qui restera debout dans la zone de dépose. Il traverse ensuite le terrain pour aller se recharger. Notre PAMI parcourt nominalement ses 80 cm.
Nous marquons 41 points face à Ze Crazy Team (66 points - leur robot était bien abouti, bravo à eux !).
Match 1 - 720p (61Mo) ou sur Youtube : Match 1
Nous profitons du temps entre les matchs pour homologuer les PAMIs 2 et 3.
Pour ce deuxième match, nous mettons 3 PAMIs sur la table en plus du robot. Le robot attrape parfaitement les pots, pousse avec succès les 3 panneaux solaires, tente d’attraper une plante - sans succès - puis dépose ses pots avant d’aller en zone de recharge. Le PAMI 1 fonctionne bien, le 2 a fait grève et le troisième s’est retrouvé bloqué par le 2e.
Pour le deuxième match, nous marquons 51 points face à AREM (qui ne quitte pas sa zone de départ).
Match 2 - 720p (18Mo) ou sur Youtube : Match 2
Nous finissons le match vers 16h30. Il nous reste toute la soirée pour atteindre notre objectif : attraper une plante et la mettre dans un pot. Et quitte à modifier la stratégie, autant en profiter pour évacuer le robot du chemin des PAMIs. Car actuellement, si le robot rencontre un obstacle sur le chemin de la recharge, il se dirigera vers la zone proche des PAMI.
La soirée sera longue :
Notre troisième match sera un match en demi-teinte. Le robot attrape ses deux pots avants et seulement un pot à l’arrière. Il va ensuite attraper une plante dans la première zone. En fait, il en attrape deux. L’une tombe dans le pot, l’autre devant le robot et se couche. Rapidement, le robot détecte qu’il ne pourra pas attraper une seconde plante dans cette zone et va tenter sa chance vers une autre zone de plantes. Il attrape une 2e plante puis échange ses pots avants avec ses pots arrières. Il va chercher sa troisième plante, l’attrape, mais la pose dans le bras qui n’a pas de pot, la plante se couche devant le robot. Le robot semble tenter d’aller à la troisième zone, mais la plante est bloquée devant le capteur, il rentre à sa zone de dépose.
Mais il ne dépose pas ses plantes !
Le code de fin de match s’enclenche et le robot abandonne son action pour aller vers la zone opposée, laissant ainsi la place aux PAMIs. S’il marque les points de la zone de recharge, ce n’est que grâce à un bras déplié. Les PAMIs de leur côté cafouillent. Le premier part comme s’il était de la couleur opposée, les suivants ne bougent pas.
En termes de mouvement, c’est un match magnifique, notre plus belle action réussie, un robot en mouvement jusqu’à la dernière seconde. En termes de points, c’est juste la déprime totale :
Match 3 - 720p (32Mo) ou sur Youtube : Match 3
Évidemment, un point pareil, nous le réglons avant le prochain match ! Ce temps entre les matchs sera pour nous l’occasion de faire homologuer un 4e PAMI.
Le quatrième match sera assez similaire au 3e, à 3 détails près :
Nous marquons 37 points :
Match 4 - 720p (32Mo) ou sur Youtube : Match 4
C’est bien, c’est le premier match où nous marquons des points avec des plantes ! Nous avons grandement fiabilisé le robot, rajouté des PAMIs sur la table et marqué moins de points qu’au match 1 ou qu’au match 2.
Là, c’est le conseil de guerre ! Nous avons largement de quoi marquer 70 points sur la table et nous n’avons à peine fait la moitié. Nous relisons le règlement, faut-il vraiment arrêter le robot à 90s ? Réponse : non !
La soirée, puis la nuit, seront longues :
Nous allons nous coucher après avoir testé le robot sur trois tables d’essai différentes.
Pour la première fois, le robot attrape une troisième plante pour la mettre dans son pot. C’est peut-être un détail pour vous - 4 points, ce n’est pas énorme - mais pour nous, ça veut dire beaucoup ! Cette troisième plante justifie d’attraper plus que les 2 premiers pots, cette troisième plante justifie cette séquence d’inversion des pots... Bref, c’est un peu l’accomplissement de notre projet.
La suite sera un peu moins glorieuse. Nous avions calibré le robot sur les tables d’essai où il glissait plus que sur les tables de match. Il ratera ses 2 premiers panneaux solaires et frôlera le troisième (assez pour marquer les points). Les PAMIs vont encore se planter. Le premier atteint son objectif tandis que les quatre suivants vont se pousser, suffisamment pour qu’un second arrive à la jardinière la plus proche, mais ce sera bien par chance.
Nous marquons 57 points face à ARC :
Match 5 - 720p (32Mo) ou sur Youtube : Match 5
Un petit mot sur les PAMIs. S’ils n’ont pas brillé cette année, c’est pour plusieurs raisons :
Au classement, nous finissons 39e sur 97 équipes homologuées et avant-dernier des équipes Légendes 15e sur 16. C’est donc pour nous la fin de la compétition !
Quel bilan en tirons-nous ? Vous le saurez dans notre prochaine brève !