jeudi 3 septembre 2009

MOC : Robot nettoyeur de Table V2

Ce modèle m'a servi d'entraînement et est basé sur le règlement du concours de robotique Fribot (voir l'article ici).
C'est à dire :
- Qu'il se limite aux pièces du kit mindstorm éducation réf. 9797 (431 pièces seulement).
- Que le programme est écrit en LEJOS (langage JAVA adapté au NXT).


Souvenez-vous de mon premier robot nettoyeur de table en Novembre 2007 (voir ici).

Voici le nouveau en vidéo :



Aujourd'hui mon robot est capable de prendre les objets et de les déposer tous au même endroit. Il sait s'approcher avec précision devant l'objet, pour cela il détecte entièrement l'objet avec le capteur US. Il mesure la largeur de l'objet puis se centre sur celui-ci, enfin il s'approche doucement afin de le prendre.
La pince utilise un seul moteur pour prendre l'objet et le lever. N'étant pas un as en systèmes de leviers j'ai fais avec des engrenages. Il y a un rapport de 3 (8T/24T) entre le mouvement de serrage et le mouvement de levage ainsi l'objet est bien serré.

Nous avons travaillé sur le forum SETECHNIC à améliorer la précision des déplacements du robot afin de pouvoir naviguer "à l'aveugle" dans un espace connu. Ces améliorations sont principalement :
- Abaisser le centre de gravité
- Centrer le centre de gravité au milieu de l'essieu moteur
- Ne pas utiliser de roue jockey mais des "pieds" frotteurs ou des roues fixes sans pneus.

Ce robot est donc prévu pour fonctionner sur cette table et les zones de détections d'objets sont définies à l'avance. De même sa position de départ n'est pas modifiable.

Afin de ne pas être perturbé le capteur US est fixé à l'avant du robot, aucune autre pièce ne viens devant lui, ni dessus ni dessous. La pince doit alors être placée à l'arrière.









Enfin une petite vidéo pour illustrer la détection d'objets, j'ai mis une LED à la place du moteur A qui s'allume quand le capteur US voit un objet.
Si l'objet est suffisamment large (6 degrés de rotation du robot) alors le robot se cale dessus.
On voit aussi que le même objet est détecté plusieurs fois.
Le deuxième gobelet m'a posé des problèmes car à cet endroit l'angle de rotation du robot passe de +180° à -180°. J'ai du ajouté un calcul pour mesurer la largeur de l'objet.




Voici le source du programme pour le cycle complet : Programme du robot
(édité car le source dans l'article était erroné).

2 commentaires:

  1. Tout ce trajet en dead-reckonning? impressionnant ! Même pas de detection du bord de table... t'as jamais fait le plongeon ? ;o)

    Philo

    RépondreSupprimer
  2. Salut,
    C'est super fiable comme méthode, plus que la détection du bord en fait ! Enfin comme je le dis il faut travailler la précision sur le robot et bien étalonner les valeurs initiales (diamètre de roue et voie).

    RépondreSupprimer

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.