[EXERCICE 3] Détecter des objets

Faites vos preuves !

Messagepar semtou » Ven Mar 06, 2009 11:33 am

Alban42800 a écrit:Niveau de difficulté : moyen 8)

- OBJECTIF : Faire un robot mobile autonome capable de trouver des objets et de s'en approcher.
Le robot évolue dans une zone définie et délimitée (au choix, murs, bords de table, le chat qui dort...) d'au moins 1mx1.5m.
Le robot doit trouver des objets variés d'environ 5cm.
Le robot doit approcher les objets et s'arrêter juste devant, ensuite il peut faire une action dessus (prendre, pousser, boire un coup, ...)
Le robot doit trouver tous les objets dans la zone.

- CONTRAINTE : Réalisé uniquement avec des pièces LEGO.

- PROGRAMMATION : Pas de contraintes sur le langage utilisé.






roboleo a écrit:Le capteur US est là pour surveiller la proximité d'un mur ou d'un gros objet en arrière plan.
Il est sans effet pour cet exercice.

ha ok c'est pas évident avec le capteur ultra-son de faire de la détection pour le gobelet. J'ai fais plusieurs réglages avant d'arrivé à lui faire détecter le gobelet. Tous les objets ronds posent problèmes (sauf les plus gros qui renvoi mieux les US). j'ai essayé de faire un programme qui permette de différencier un mur d'un objet mais c'est pas si facile. peut-être y arriverai-je en java ?!
Voici le programme qui est utilisé sur la vidéo que j'ai posté précédemment. j'ai mis un maximum de commentaires. Dites moi se que vous en pensé.
Image
Image
Image
A +
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU
Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 587
Localisation: Toulouse
Âge: 41 ans

Messagepar Alban42800 » Ven Mar 06, 2009 12:35 pm

ça marche ton prog ?
Moi j'ai déjà essayé et cela pose un problème :
quand tu détecte un objet au capteur US tu ne stoppe pas pile en face, du coup tu avance dans la mauvaise direction. --> à approfondir.
édité...
Dernière édition par Alban42800 le Ven Mar 06, 2009 5:48 pm, édité 1 fois au total.
Le bouton "Aperçu" permet de vérifier son message avant de l'envoyer.
Avatar de l’utilisateur
Alban42800
Modérateur
Modérateur
 
Messages: 1648
Localisation: Loire (42)
Âge: 37 ans

Messagepar Anio » Ven Mar 06, 2009 1:48 pm

Exact. Alban a entièrement raison. :)
Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 8687
Localisation: Lyon
Âge: 23 ans

Messagepar semtou » Ven Mar 06, 2009 3:08 pm

On est complétement HS, j'avais proposé un exercice concernant l'approche d'un objet ! :
Moyen : :/
3- le robot motorisé trouve un objet à moins de 1 mètre et s'approche jusqu'à toucher l'objet.
Donc si tu veux tu peux ouvrir le topik et travailler sur ce problème d'approche.

Oui je me souviens pour l'exercice mais je suis sur le déplacement avec la trigo... alors je pense que je vais d'abord finir de comprendre comment faire des approches avec les points de référence et après je passerai à la localisation d'objets. (j'ai pas encore utilisé les capteurs en java) :jaune:
Je pense que la stratégie la plus sûre c'est : 1) faire une approche à l'aide des coordonnées, 2) faire une localisation de l'objet, 3) agir sur l'objet. Dans le cas ou l'on connait la position de l'objectif. Ya aussi le fait que je ne connais pas bien les capacités en terme de précision du NXT avec les fonctions TachoNavigator...
ça sera pour plus tard. :fume:

Voila ce que j'arrive à faire en NXT-G :

MAIS C'est un autre sujet.
"Ce qui se conçoit bien s’énonce clairement et les mots pour le dire viennent aisément..." Nicolas Boileau-Despreaux
Mon blog = http://semtou.skyrock.com/
Ma galerie photos = http://www.brickshelf.com/cgi-bin/gallery.cgi?m=SEMTOU
Avatar de l’utilisateur
semtou
Level 7
Level 7
 
Messages: 587
Localisation: Toulouse
Âge: 41 ans

Messagepar Anio » Ven Mar 06, 2009 3:25 pm

Bah on vient de dire que ca concerne un autre exo. :/
Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 8687
Localisation: Lyon
Âge: 23 ans

Messagepar roboleo » Ven Mar 06, 2009 4:12 pm

semtou a écrit:ha ok c'est pas évident avec le capteur ultra-son de faire de la détection pour le gobelet. J'ai fais plusieurs réglages avant d'arrivé à lui faire détecter le gobelet. Tous les objets ronds posent problèmes (sauf les plus gros qui renvoi mieux les US). j'ai essayé de faire un programme qui permette de différencier un mur d'un objet mais c'est pas si facile. peut-être y arriverai-je en java ?!
A +

Eh Semtou, doucement…! Tu vas trop vite, pense à ceux qui s'interrogent pour l'acquisition du # 8527. Tu va les écœurer. :cry:
Toujours simple pour les débutants, pour les encourager à persévérer.
On verra tous ces problèmes dans d'autres exercices. Je réponds en partie à toutes ces questions.
En effet, les objets ronds sont difficiles à détecter avec le capteur US. Une méthode consiste à balayer l'espace devant, pour déterminer le point de déclenchement (on peut aussi utiliser les plages de distance - objet compris entre 20 et 40 cm par ex.-). On fait 2 mesures, une à droite et l'autre à gauche de l'objet, et on prend la moyenne. Cette moyenne permet également de diriger le robot vers la bonne direction.
Je n'ai pas encore examiné ton programme NXT-G, à voir dès que possible.

Anio a raison, évitons de nous disperser.
Je sais, je sais… quand l'imagination bouillonne, impossible de la retenir! ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso
Avatar de l’utilisateur
roboleo
Level 7
Level 7
 
Messages: 730
Localisation: Hauts de Seine

Messagepar Alban42800 » Ven Mar 06, 2009 4:20 pm

Niveau de difficulté : moyen 8)

- OBJECTIF : Faire un robot mobile autonome capable de trouver des objets et de s'en approcher.
Le robot évolue dans une zone définie et délimitée (au choix, murs, bords de table, le chat qui dort...) d'au moins 1mx1.5m.
Le robot doit trouver des objets variés d'environ 5cm.
Le robot doit approcher les objets et s'arrêter juste devant, ensuite il peut faire une action dessus (prendre, pousser, boire un coup, ...)
Le robot doit trouver tous les objets dans la zone.

- CONTRAINTE : Réalisé uniquement avec des pièces LEGO.

- PROGRAMMATION : Pas de contraintes sur le langage utilisé.
Le bouton "Aperçu" permet de vérifier son message avant de l'envoyer.
Avatar de l’utilisateur
Alban42800
Modérateur
Modérateur
 
Messages: 1648
Localisation: Loire (42)
Âge: 37 ans

Messagepar Anio » Ven Mar 06, 2009 4:39 pm

Bon, voilà, j'ai déplacé les sujets dans un nouveau topic, à la demande d'Alban. C'est un peu le souc, mais bon, on s'y retrouve. Tout cela pour souligner l'importance de se tenir à l'exercice défini. ;)
Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 8687
Localisation: Lyon
Âge: 23 ans

Messagepar roboleo » Jeu Mar 12, 2009 3:01 pm

Alban42800 a écrit:ça marche ton prog ?
Moi j'ai déjà essayé et cela pose un problème :
quand tu détecte un objet au capteur US tu ne stoppe pas pile en face, du coup tu avance dans la mauvaise direction. --> à approfondir.
édité...

Voilà un programme qui devrait résoudre ce problème.
Image>>>
>>>Image>>>
>>>Image

( Anio, une découpe stp…!)
Il faut un robot avec un capteur US le plus bas possible. Je ferai une vidéo plus tard.
Là aussi, un problème de frottement, le plus difficile à résoudre. :pamafote:
;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso
Avatar de l’utilisateur
roboleo
Level 7
Level 7
 
Messages: 730
Localisation: Hauts de Seine

Messagepar Alban42800 » Jeu Mar 12, 2009 4:21 pm

Yep,
J'ai eu une mauvaise expérience mais j'avais de grandes roues et le robot tournait trop vite sur lui même. D'ou mon doute sur le fonctionenment du robot de semtou.
Pour ton programme Roboléo : Fonctionne-t-il bien ? dans la théorie c'est super de mesurer la largeur de l'objet pour se centrer dessus. Super aussi de s'approcher jusqu'a 15cm.
Dans la pratique j'ai eu des difficultés, à voir en fonction du capteur et du langage utilisé ... Car le capteur US ne renvoyait pas un beau signal avec la distance mesurée mais un signal haché avec une fois sur deux une valeur faussée (en général une distance plus grande que la réalité).
Dans ces conditions il est difficile de mesurer la largeur de l'objet et aussi de s'approcher car le robot est foutu de pas voir l'objet et de rentrer dedans ! Il faudrait avancer en zigzag pour bien scanner l'objet :think:
D'une manière générale il faudrait filtrer les mesures du capteur pour avoir des valeurs fiables.

J'attend impatiemment tes résultats. Je vais m'y mettre aussi bientôt.
Le bouton "Aperçu" permet de vérifier son message avant de l'envoyer.
Avatar de l’utilisateur
Alban42800
Modérateur
Modérateur
 
Messages: 1648
Localisation: Loire (42)
Âge: 37 ans

Messagepar Anio » Jeu Mar 12, 2009 5:15 pm

C'est bon, j'ai divisé la photo en 3.
Pour le faire, il faut tout bêtement recadrer 3 fois la photo (en recadrant là où tu veux couper).
Evite aussi si possible les photo en .png.

:)
Avatar de l’utilisateur
Anio
Administrateur
Administrateur
 
Messages: 8687
Localisation: Lyon
Âge: 23 ans

Messagepar roboleo » Ven Mar 13, 2009 10:45 am

Anio a écrit:C'est bon, j'ai divisé la photo en 3.
Pour le faire, il faut tout bêtement recadrer 3 fois la photo (en recadrant là où tu veux couper).
Evite aussi si possible les photo en .png.

:)

OK pour moi et excuses pour le format, j'ai oublié de convertir le png en jpg. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso
Avatar de l’utilisateur
roboleo
Level 7
Level 7
 
Messages: 730
Localisation: Hauts de Seine

Messagepar roboleo » Ven Mar 13, 2009 10:58 am

Alban42800 a écrit:Pour ton programme Roboléo : Fonctionne-t-il bien ? dans la théorie c'est super de mesurer la largeur de l'objet pour se centrer dessus. Super aussi de s'approcher jusqu'a 15cm.

J'attend impatiemment tes résultats. Je vais m'y mettre aussi bientôt.

Oui, le programme fonctionne bien. Pour la précision, tu as attiré mon attention; je vais faire des mesures et je ferai part des résultats. J'ai noté pour l'instant que la forme de la cible et la nature du sol sont déterminants. A suivre…

PS: je vais essayer de mettre en ligne les programmes NXT-G en .rbt pour un usage plus facile. Toutefois, l'écrire soi-même permet une meilleure compréhension. ;)
A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso
Avatar de l’utilisateur
roboleo
Level 7
Level 7
 
Messages: 730
Localisation: Hauts de Seine

Messagepar roboleo » Ven Mar 13, 2009 12:55 pm

Anio a écrit:C'est bon, j'ai divisé la photo en 3.
Pour le faire, il faut tout bêtement recadrer 3 fois la photo (en recadrant là où tu veux couper).
Evite aussi si possible les photo en .png.

:)

OK pour moi et excuses pour le format, j'ai oublié de convertir le png en jpg. ;)
Alban42800 a écrit:Pour ton programme Roboléo : Fonctionne-t-il bien ? dans la théorie c'est super de mesurer la largeur de l'objet pour se centrer dessus. Super aussi de s'approcher jusqu'a 15cm.

J'attend impatiemment tes résultats. Je vais m'y mettre aussi bientôt.

Oui, le programme fonctionne bien. Pour la précision, tu as attiré mon attention; je vais faire des mesures et je ferai part des résultats. J'ai noté pour l'instant que la forme de la cible et la nature du sol sont déterminants. A suivre…

PS: je vais essayer de mettre en ligne les programmes NXT-G en .rbt pour un usage plus facile. Toutefois, l'écrire soi-même permet une meilleure compréhension. ;)

Edit :

Pour télécharger le programme:
http://files.me.com/roboleo/mf24nl
;)

Une vidéo qui concerne aussi l' exercice n°2 pour la précision des déplacements.

A+
Roboleo
" Je ne cherche pas, je trouve…" P. Picasso
Avatar de l’utilisateur
roboleo
Level 7
Level 7
 
Messages: 730
Localisation: Hauts de Seine

Messagepar Alban42800 » Ven Mar 20, 2009 5:09 pm

J'ai fais un programme java reprennant le concept de roboléo : détecter les bords de l'objet pour se centrer dessus.
Les premiers résultats sont moyens, en prenant une faible vitesse j'arrive à trouver les bords et le robot revient mais pas au centre de l'objet.
Le programme :
le robot tourne sur lui même
il attend un objet et note l'angle --> angle1
il attend la fin de l'objet et note l'angle --> angle2
arrêt de la rotation
le robot s'oriente à (angle1 + (angle2-angle1)/2) soit entre angle1 et angle2.

Avec le recul j'ai compris que cela est du au jeu des moteurs car quand le robot se positionne il pivote dans le sens inverse de la détection.
Donc j'ai modifié la fin du programme pour que le robot se positionne en tournant dans le même sens qu'à la détection :
arrêt de la rotation
le robot s'oriente à angle1
le robot s'oriente à (angle1 + (angle2-angle1)/2) soit entre angle1 et angle2.

Voilà ou j'en suis.
Quelques pièges :
- J'utilise l'option "immediatereturn" des fonctions "travel" et "rotateTo" qui permet de continuer le programme pendant le déplacement du robot. --> Il faut absolument faire un "updatePosition" après sinon le robot perd son origine.
- Quand les piles sont faibles le capteur US ne voit quasiment plus rien.
Le bouton "Aperçu" permet de vérifier son message avant de l'envoyer.
Avatar de l’utilisateur
Alban42800
Modérateur
Modérateur
 
Messages: 1648
Localisation: Loire (42)
Âge: 37 ans


Retourner vers Les exercices et les concours SeTechnic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 0 invités