[Maximus] Un empileur de pions !
#1
Posté 15 décembre 2010 - 04:12
Etant donné que je vois que des gens commencent à parler de Maximus sur d'autres threads, je crée ce thread histoire de pas polluer celui des autres ^^
Donc me voila avec un nouveau projet (enfin ça fait deux mois que je travail dessus ;) ) !
Le but de ce robot est de participer à la coupe Eurobot2011 (uniquement la coupe de France etant donné que seuls les 3 premiers participent à la coupe européenne).
Une partie dure 1min30, le robot doit être autonome et capable de déplacer des pions sur les cases de sa couleur ainsi que d'empiler les pions. (le règlement se trouve ici : Règlement ).
J'ai donc commencé par faire la partie déplacement du robot, et c'est pratiquement terminé.
L'électronique de la partie déplacement se compose de 2 "cartes" de contrôle :
- Une carte RoboClaw qui fait un asservissement en vitesse (PID) sur les moteurs
- Un ATmega162 qui fait le calcul de position et l'asservissement en position (PD) du robot
Voici un schéma illustrant l'asservissement (pas très compréhensible pour quelqu'un qui n'aurait jamais fait d'automatique je pense ^^)
J'ai aussi mis en place un module ROS (Robot Operating System) permettant de récupérer les informations du robot et de les afficher sur un environnement graphique, ce qui permet de le débugger plus facilement.
Ce robot finira surement comme robot personnel autonome se baladant dans mon appart, mais ça sera sa 2ème vie ca ^^
Maintenant il faut que je m'attaque à la mécanique et à la préhension des pions.
Mon site web qui sert de fil rouge à ce projet :
Le blog du robot Maximus
Et voici une première vidéo de l'interface graphique et du robot :
J'ai ensuite fait un premier prototype de base mécanique pour le robot qui permet uniquement de prendre des pions et de les déplacer, il ne peut pas encore les empiler.
Je n'ai pas encore eut l'occasion de tester le bon fonctionnement de la chose, il me manque encore des composants et surtout il faut que je code un "cerveau" au robot pour qu'il cherche les pions et les attrape.
Au passage, j'ai implémenté l'asservissement que j'avais fait sur une carte arduinoMega pour permettre la réutilisation facile du code par un peu n'importe qui. Le code est disponible ICI. Il y a eut pas mal de modifications à faire pour que ca marche sur l'arduino mais bon, maintenant ca semble fonctionner (sauf qu'il faut que je change mes constantes de PID étant donné que la fréquence des timers a changé !).
Voici maintenant une petite vidéo du robot en autonome. Ce test est surtout fait pour l'homologation et un début de match. Le but est de prendre un pion est d'aller le mettre directement en zone protégée pour s'assurer 10 points à tous les matchs.
Ensuite une petite vidéo ou le robot est en mode "dés que tu trouve un pion, tu le mets sur une case bleu (y a juste B sur les cases :p)":
J'ai ensuite recu les arduinos que j'avais commandées.
Du coup, j'ai pu créer divers modules séparés (Un module assevissement deja fait, un module A.I., un module LCD pour choisir la couleur de départ). J'ai aussi créé un petit module pour allumer et eteindre le robot et qui possede aussi un arret d'urgence obligatoire pour la coupe.
Au passage j'ai fais une nouvelle version de la mécanique, permettant d'ajouter des étages facilement.
Une petite vidéo du LCD et de l'arret d'urgence :
Etant donné que j'ai grillé la carte de contrôle des moteurs de propulsion, j'ai installé la courroie qui va permettre de faire monter et descendre les pions. C'est beaucoup plus rapide que la technique de la tige filetée que j'avais testé précédemment.
Une petite vidéo
Voici l'ancien test que j'avais fait avec une tige filetée.
Pour guider l'elevateur, je me suis tourné vers les coulisses à bille de tirroir. C’est une solution pas chère et plutot efficace pour faire uniquement un mouvement rectiligne.
J’ai donc commencé a bricoler un peu le robot pour pouvoir lui mettre ses deux glissieres :
Il fallait ensuite un moyen d’attacher la pince à la courroie. J’ai décidé de faire un petit systeme de fixation avec 2 vis qui vont venir pincer la courroie et ainsi fixer le portique à la courroie :
Et voici une première vidéo du fonctionnement. Ce n’est pas encore tout à fait au point mais ça devrait plutot bien marcher en bidouillant un peu :
=> La vidéo <=
Fiouuu, ça a été beaucoup plus long que prévu !
J'ai fais une petite pause robotique, du coup j'ai pris du retard.
Voici les nouvelles :
J'ai fais une nouvelle base mécanique pour les roues et l'ascenseur.
Face Avant :
Face Arrière (il y aura les cartes électronique dessus) :
Cette fois c'est une base tout en métal donc ça sera la dernière version.
L'ascenseur est fait toujours avec les glissières de tiroir. On peut les voir sur cette image :
Il y a de petit micro-rupteur en haut et en bas pour arrêter automatiquement l'ascenseur :
La vidéo de test.
Ensuite, j'ai rajouté des encodeurs séparé des roues motrice pour permettre de se positionner même si les roues motrices dérapent.
Bon, après une petite aprem à installer l'électronique, j'ai pu avancer un peu.
C'est un bon gros tas de cable mais bon c'est ça qu'on aime ! :D
J'avais déjà mis une p'tite image sur les asservissements que je fais sur ce robot mais je vais reprendre ici ;)
Comme on peut le voir, il y a un double asservissement:
- A droite : un PID en vitesse pour chaque moteur qui est fait par la carte RoboClaw
- A gauche : un asservissement polaire PD fait par une arduino
L'asservissement polaire consiste à asservir l'angle et la distance du robot.
En fait on asservit 2 moteurs virtuel, un qui représente la distance ( = (distance_gauche + distance_droite) / 2 ) et un qui représente l'angle ( = distance_droite - distance_gauche).
Aprés ça reste des PID et PD basique donc il faut régler les gains et c'est chiant :p
Lien d'une petite vidéo de test faite ce soir ;)
Bon, pour ce qui est de l'estimation de position c'est pas encore ça, je cherche pourquoi c'est si peu précis :s
Une grande partie de la théorie peut etre trouvé ici : Lien
Voici une petite vidéo de l'estimation de position. ca marche plutot pas mal. Je lui fais faire des rectangle pour voir si il sait toujours ou il est, et il n'y a pas trop de déviation.
La vidéo de démo.
Voila, c'est tout pour le moment, j'updaterais au fur et à mesure que je progresse ;)
#5
Posté 15 décembre 2010 - 05:12
Dis moi, à part baver sur ce que tu as déjà fait et te dire que j'aime beaucoup l'asservissement des moteurs avec les boucles de régulation, j'ai une question. Comment est-ce qu'il repère les cases "bleues" ? Il fait la différence entre le R et le B ou bien il compte assez bien pour savoir où il est à chaque instant et où se trouvent les cases et donc les déplacements à faire ?
#6
Posté 16 décembre 2010 - 09:53
C'est d'ailleurs grace au fait qu'il connaisse en permanence sa position que je peux le visualiser sur l'interface graphique.
#9
Posté 05 janvier 2011 - 11:12
Etant donné que j'ai grillé la carte de contrôle des moteurs de propulsion, j'ai installé la courroie qui va permettre de faire monter et descendre les pions. C'est beaucoup plus rapide que la technique de la tige filetée que j'avais testé précédemment.
Une petite vidéo
Voici l'ancien test que j'avais fait avec une tige filetée.
#10
Posté 06 janvier 2011 - 02:20
Je n'ai pas compris comment mécaniquement tu comptes t'y prendre pour faire monter les pions avec la courroie?
J'ai lu les articles de ton site avec attention, et je dois dire que ça m'impressionne pas mal!
La carte que tu as grillé c'est un Shield Arduino?
Bon courage et bonne continuation en tout cas!
P.S.: le bouton d'arrêt d'urgence c'est vraiment trop la classe, ça me fait rêver :p
#11
Posté 06 janvier 2011 - 02:33
Je n'ai pas compris comment mécaniquement tu comptes t'y prendre pour faire monter les pions avec la courroie?[/quote]
Ben je vais fixer une "pince" a la courroie et lorsque j'attrappe un pion, je le monte. :p
[quote"MrAlexis44600"]
La carte que tu as grillé c'est un Shield Arduino?[/quote]
Non c'est une carte indépendante qui permet de piloter les moteurs de 10A avec des encodeurs.
[quote"MrAlexis44600"]
P.S.: le bouton d'arrêt d'urgence c'est vraiment trop la classe, ça me fait rêver :p [/quote]
C'est important d'avoir un arret d'urgence quand on fait un robot lol.
#12
Posté 12 janvier 2011 - 10:13
Pour guider l'elevateur, je me suis tourné vers les coulisses à bille de tirroir. C’est une solution pas chère et plutot efficace pour faire uniquement un mouvement rectiligne.
J’ai donc commencé a bricoler un peu le robot pour pouvoir lui mettre ses deux glissieres :
Il fallait ensuite un moyen d’attacher la pince à la courroie. J’ai décidé de faire un petit systeme de fixation avec 2 vis qui vont venir pincer la courroie et ainsi fixer le portique à la courroie :
Et voici une première vidéo du fonctionnement. Ce n’est pas encore tout à fait au point mais ça devrait plutot bien marcher en bidouillant un peu :
=> La vidéo <=
#13
Posté 12 janvier 2011 - 11:31
Ben je vais fixer une "pince" a la courroie et lorsque j'attrappe un pion, je le monte. :p
OK je comprend nettement mieux avec la vidéo maintenant ;)
en regardant les première vidéos, j'avais imaginé en faite, un système de vis sans fin + écrous ( a la maniéré de cette photo )
(oui je sais j'ai trop d'imagination :tare: )
ps : mécaniquement ça a l'aire de coincer un peu au niveau de tes glissière de tiroir
en tous cas bon boulot !!!
#14
Posté 12 janvier 2011 - 01:11
J'avais fais un ptit test.
#15
Posté 12 janvier 2011 - 01:56
Mais dis-moi, j'ai l'impression que tes "coulisses à billes" vibrent pas mal ? Tu as déjà envisagé une solution pour ça ? J'imagine que mettre une structure qui les rendrait solidaire l'un de l'autre pourrait les stabiliser un peu, non?
#16
Posté 12 janvier 2011 - 02:17
Je vais aussi refaire la pince je pense.
Toute idée est d'ailleurs la bienvenue :D
#17
Posté 12 janvier 2011 - 07:44
Les pions que tu dois saisir sont circulaire comme le bout de tuyau en PVC que tu utilises dans une vidéo j'imagine ?
Peut-être prévoir des pinces plus larges et avec des anti-antidérapants ? (genre des carrés de caoutchouc collé sur la pince...)
#18
Posté 05 mars 2011 - 12:31
J'ai fais une petite pause robotique, du coup j'ai pris du retard.
Voici les nouvelles :
J'ai fais une nouvelle base mécanique pour les roues et l'ascenseur.
Face Avant :
Face Arrière (il y aura les cartes électronique dessus) :
Cette fois c'est une base tout en métal donc ça sera la dernière version.
L'ascenseur est fait toujours avec les glissières de tiroir. On peut les voir sur cette image :
Il y a de petit micro-rupteur en haut et en bas pour arrêter automatiquement l'ascenseur :
La vidéo de test.
Ensuite, j'ai rajouté des encodeurs séparé des roues motrice pour permettre de se positionner même si les roues motrices dérapent.
Voila en gros les news !
Objectif du week-end, tester les roues codeuses et le positionnement.
#20
Posté 05 mars 2011 - 05:39
C'est cool tout ça dit-moi ! C'est propre, ça brille, ça marche nickel. Rien à dire ! ;)
On attend patiemment la suite.
Et dis-moi, tu fais un PID sur tes moteurs pour tes déplacements ? Si oui, tu penses que tu pourrais détailler un peu ? Ou me donner quelques pistes/documents/liens ? :)
Répondre à ce sujet
2 utilisateur(s) li(sen)t ce sujet
0 members, 2 guests, 0 anonymous users