Depuis quelques mois j'ai formé une équipe de robotique LEGO (autre que Steambot) qui n'a pas encore de nom officiel : Maxime (BUZ), moi et deux amis qui ne sont pas sur le forum - Stéphane et Manu. Maxime est notre mécanicien, Manu le développeur et Stéphane le caméraman/bricoleur/mécano. Moi j'essaie de coordonner tout le monde et de travailler avec chacun dans chaque domaine. Notre moc (puisque c'est le sujet) est un robot en cours de développement qui participera à la coupe Rhone-Alpes le 22 Mai 2010 à Lyon. Le règlement est celui de la coupe de France et d'Eurobot : Site planète sciences - Le règlement La coupe à Lyon est un match amical d'exhibition organisé par ClubElek.
Sur une piste de 3mx2m le robot autonome (pas télécommandé) doit ramasser des objets et les déposer dans un bac. Les objets sont des boules de 10cm de diamètre pesant 300grammes pour les oranges qui symbolisent des oranges et 150gr pour les rouges qui symbolisent des tomates ainsi que des cylindres de 5cm de diamètre par 15cm de long pesant 285gr qui symbolisent des épis de maïs (couleur blanche). Les oranges sont posées sur des tubes PCV de 15, 20 et 25 cm de haut sur une estrade (il y a une pente à monter). Les tomates et les épis sont posées au sol mais il y a de faux épis noirs vissés au sol. Voici la piste :
Et voici la première version de base mobile de notre robot que j'ai faite, Maxime se charge de la partie supérieure : 2 roues motrices et deux balles de NXT en guise de roues avant. Je pense la refaire entièrement quand j'aurai les dimensions de la mécanique qui ira dessus. Attaque de la pente :
Maxime à commencé la pince à maïs pouvant servir à soulever les oranges et les faire rouler dans le robot : C'est un bras 3 axes : Rotation, montée/descente et pincer.
Bien entendu tout ça ne pourra fonctionner que sur une piste que nous avons construite, la rampe et l'orangerie construite avec Maxime :
La piste construite avec Stéphane, 5 portes de récupération et deux demi-chevrons, 6 tréteaux :
Après un bon nettoyage. Il reste quelques raccords (5mm maxi) que le robot devrait passer :
Nous aussi on a du se construire une rampe. La difficulté est d'avoir la même adhérence que sur la piste réelle. Cette année, il vont talquer la piste et comme elle est sous les projecteurs, il fait très chaud et l'adhérence est a son maximum ! (impossible de pousser les oranges).
Pour votre outil, je crois qu'il est trop complexe, pourquoi avec un axe Z ? Un deux axes devrait suffire non ? (pinçage et relevage).
Pour notre robot, on a un râteau escamotable pour prendre les oranges sur la rampe (4x300g) et un système de bac pour prendre les tomates en allant verser le contenu dans les bacs de récupération (2 tomates). On a uniquement 3 moteurs DC pour les outils et 2 autres pour les roues.
Pour la localisation vous faites comment ? Nous pas de laser alors avec les roues codeuses et recalage sur un mur pour évitez les erreurs. Mêmes si les roues codeuses sont précises les déplacement le sont pas, à cause des roues et de l'adhérence.
Continuez bien, et hésite pas à faire un reportage vidéo de la coupe en RA
Le problème de ne pas avoir de repérage c'est qu'au moindre choc avec l'autre robot par exemple vous allez être perdu vu que votre position est complétement relative. Il n'y a plus la possibilité de placer des capteurs externes comme c'était le cas dans le passé sur des piliers externes ?
Alors pour notre outil, tu connais l'attirance de Buz pour les systèmes complexes on verra avec la structure de stockage ce que ça donne... Néanmoins comme nous prévoyons la préhension des maïs les 3 axes sont nécessaires et la pince serre particulièrement bien avec les ressorts et la VSF. Pour la localisation on va utiliser les capteurs de rotation intégrés aux moteurs, c'est pas le top surtout si on se fait pousser mais pour l'instant on a pas le temps de faire mieux. Les API du Lejos permettent de se repérer facilement sur la piste. C'est la solution de facilité. Comme vous : recalage sur les murs mais après étude du terrain il y a peu d'endroits possibles et il y a un risque de se caler sur un maïs tombé au sol . Dans l'idéal il faudrait 4 roues au sol sur le même essieu : 2 motrices et 2 codeuses afin d'éviter les problèmes de patinage et de collision/blocage. En LEGO ça prend beaucoup de place 4 roues + 2 moteurs + 2 codeurs Pour répondre à Sun-Tzu : Les balises existent toujours mais il nous faudrait du matériel non-lego pour les utiliser pour notre positionnement. Du coup j'ajoute des précision sur le projet : - Notre objectif est de participer à la coupe de France l'an prochain (2011), cette année c'est un essai/apprentissage. - Notre robot doit être 100% LEGO, c'est mon choix de passionné, je veux jouer aux LEGO et pas au fer à souder. Nous piocherons certainement dans les produits Hitechnic qui sont certifiés LEGO et accessoirement chez Mindsensor. J'arrête là car je pourrait écrire dessus pendant des heures
Normalement, le contact est interdit et entraîne des pénalités mais ça peut arriver, c'est bien d'y penser. Nous on part du principe que c'est le robot adverse qui nous évite et s'il y a choc, on est tout aussi perdu.
Les règles changent chaque année, mais il y a des constantes : la taille du terrain, les dimensions, le positionnement des balises donc tout ce travail est réutilisable. Pour ma part je l'ai fait deux fois dans mon école, on l'a gagné une année et on a perdu en finale sur moteur cramé en démi et remplacmenet de fortune pour faire la finale avec un autre moteur beaucoup moins puissant. On avait des roues traceuses, un lecteur de bande blanche au sol et une procedure de recalage rapide (on foncait tout droit puis un quart de tour à doite et re tout droit, ensuite on cherchait de visu notre balise colorée pour savoir dans quel coin on était et on réembrayé le parcours).
Pour les balises, juste avec le capteur de vision de NXT tu pourrais chercher de visu les balises, une de chaque couleur ca te donnerait une idée. Faut aussi faire attention, le jour de la finale, quand m6 est la tous les capteurs basés sur des caméras ne servent à rien, il y a tellement de luminosité avec les projecteurs que tout est blanc Donc la seconde année on avait des filtres pour la finale.
Pour la coupe de France, on avait tenté de refaire une team d'anciens élèves mais on s'était renseigné et la coupe de France semble (ou semblait je n'ai pas lu le règlement de cette année) dédiée aux écoles/universités.
Sun-Tzu si tu parle du capteur de couleurs : Il faut être très près pour une lecture (5mm à 1cm), donc faudrait arriver juste devant la balise.
J'ai fais quelques essais de roulage ce matin, transport de boissons non alcoolisées :
Avec cette mécanique je ne peux pas aller beaucoup plus vite car après il ne roule plus droit. Je trouve que vu la distance parcourue (plus de 8 mètres) il y a peu d'erreur (5cm environ). Néanmoins des recalages seront nécessaires.
J'ai du lester le robot car à vide il patine beaucoup Même chargé si on met trop de puissance pour les rotations il patine. Qui a dit que les moteurs LEGO n'étaient pas puissants.
Donc, je revois actuellement la répartition des masses, j'en profite pour faire une structure plus rigide. Ok, en fait j'ai tout démonté et j'en refait un autre
Cet après midi j'ai préparé une dixaine de maïs (tube pvc + skotch + sable pour le poids) sans tétons et 4 tomates. J'ai aussi dessiné sur la table leurs position. Donc les prochains tests seront plus rudes
J'ai fais un schéma de la piste avec les objets dessus, cela donne une idée de la place qu'il reste pour passer (le quadrillage numéroté nous permet de situer un endroit de la piste par téléphone ou mail) : Lien vers l'image
Sinon je trouve qu'il fonctionne vraiment bien pour l'instant et malgré le poids que tu lui fais transporter les moteurs ont vraiment pas l'air de peiner.
Bonne continuation, je suis impatient de voir la suite
Sympa l'engin et en plus il peut être largement lester. Le châssis à l'air bien conçu. S'il faut lester pour pas déraper ça pose effectivement quelques problèmes. j'ai vu la piste (merci pour lien) c'est pas évident car il n'y a pas de logique (apparemment). Vous allez vous amuser. ça fais drôle de connaitre la piste avant la compétition non ? Bon courage à vous 4. A + Alban. Bientôt Fribot. SEMTOU
Petite mise à jour, on avance doucement et surtout on a défini plusieurs choses concernant les déplacement qui n'étaient finalement pas très précis.
Pour commencer l'équipe a un nom : BrickBot
Ensuite nous avons un sponsors pour la coupe Rhône-Alpes, je vous laisse deviner qui nous aide... Une boutique spécialisée en LEGO... Peek et Poke.
J'ai donc refait la base mobile, plus rigide et avec plus de poids à l'arrière. Le résultat n'était pas bien meilleurs. Le problème est que les roues patinent pour deux raisons liées : Une partie du poids du robot n'est pas appliqué sur les roues et les ball coaster ont beaucoup de frottements. Pour résoudre ces problème j'ai fais une base avec essieu central et des petites roulettes à l'avant et à l'arrière. Ainsi 95% du poids va sur les roues qui ont alors plus d'adhérence ET les roulettes (jaune sur la photo) ont très peu de poids à supporter donc très peu de frottements. l'avant et la partie supérieure sont provisoire en attendant la méca de Buz. Le capteur de contact sert à deux choses : Enfoncé il maintien le robot en attente de départ. Relâché le robot commence le match et il deviens le bouton d'arrêt d'urgence. Bien entendu cette configuration ne permet plus de monter la pente : Adieu les oranges. Le seconde grosse modification concerne notre vision de la piste et la stratégie de déplacements. Les API de déplacement LEJOS ne donnait pas satisfaction avec un gros robot car la régulation fonctionne mal. Les coordonnées du robot et des objets (x,y) en mm sur un plan orthogonal classique n'étaient pas nécessaire. Il y a finalement peu d'endroits ou le robot peut passer et ou il doit s'arrêter : Il peut passer dans les couloirs entre tomates et maïs, en diagonale en ramassant les maïs ou en poussant les tomates. Il y a aussi peu d'endroits ou il peut tourner sur lui même sans accrocher un objet. Pour simplifier j'ai déformé l'espace : L'axe des X est une diagonale, l'axe des Y reste le même. J'ai tracé les trajets possibles et chaque intersection forme un point ou le robot peut s'arrêter soit pour tourner soit pour une action. Voici la carte avec les coordonnées XY : Après un mouvement le robot se retrouve toujours sur l'un des points "carrefour", le programme pourra ainsi facilement gérer la position et prendre les décisions (euhm) car il y a peu de possibilités. Ce que j'appelle un mouvement est un ensemble d'action (avancer, prendre un mais, avancer). Par exemple au départ le robot est sur la base jaune, son premier mouvement l'amènera au point "départ" (11,0). Il y a aussi des points hors zone (en rose), quand on demande au robot d'aller sur ces points il effectue une action spécifique, par exemple "vidange" : Il va au bord de la piste, déverse sa récolte puis revient au point ou il était. Ce genre de déplacement ne peut pas être géré avec les points XY trop grossiers.
Comme vous avez bien lu toute cette théorie vous méritez un petit film :
Le premier intérêt de ce mapping est de ne plus avoir à gérer les coordonnées xy en millimètres du robot et les déplacements dans des angles variables. En effet cela demandait des calculs trigonométriques longs (sinus et cosinus utilisent beaucoup de CPU). Maintenant j'ai défini des primitives simples : avancer de 250mm, tourner de 60 degrés, ... qui me permettent d'aller d'un point à un autre sans calcul. Cette simplicité me permet d'assurer moi même la régulation des moteurs sans utiliser les fonctions de régulation LEJOS. Dans la foulée j'ai intégré un système de rattrapage de jeu : Quand une roue change de sens on ajoute quelques degrés. Et aussi une accélération et une décélération progressive. Et aussi une télémétrie : Pendant l'exécution les informations sont envoyées au mac pour analyse via bluetooth, une vraie F1
Sur la vidéo le robot passe sur les emplacements des maïs, vivement qu'il ait un bras pour les prendre...
je m'entraine pour être des vôtres l'année prochaine .
Ta base robot a de grandes qualités et notamment sa rigidité qui va lui permettre de supporter le poids (énorme) des objets mais je ne comprends pas le choix de roues placées en diamant, en particulier lorsqu'il y a un plan incliné. Quand tu dis : "Adieu les oranges", tu veux dire que vous avez fait l'impasse définitive sur les oranges ? A propos des roues jockey, je te rappelle ça : http://www.techlug.fr/Forum/post33700.html#p33700. Mine de rien, ça encaisse beaucoup de charge.
Ton système de navigation me parait au point et certainement plus rapide qu'une odométrie classique qui est juste impossible avec si peu d'espace.
Tiens nous au courant. Neuro
Dernière édition par NeuroMimetis le Mer Avr 21, 2010 3:44 pm, édité 2 fois au total.
Vos remarques sont précieuses ! Les moteurs ne forcent pas du tout, l'accélération et le freinage progressifs donnent peut-être cette impression et il y a des à coups dans la transmission. Dans cette version il y a une réduction 12/20T ce qui augmente le couple, la précision, le jeu et les à coups, cela perturbe la régulation. En fonction des résultats en charge je supprimerai ces engrenages.
Pour les temps de latence il faut distinguer 2 choses : - Le parcours de la vidéo passe sur les maïs, le robot s'arrête sur chaque maïs car dans l'avenir ce sera un mouvement particulier pour prendre le maïs. Si le robot fait point vide, maïs, point vide, ... il s'arrête à chaque point. Pour l'instant je ne gère pas la continuité du mouvement avec le point suivant. C'est une évolution à creuser si j'ai le temps. - Quand le robot change de direction il effectue avant de démarrer un rattrapage de jeu (tourner un ou deux moteurs de +/-10 degrés) ce qui impose un arrêt-rotation-arrêt du moteur. Je vais voir aussi pour aller plus vite, là c'était notre premier pas vers des déplacements suffisamment précis. On peut peut-être modifier la stratégie des recalages pour gagner du temps.
Pour les roues en diamant, c'est la seule configuration qui me permet des déplacements précis en odométrie sur les roues motrices. Effectivement nous avons abandonné les oranges bien que ce soit peut-être possible d'attaquer la pente de biais. Merci pour l'idée de la petite roue jockey, je vais en commander rapidement pour les tester.
Il faut prendre en compte que le robot doit être prêt le 22 Mai, cela veut dire qu'il me reste 2 jours pleins pour le finir (et plusieurs soirées) car il n'y a pas que les LEGO dans la vie. Partant de là, on sera très contents si il y a des maïs dans le bac à la fin du match L'objectif de ce robot est de se roder pour la coupe de France l'an prochain, de prendre de l'expérience et de comprendre les difficultés. On prend aussi de l'avance sur la base mobile et la piste.
Les choses ont pas mal avancé depuis la dernière fois. Nous avons optimisé le programme pour les déplacements (moins de latences) mais ce n'est pas encore testé... Maxime m'a donné la mécanique, voici donc la pince 3 axes, les moteurs n'y sont pas : L'ensemble est bien rigide et la méca tourne à merveille, rien ne force. Il y a des butées pour permettre au robot de s'initialiser tout seul. Les plaques sont obligatoires pour les sponsors eurobot. Viens ensuite le collecteur de maïs : Il vient se fixer par 4 pins sur la pince : à droite au bout de la poutre gris foncé et à gauche au bout de la poutre de 5 gris clair. Cette dernière permet d'incliner le tout vers la droite de sorte que les maïs glissent sur les poutres blanches. Les poutres jaunes permettrons de fixer le support de balise. Les deux assemblés : La base mobile :
Il faut maintenant que j'assemble la base mobile avec le reste. Je vais reconstruire la méca avec mes LEGO afin de ne pas mélanger les pièces et d'harmoniser les couleurs. Comme à son habitude, la 8421 va être démontée...