Go Down

Topic: Determiner sa position (Read 1 time) previous topic - next topic

cc3210

Bonjour,

Je suis en train de construire un robot à base d'une carte arduino et je suis confronté à un problème. En effet, je souhaiterais déterminer la position du robot dans l'espace afin d'éviter que celui-ci ne passe toujours au même endroit. L'idée serait de "découvrir" la pièce. Au départ j'ai pensé utiliser une souris optique mais le surface du sol ne s'y prête pas. J'ai vu qu'il existait un capteurs gyroscopique couplé à un accéléromètre qui permettrait de déterminer sa position. Le coût n'est pas donné.

Si vous avez des solutions/idées, je suis preneur.

++

taddot

comme idée, j'ai :
- un suivi "optique" ou "de signal" au sol : faut éviter les croisements, car ça donne parfois des résultats étonnants
- des encodeurs raccordé à de "grosses" roues : ça reprend un peu ton idée de souris, mais avec un modèle "à boule".
- toujours sur le modèle souris : un trackball
- radio : 3 émetteurs mini. Le robot doit évaluer la "puissance" du signal reçu de chaque émetteur. Ensuite, par triangulation, il détermine sa position dans le plan. Inconvénient : faut que ce soit de préférence dans une seule et même pièce
- la version "map" : tu enregistres une sorte de "carte" du local à parcourir, et tu fais en sorte que ton robot parcourt toute la map. Il faudrait pour cela utiliser des servo continu ou des moteurs PaP afin de connaitre exactement la distance parcourue par le robot

Mais il nous faudrait des éléments supplémentaires pour affiner :
- surface à couvrir
- une ou plusieurs pièces ? (la structure des murs peut avoir une importance)
- ton robot, c'est un aspirateur ?

As-tu visité le site de PoBot ?
pas taper... sauf application de l'article 35 ...

Teiva

Bonjour,
Sur les petits robots on utilise souvent des capteurs à ultrasons ou infra-rouge pour "voir devant", tu peux aussi passer au laser pour avoir une vue plus précise, ensuite avec un logiciel (sur pc) tu peux faire la carte.
Les essaies de gyro+accé ne sont pas très concluant. Évidemment la classique odométrie sur les roues ou mieux sur des capteurs indépendant permettant de mesurer les distances parcourus sont un bon moyen de le positionner mais au bout d'un moment on a plus de précision et le robot est dans le flou, il faut le recaler sur une position sure.
Tu trouveras surement plein d'infos utile sur le site de Pobot : www.pobot.org
A+ Teiva


www.Zartronic.fr : Arduino & Robotique

cc3210

tout d'abord merci pour vos réponses.

taddot, je vois que tu as bien cerné mon problème. Effectivement je souhaite construire un robot aspirateur. Donc comme tu t'en doute, l'idée serait que le robot ne couvre pas toujours la même surface pour le nettoyage. Je ne sais pas comment fonctionne exactement les robots du commerce mais je suppose qu'ils ne "scannent" pas la pièce dans leur intégralité. Ils utilisent plus un mode "découverte" / aléatoire.

Pour Teiva, j'ai déjà acheté des capteurs de contact et infrarouge, je pense que cela va m'être utile. Pour le gyro/accéléromètre je pense abandonner l'idée. Sinon j'avais pensé comme toi aux encodeurs sur la roue. Le soucis est que si la roue patine c'est foutu ! 

Good le site pobot !!

++

chicotore

Mon Blog sur l'environnement Arduino ... Tutos fait par un débutant pour les débutants ^^

http://chicowebsite.free.fr/

vincelge

Pour avoir un de ces robots aspirateurs et un laveur (roomba et scooba de chez irobot), je peux te dire que leurs passages sont tout à fait aléatoires: ils "rebondissent" contre les obstacles, avec des angles plus ou moins ouverts à chaque changement de direction. Le scooba (laveur) à en plus une fonction intéressante, appelée régulièrement par le programme: il fait des tours en s'éloignant de plus en plus de son point de départ (des cercles en forme d'escargot) pendant une 30aine de secondes, puis reprend son chemin rectiligne.
Il existe une autre marque de robot aspi dont j'ai oublié le nom, qui scanne la pièce, et passe ensuite une seule fois à chaque endroit, en faisant des lignes bien parallèles.
Les tests que j'avais lus étaient mitigés: il arrive souvent que poussières soient éjectées sur un côté lors du passage de l'aspi, et du coup reste à trainer (il parait que c'est pareil avec un vrai aspi, d'après un témoignage de ma femme  :smiley-mr-green: ).

Avant d'investir dans un roomba, j'avais fait un essai en partant de 0 (pas avec un Arduino à l'époque, mais avec un PIC). Le résultat était peu probant: il est difficile de trouver une turbine efficace consommant peu.
L'efficacité du roomba (car c'est petit, mais TRES efficace) est liée à 2 facteurs:
- il brosse plus qu'il n'aspire: il aspire les poussières et une brosse emmène les plus gros déchets dans le réceptacle
- il a une brosse sur le côté, qui rattrape tout ce qui traine le long des plinthes et des meubles, et ramène tout ça au pied de la brosse principale.

D'autre part, j'avais fait des tests en faisant un petit programme:
sur une surface donnée, un robot faisant des passages parallèles de manière à couvrir 2 fois la pièce (pour être sûr que ce soit bien nettoyé) arrivera à couvrir 3 à 4 fois certains passages avec autant de rebonds pseudo aléatoires (en arrivant sur les obstacles à 45°).

Au fur et à mesure de mes tests peu probants, je me suis rendu à l'évidence: un roomba sur ebay.us me revenait largement à moins cher, et j'avais une maison propre (ce qui était quand même le but de la démarche) et des pièces de rechange à la pelle (voir robotshop par exemple)

Pour ceux que ça intéresse, le roomba a été décortiqué et analysé, et ça a fait l'objet d'un bouquin très bien fait, permettant d'utiliser la plateforme pour en faire autre chose qu'un aspi (caméra sans fil et j'en passe)
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

B@tto

Tu peux te servir de balise pour la localisation, à la manière d'un GPS ou d'un compas, il suffit alors d'une balise (la base par exemple) et d'un compas pour déterminer la position par rapport à la base (enfin la direction en tout cas, car il rest eà voir la distance entre les deux ..)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

cc3210

je vois vincelge que tu es devenu expert en aspirateur  :). Il est vrai que j'aurai mieux à acheter un aspirateur sur ebay mais je me suis lancé un petit défit.

J'ai bien aimé ton idée B@tto, intéressant ... .J'avais plutôt pensé à un système de triangulation mais ton approche me plait bien. Il me reste plus qu'à savoir ,comme tu l'indiques dans ta réponse, à récupérer la distance entre la base et le robot. (par signaux lumineux ?!?)

++

vincelge


je vois vincelge que tu es devenu expert en aspirateur  :). Il est vrai que j'aurai mieux à acheter un aspirateur sur ebay mais je me suis lancé un petit défit.


Je ne vais pas te blâmer: j'avais commencé mon approche de la même manière que toi ... mais au bout d'un moment, ma femme a trouvé mes expériences un peu longues, et les résultats peu probants. Mais même si le résultat n'était pas à la hauteur de nos espérances, on avait pris l'habitude de ne plus trop passer l'aspi et de laisser faire le robot. D'où l'achat du Roomba ensuite ...
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

B@tto

Je sais que sur l'ancien forum on avait discuté de ce système ... mais je retrouve plus le topic !

Signaux lumineux je vois pas trop, il faut soit un signal donc la puissance est proportionnelle à la distance (comme une borne wifi par exemple, plus on est loin moins on capte ...) ou un signal qui "met du temps", ultrasons par exemple. Après il restera toujours le problème des obstacles ... mais la aussi on peut imaginer une astuce du genre : la position est perdue, oui mais je connais mon point de départ, et si je suis motorisé en moteur pas à pas, je peux calculer la distance que je parcoure et dans quelle direction, donc quelque part je suis ma postion ... bref tu vas t'amuser avec la trigonométrie xD
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

fdufnews

Quote
Signaux lumineux je vois pas trop

Triangulation avec plusieurs balises (idéalement 3) suffisamment espacées. Ce qui implique d'avoir une vue sur ces balises en même temps ce qui peut être compliqué dans une pièce où il peut y avoir des obstacles.
Le balayage systématique bande par bande d'une surface est relativement utopique. Il y a toujours dans une pièce des obstacles (chaise, fauteuil, tables, jouet qui traine, etc) et l'aspirateur du coup fait des écarts. La profusion d'objets susceptibles de bloquer l'aspirateur dans une pièce ne permet pas d'en faire une cartographie fidèle.
Lorsqu'on regarde un de ces aspirateurs qui lors des évitements fait des angles aléatoires on a l'impression que la surface ne sera pas complètement nettoyée mais au bout du compte c'est très efficace.

cc3210

Finalement j'ai l'impression qu'avec un mode aléatoire on peut arriver à couvrir une surface suffisante. Je vais continuer de réfléchir et regarder ce qui se fait sur d'autres sites.

taddot

regarde à nouveau mon premier post, avec la solution de balises radio couplé à la solution "map" ...
pas taper... sauf application de l'article 35 ...

Go Up