Guidage a l'aide d'arduino

Bonjour à tous,

Je débute en arduino et j'ai besoin d'un petit boost pour avancer sur un petit projet, le cahier des charges est le suivant :

  • Permettre a une base roulante (robot) de connaitre sa position sur un plan.
  • Méthode par ultrason, laser, GPS (en posant nous même la triangulation qui représente les satellites), accéleromètre et gyro, ou autres méthodes.
  • Une fois la position connue se diriger vers un point donné.

Je voulais donc savoir quelle méthode serait plus facile à mettre en place et comment la mettre en place, ainsi que le matos (du genre un micro et 3 récepteurs pour l'ultrason ?)

je possède une carte UNO et une DUE, Je n'ai rien d'autres mais je peux acheter :wink:

Merci pour vaitre aide et vos réponse ! (si vous avez des questions n'hésitez pas)

Bonjour,

Voici mon avis:

  • GPS: si tu es à l'intérieur, c'est mort. Et si tu es dehors, pareil, sauf si 1 m de précision te suffit
  • Ultrason, laser: tu es dépendant des murs qui vont encadrer ta scène et surtout, tu dois connaître leur position. Pas pratique pour se déplacer dans un environnement inconnu
  • accéléromètre et gyro: tu vas avoir besoin de d'intégrer respectivement 2 fois une accélération et une fois une vitesse de rotation. Si tu ne veux pas exploser le budget, les accéléros/gyros que tu trouveras ne sont pas assez précis et l'intégration (ou double intégration) des offsets, bruits et compagnie vont donner très rapidement des positions très fantaisistes

Selon moi, la meilleure solution est d'utiliser des moteurs avec des codeurs incrémentaux suffisamment précis pour que, à partir du comptage de la fraction du nombre de tours de roues effectués, le robot puisse connaître sa position.
J'ai développé un robot qui est capable de connaître sa position par ce moyen et c'est vraiment très précis. Le codeur génère 1632 impulsions par tour de roue, les roues font 9 cm de diamètre, je te laisse calculer la résolution angulaire et longitudinale sur la position.
Ensuite, quand tu connaîs la position du robot et que tu veux l'envoyer à un endroit donné, il faut faire un asservissement de position. Sur mon robot, ça marche pas mal du tout. Si l'asservissement est bon, tu peux obtenir un positionnement au cm près et au degré près.

Au fait, tu as déjà le robot ? Parce que s'il n'y a pas de codeur sur les moteurs, c'est cuit. A moins de changer de moteur ou de rajouter des codeurs.

L'odométrie marche bien sur sol non glissant.
Un moteur sans codeur se transforme avec une roue codeuses à encoches et une petite fourche optique, on peut éventuellement utiliser aussi des moteurs pas à pas.
Si besoin, il peut y a voir un point de repère (un angle par ex.) sur lequel le robot vient se recaler périodiquement.

Bonjour,

Merci de vos réponses, le problème c'est que l'odomètrie le robot ne connaît pas sa position initiale il croit la connaître
On travail déjà sur l'odometrie :wink:
Moi j'aimerais faire une méthode qui permettrait de connaître la véritable position actuelle a tout moment. Donc je connais l'environnement et je peux placé des balises sur les coins. Le déplacement se fait dans un rectangle d'environ 3m sur 5m.
Pour le GPS on pourrait pas placé nos bases gps dans les quatres coins de la salle ?
J'ajoute que le budget n'est pas vraiment limité

Merci encore

Je doute qu'avec du GPS tu puisses avoir une précision au centimètre. Normalement c'est au mètre, dans le meilleur des cas.
Mais bon, je n'ai jamais fait de test, si quelqu'un a des billes pour me contredire, je suis preneur.

A part ça, dans le principe, tu pourrais encadrer ton rectangle par des "murs" et mettre 4 capteurs ultrasons (ou autre technologie qui mesure la distance) à 90° les uns des autres sur le robot. Ca devrait te permettre une première localisation du robot, mais tu auras alors 4 possibilités. Pour ne retenir que la bonne, tu peux rajouter une boussole.

Avec tout ça (odométrie, capteurs US et boussole), c'est pas mal blindé !
Tu dis déjà travailler sur l'odométrie: ça ne fonctionne pas ?

Bonjour

  • Comme balise un niveau laser genre BOSCH PLL360 on a ainsi un rayon laser qui balaie un plan horizontal.
  • Sur le robot un détecteur (phototransistor) monté sur un axe vertical pouvant tourner sur +- 360°.
    Il y a une phase d'apprentissage : le robot détecte le rayon laser, il connaît l'angle par rapport à son axe avant-arrière, il tourne sur lui-même pour que cet axe soit perpendiculaire au rayon (pas obligatoire mais ça aide). Il avance d'une certaine distance précise (1 m par ex. Il mesure l'angle de nouveau. Connaissant les deux angles et la distance parcourue, il peut calculer la position de la balise et sa propre position.
    A+

L'odomètrie fonctionne mais si le robot est mal placé au début, il fera le trajet mais décalé... Du coup en connaissant les vrais coordonnée il pourrait faire le bon trajet.
Je vais réfléchir a vos solutions le ultrason semble plus simple a mettre en place, il suffit de mettre 4 émetteurs et 4 récepteurs c'est ça ? Merci

En général, c'est un groupement emetteur/récepteur qui est vendu.
Pense aussi à la boussole, sinon tu ne connaîtra pas son orientation.

Bonjour

  • Utiliser deux balises, commandées par le robot par radio, il allume la première balise, calcule sa position par rapport à elle, l'éteint, allume la seconde, calcule sa position par rapport à cette balise. en connaissant la position des deux balises, il peut calculer sa position réelle. Il me semble que le laser est plus précis que les ultrasons.
    A+

Bonjour,
Peut être une proposition "idiote" mais à défaut cela fera avancer le "chim....".
Je me rappelle des chasses aux trésors à la gonio.
Mettre en place 2 ou 3 émetteurs HF et un récepteur sur le mobile. le récepteur cherche les différents max de signal avec repérage d'angles.
Si l'on connaît l'implantation des émetteurs le tout se réduit à de la trigonométrie.
Pas sur la tête.
@+

Je suis pas sur qu'il faille une boussole, si on a 3 émetteurs/récepteurs, et a quel distance vient le signal, il connait sa position exact non ?
iCare ton système est le même que le notre avec des HF nan :stuck_out_tongue: ?

Re,
3 émetteurs donc 3 angles alors une position unique (pas besoin d'autres dispositif de positionnement).
A partir de plusieurs positions, on a la direction du déplacement, l'angle de déplacement et même la vitesse de déplacement.
@+
[edit] On ressort les cours sur les coordonnées polaires au minimum.

Bonjour
Deux émetteurs suffisent si on connaît la distance entre eux deux et même sans la connaître.
A+
A+

Minicarpet:
...Le déplacement se fait dans un rectangle d'environ 3m sur 5m.

Merci encore

bonsoir
là deplacement sur une surface delimitée par 3/5m c'est déjà AMHA plus realisable "facilement" que dans un topic recent.

Perso et pour une premiere reflexion, je partirais sur une option inverse
je mettrais sur le robot un niveau laser avec une optique ligne verticale (il en existe des petits pas cher avec une portée acceptable là) en rotation continue, avec un encodeur de position (quadrature + top zero)
et je mettrais aux angles de la zone 4 balises recepteurs optiques (avec un champ pas trop fermé, genre BPW34)
les balises renvoyant vers le robot l'info de stimuli (balise 1.2.3.4 touchée) .
Comme d'hab, meme si c'est simple sur le papier, la realité sera peut etre moins "droles" 8)

Bonsoir
Tout dépend également de la puissance de calcul du pc à bord du robot (Arduino ?), mais en utilisant le principe dans ma réponse #5 sur deux balises comme en #8, le robot peut naviguer facilement dans un rectangle de 3 x 5 m. mais il faudrait également savoir comment est délimitée cette surface, est-ce que le robot connaît les dimensions de cette surface, est-ce qu'il peut en détecter les limites pare choc ou ligne colorée sur le sol auquel cas une fois qu'il connaît la position des balises et une ou deux limites de la surface, il peut en calculer la totalité. le mieux étant de placer les balises dans deux coins contigus de la surface.
A+

Re !
iCare, pas de soucis pour les coordonnées polaire ou cartésiennes ou autres, non plus niveau dérivation intégrale (pour la vitesse et accélération), t'en fais pas pour ça :stuck_out_tongue:

Ivel23 : Deux suffisent Mais 3 semble plus précis ? Ce sera se de l'arduino, (la DUE suffit pas ? au pire i2c peut un peu soulager ?). De plus le robot coonait tout, la dimension exact de la pièce tout ce qui s'y trouve dedans (sauf un truc qui bougera en même temps mais ça n'est pas un problèmes), il y a des lignes possibilités de mettre ligne au sol ainsi que capteurs (genre contact si il touche un mur) les positions balises pourront être donnée en coordonnée dans le programme aucun soucis. Je cherche pas à faire un truc in faisable ^^

Artouste : J'ai un peu regardé, mais le laser peu être coupé du a un obstacle non ?

Minicarpet:
...

Artouste : J'ai un peu regardé, mais le laser peu être coupé du a un obstacle non ?

Oui evidemment, je n'ai pas pris en compte l'occultation par obstacle, si sur la zone il y a plusieurs mobiles (robot battle)
mon idée n'est absolument pas viable.
tant pis j'aurais essayé :grin:

C'est toujours une idée :wink:
Ouais c'est un peu un robot battle mais un seul robot bouge donc la vision revient après, mais si il y a des obstacles genre... un cailloux, il peut plus détecter sa position le problème est plus là :stuck_out_tongue:
euuuuuh c'est pareil pour l'ultrason en fait --'

Minicarpet:
C'est toujours une idée :wink:
Ouais c'est un peu un robot battle mais un seul robot bouge donc la vision revient après, mais si il y a des obstacles genre... un cailloux, il peut plus détecter sa position le problème est plus là :stuck_out_tongue:
euuuuuh c'est pareil pour l'ultrason en fait --'

Donc retour aux fondamentaux :grin:

On peut lire le reglement/(cahiers des charges) ?

Et par caméra ? ou thermique ?
Sinon c'est pas compliqué : Coupe de France de robotique 2014 :stuck_out_tongue: