Ici nous vous informerons des dernières nouvelles concernant l'avancement de nos projets et autres !
Bonne lecture !
25 avril 2023
La CARAR nous avait laissé un petit goût amer. Nous avions perdu du temps sur la gestion de la tirette, la détection de l’adversaire était dans sa forme la plus primitive et nous avions pris en défaut notre précieuse carte de détection. Et après tout ce temps passé sur le robot, l’un des membres souhaitait faire une petite pause. S’en suivi donc une semaine qui fut plutôt passée sur le panier que sur le robot...
Ensuite, il fallait savoir si la carte de détection pouvait poser problème... Au bout de deux séances d’essais, et la correction d’un bug potentiel, il fallut nous rendre à l’évidence. Dans certaines conditions, certes assez précises, un capteur VL53L1X peut détecter un obstacle à 35 cm alors qu’il n’y a rien à moins de 2 mètres devant lui. C’est quelque chose que nous avons pu reproduire, mais uniquement dans certains lieux.
C’est assez embêtant, mais en penchant les capteurs vers le bas, on devrait pouvoir contourner le problème, au moins partiellement...
Nous avons accepté ce défaut, pour continuer de travailler sur la détection de l’adversaire. Le code utilisé lors de la CARAR stoppe net le robot dès qu’un objet est détecté à proximité. D’un côté, le robot risquait de basculer, de l’autre, une fois au contact d’un obstacle, il n’est pas possible de repartir.
Nous avons dessiné des cônes de détection où nous souhaitons prendre en compte la présence d’un obstacle en fonction de la direction d’avancement du robot.
Chaque zone de détection d’un capteur est comparée avec le cône. Si les deux zones ne s’intersectent pas, le capteur est ignoré.
Pour vérifier le bon fonctionnement du code, nous créons une fonction permettant d’éteindre les LEDs associées aux capteurs de la carte de détection. Ces indications nous seront précieuses pour le débogage du code.
Les fonctions Trajets nous permettent de suivre une trajectoire avec un contrôle fin de l’accélération et de la décélération. Une trajectoire peut être une droite, un arc de cercle ou une courbe de Bézier. La solution que nous avons trouvée pour coupler élégamment la détection avec les fonctions Trajets a été de tout piloter au niveau de la stratégie. Le principe est le suivant : la fonction Stratégie appelle successivement :
De cette manière l’impact sur les fonctions Trajets est minime et le résultat est fonctionnel.
Comme l’an dernier, nous utilisons un écran E-Ink pour afficher le score. Cette année, il est plus grand et nous souhaitons le piloter directement avec les microcontrôleurs Raspberry Pi Pico. S’il ne nous a pas fallu très longtemps pour afficher le test sur l’écran, charger des images s’est avéré bien plus compliqué.
Le code proposé n’est fait que pour charger des images faisant exactement la taille de l’écran. Le seul format pris en charge étant celui - non standard, mais compréhensible - du programme, un format binaire brut. Notre image étant bicolore, chaque octet code 8 pixels. Nous avons réutilisé des bouts de code du vendeur (Waveshare) en C fournis pour Linux pour convertir nos images sur le PC avant de copier les données dans le code en C. Un printf bien placé aurait fait l’affaire, mais nous avons voulu être intelligents et nous avons perdu beaucoup de temps...
Le processus était même plus complexe :
Mais à la fin, nous avons ce que nous voulions : un écran lisible de loin !
Mots clés : Programmation, Robot holonome, 2023, Raspberry Pi Pico
1er janvier 2023
Bonne année à vous tous, chères lectrices, chers lecteurs !
Quoi de neuf depuis le 11 décembre de l’an dernier ?
Globalement, pas grand chose sur le robot.
Nous avons séparé le code de test du fichier principal.
Nous avons commencé les travaux sur l’I2C et perdu beaucoup de temps car notre puce TCA9535 ne répond pas. Nous avons vérifier les connexions électriques, vérifié les tensions, changé la puce, rien n’y fait. La seconde puce est-elle grillée ? La carte était-elle mal conçue ? Pour l’instant, nous ne le savons pas !
Du coup, nous nous sommes rabattus sur le 2e Raspberry Pi Pico pour travailler l’I2C. Ça a été l’occasion de mettre au propre nos notes sur la création d’un projet pour le Raspberry Pi Pico :
Et de découvrir cette librairie pico_i2c_slave qui fait exactement ce que nous voulions côté esclave.
Enfin, nous avons recommencé nos moulages en papier mâché, pour l’aspiration des balles.
Lors de notre dernière news, nous avons présenté des courbes avec des accélérations et des décélérations. C’est le résultat d’un article écrit en septembre dernier que vous trouverez ici.
La suite :
Mots clés : I2C, Programmation, 2023, Raspberry Pi Pico
11 décembre 2022
Par rapport à nos nouvelles du 2 décembre 2022, nous avons bien avancé sur la programmation des déplacements ! À ce niveau, le dernier point encore non maîtrisé est l’utilisation du gyroscope pour se positionner.
Nous avons publié notre code sur Github avec un Readme qui explique la structure du code.
Pour l’instant, nous n’avons pas de belle vidéo à présenter, mais ça ne saurait tarder... Pour patienter, un test "en boucle ouverte", seuls les moteurs sont asservis en vitesse, il n’y a pas de retour sur la position du robot !
Et voici les courbes obtenues lors des essais de contrôle en vitesse avec une accélération et une décélération - ce sont bien des courbes expérimentales :
Le code supporte les trajectoires droites, circulaires ou suivant les courbes de Bézier.
Donc nous sommes - presque - prêts à nous déplacer avec classe et précision !
Mots clés : Programmation, Vidéo, Robot holonome, 2023, Raspberry Pi Pico
2 décembre 2022
Nous vous avions présenté la carte nue, la documentation interactive de la carte mais pas la carte soudée ! Il lui manque bien un ou deux connecteur, mais la voici :
Mots clés : Électronique, Photo, Robot holonome, 2023, Raspberry Pi Pico
16 octobre 2022
Un mois sans donner de nouvelles ! Comment avons-nous pu faire ça ? Et maintenant, nous avons tellement de choses à raconter, et pas trop de temps... Ce sera donc bref.
Dans l’idée de se faire la main sur le Raspberry Pi Pico, qui servira de contrôleur sur notre prochaine carte électronique, nous testons alors le gyroscope L3GD20H. Nous observons des phénomènes un peu bizarres. Il nous faudra du temps pour comprendre que sur les 3 axes du gyroscope, celui que nous comptions utiliser (l’axe Z) est le pire des trois.
Nous mesurions une dérive régulière de 8°/minutes, en statique. Une analyse plus poussée montrera que cet axe met plus de temps à se stabiliser que les autres... Notre calibration se servait alors de ces valeurs fausses, créant cette dérive.
Les autres axes (X et Y) ne sont pas parfaits mais exploitables.
Déçus, nous achetons un second ADXRS453, pour voir si nous obtenons de meilleurs résultats. Les essais sont en cours.
Globalement, l’environnement du Rpi Pico manque un peu de légèreté, cmake est affreux, l’intégration à VS Code bien mais pas géniale. La puce reste puissante par rapport à nos anciens microcontrôleurs et la liaison USB est extrêmement pratique. L’intégration facile sur une plaque de test est aussi un très gros plus !
Un petit mot sur la documentation. Si vous souhaitez bien maîtriser la bête vous aurez besoin des documents suivants :
Début octobre, nous nous sommes concentrés sur la carte électronique. Le schéma puis le routage dans la foulée. L’architecture se base sur 2 Rpi Pico reliés en I2C. Un qui gère le déplacement (moteurs, codeurs, gyroscope) qui sera le maître et gérera aussi la stratégie. L’autre analysera les capteurs et mettra les informations à disposition du maître. Comme nous avons eu peur que ça fasse juste en termes d’entrées-sorties, nous avons rajouté une extension d’entrées/sorties I2C (TCA9535).
Nous avons reçu la carte et les composants, y’a plus qu’à souder...
On admire la sérigraphie :
Une fois soudée, la carte pourrait ressembler à ceci :
La base roulante progresse, grâce à notre scie à chantourner. Nous manquons de vis, rondelles et écrous pour l’assembler proprement...
Dommage, non ?
Mots clés : Électronique, Robot holonome, 2023, Raspberry Pi Pico