Aller au contenu


Photo
- - - - -

Guidage par ultrasons et Lidar


  • Veuillez vous connecter pour répondre
9 réponses à ce sujet

#1 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 09 septembre 2021 - 09:15

Bonjour

Je souhaiterais guider un mobile actionné par 2 moteurs CC.

Le mobile roule parallèlement à une surface à une distance déterminée mesurée par un Lidar TF Mini Plus

A l'avant du mobile un capteur à ultrasons mesure la distance entre le mobile et une référence. A 30 cm de la référence le mobile doit effectuer un virage à 90°

 

Le capteur ultrasons Grove retourne des mesures relativement correctes.

Mais sur 10 mesures cohérentes il y en a une erronée. Exemple 135, 134, 3,132 ... ou alors 0 ou 570

 

Je suppose que c'est inhérent à cette technologie et qu'il faut filtrer les valeurs par programmation en comparant la valeur actuelle à la dernière valeur correcte.

 

Mais y a-t-il des corrections physiques à apporter afin que les valeurs retournées soient plus fiables comme par exemple un cône autour du capteur ...

 

Ou bien est-il préférable d'utiliser un Lidar aussi pour évaluer une distance devant le mobile ?

 

(le mobile se déplace à la vitesse d'une tondeuse robot)

 

Merci



#2 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 10 septembre 2021 - 06:30

Je pense qu'il faut utiliser le capteur tel quel, mais il n'est pas interdit de faire des tests avec des cônes.

En intérieur, ce capteur est assez performant, mais en extérieur, le vent peut perturber la propagation du son et donc, la mesure.

Oui, je pense qu'il faut filtrer les valeurs. Si une valeur est trop éloignée de la précédente et de la suivante qui, elles, sont proches, alors il faut l'ignorer.



#3 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 10 septembre 2021 - 09:30

Merci Oracid

 

Plutôt que d'utiliser un lidar à gauche, un lidar à droite et un capteur à ultrasons frontal, je me demandais s'il était pertinent d'utiliser un Lidar 360 comme ce modèle

 

ou un TFMini monté sur un moteur pas à pas ?



#4 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 768 messages
  • Gender:Male

Posté 10 septembre 2021 - 09:38

Je ne connais rien en Lidar , celui-ci m'a l'air très sympathique.

Fais nous un retour d'expérience, à l'occasion.



#5 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 10 septembre 2021 - 10:28

Explication que je trouve très claire



#6 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 261 messages
  • Gender:Male

Posté 10 septembre 2021 - 01:37

Bonjour,

pour les capteurs ultrasons (j'ai jamais utilisé ce modèle en particulier), j'ai constaté les "problèmes" suivants :

- si le capteur "vise" horizontalement, il lui arrive de détecter le sol (de manière "aléatoire"). La solution que j'avais trouvé était d'incliner le capteur légèrement vers le haut

- si le capteur est un peu "à l'intérieur" du robot, il lui arrive de détecter le robot (ça pourrait expliquer ton 0 et ton 3)

- les obstactes (surtout lisses) qui ne sont pas assez perpendiculaires au "faisceau" ultrason ont du mal a être détectés (par exemple, avec 5 capteurs US à l'avant du robot, je n'arrivais pas à détecter un carton d'emballage de 50cm de coté placé à 45° une demi mètre devant le robot!. Si les obstacles sont quasi-parallèles au faisceau, alors tu n'a quasiment aucune chance de les détecter (sauf s'ils sont très rugueux)

- les cônes de détection sont une simplification "abusive" : tu détectera des obstacles bien perpendiculaires au "rayon" ultrason même un peu en dehors du cône, mais tu ratera des obstacles à l'intérieur du cône s'ils sont mal orientés. En gros, plus tu es en face du capteur, plus il est sensible. Selon l'obstacle et son orientation, le signal de retour est plus ou moins fort. Si le signal est assez fort par rapport à la sensibilité, alors il est détecté. Le cône de détection n'est qu'une limite arbitraire de sensibilité.

 

Pour ce qui est d'un lidar (acheté ou bricolé avec un TF-mini+moteur), tu as une bien meilleur précision, mais tu te retrouve avec beaucoup de données à traiter (pour un lidar comme celui du lien, je ne suis pas sur qu'un Arduino suffise, il te faudra probablement un rasperry Pi). Après, vu que tu as beaucoup de données, tu vas pouvoir faire une navigation beaucoup plus intelligente (contourner les obstacles avant d'être en butée, adapter ta vitesse à la distance aux obstacles, créer une carte de ton environnement et t'y localiser, ...). Donc un lidar est un peu plus complexe a utiliser, mais ouvre la porte à beaucoup de possibilités.

 

Pour l'idée d'en bricoler un :

- si tu fais de la rotation continue, il faut penser à tes cables : soit tu fait du sans fil (necessite de monter batterie + lidar + module de communication sans fil (+micro-controleur?)) sur la partie tournante, soit tu utilises un moteur à arbre creux et un contact rotatif (slip ring en anglais) pour transmettre le signal et l'alim malgré la rotation (attention, les "slip ring" premier prix chinois ne résistent pas très longtemps à une rotation rapide en continue (de mémoire, quand on avait fait un petit lidar maison pour un projet scolaire, on commençais à avoir des "fils" du slip ring qui déconnaient après une dizaine d'heures d'utilisation)

- si tu ne fais pas de rotation continue, il faudra que tu penses à ralentir progressivement avant la fin (sinon tu vas sauter des pas sur tu moteur pas à pas). Tu n'aura donc pas un écart angulaire constant (mais c'est pas très grave tant que tu le sais)

- si tu utilises un moteur pas à pas, tu ne sais pas où est ton moteur au démarrage : pour résoudre ce problème, tu peux utiliser un bouton en butée (si tu ne fais pas de tours complets), un bouton/contact magnétique/barrière photovoltaique pour des tours complets, ou simplement la mesure d'un obstacle "fixe" faisant partie de ton robot pour te recaller

- si jamais tu utilises un servo-moteur, c'est plus facile, mais tu sera assez lent

- tu peux utiliser un moteur à courant continue avec un encodeur absolu ou encodeur incrémental avec signal de fin de tour : ça permet une très bonne précision angulaire et une vitesse de rotation élevée, mais c'est un peu plus cher


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#7 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 11 septembre 2021 - 09:36

Super

Merci beaucoup Sandro pour tes explications très intéressantes. 

J'ai remplacé le capteur à ultrasons par un Tf Mini et effectivement les mesures sont nettement plus cohérentes.

 

Cependant je constate tout de même des différences relativement importantes entre les 2 Lidar :

Exemple pour une mesure de 30 cm

Lidar 1 : 31 cm

Lidar 2 : 48 cm variable entre 40 et 60 cm

Je vais tenter d'élucider ce phénomène et en utiliser un troisième. Peut-être est-il défectueux.

Sinon je pense placer un Lidar qui mesure vers l'avant et un second sur un servo pour qu'il puisse mesurer sur le côté droit et sur le côté gauche. 

 

J'aimerais utiliser ce robot pour nettoyer des surfaces avec un jet haut pression. Il se cale sur une surface latérale pour ses déplacements. Donc il faut mesurer la distance du côté droit vers la référence ensuite du côté gauche vers la référence quand il a fait demi-tour.

 

Concernant l'alimentation de ces Lidar :

Au départ, j'ai une batterie 12 v qui alimente les moteurs et l'Arduino Mega. Sur celui-ci il y a un Shield Grove  sur lequel sont connectés les capteurs, écran lcd, module bluetooth,  servo, relais.

J'ai ensuite placé un convertisseur 12V > 5V qui alimente l'Arduino.

Est-il préférable d'alimenter aussi les capteurs séparément plutôt que de pendre le 5V sur l'Arduino ?

 

Encore un grand merci 



#8 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 965 messages
  • Gender:Male
  • Location:Anglet

Posté 12 septembre 2021 - 04:00

Les TF mini ne consomment pas grand chose tu peux les mettre sur le même 5V que les arduino. 

Pour ce qui est de ce caler sur une surface latéral " attention avec le placement du capteur " ... Il ne doit pas être placé " perpendiculairement au robot sauf si tu en as deux. 

Au vu de ton besoin un lidar 360° pourrait être mieux ... 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#9 Sandro

Sandro

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 1 261 messages
  • Gender:Male

Posté 13 septembre 2021 - 11:35

Bonjour,

J'ai bien compris que tu comptes asperger le "mur" avec un jet d'eau à haute pression?

Si oui, je suppose que tu vas te prendre plein de projections sur ton robot (sauf s'il est vraiment loin, mais dans ce cas tu n'as plus non plus beaucoup de pression au niveau du mur).

Si c'est bien ça, ça te rajouter beaucoup de complications :

- ton robot doit être étanche (sans connaître la pression de ton jet et la distance au mur, c'est difficile de dire à quel point, mais un IP X4 est certainement indispensable, probablement il faudra du IP X5 ou IP X6 (voir du IP X9 si tu est assez prêt du mur pour que les éclaboussures soient encore à "haute pression"). Il te faudra donc enfermer de manière étanche les composants, et choisir des composants avec le niveau d'étanchéité souhaité pour ceux qui doivent être à l'extérieur (attention, les composants étanches sont souvent bien plus cher)

- ton/tes capteurs de distance doivent eux aussi être étanches (vu qu'il n'est pas possible de les mettre dans l'intérieur du robot)

- tes capteurs doivent être capables de fonctionner même s'ils sont couvert de gouttes : j'ai peur qu'une goutte d'eau sur la sortie d'un LIDAR puisse te dévier le rayon laser (donc changer l'angle auquel tu fais la mesure). De même, je ne sais pas si un capteur ultrason fonctionne bien s'il y a des gouttes d'eau qui le recouvrent (risque d’absorption du signal + risque de distorsion/interférences). De même, pour une caméra, l'image risque de devenir inexploitable.

 

J'ai peur que toutes les solutions "classiques" de suivit de mur sans contact ne soient au mieux bien plus compliquées à mettre en œuvre voir inexploitables.

 

En revanche, j'ai deux solutions simples à te proposer :

1) suivit du mur par palpation : tu mets un interrupteur au bout d'un "bras" (une simple barre) : si l’intérieurement est enfoncé, tu tournes légèrement en t'éloignant du mur, s'il n'est plus enfoncé, tu tournes légèrement vers le mur : c'est tellement simple que sur un robot avec une roue pour avancer et une roue directrice, tu pourrais te passer de microcontroleur

2) tu colles une bande noire au sol (parallèle au mur) et tu fais du suivit de ligne. Vu que la ligne est sous le robot, tu peux facilement protéger tes capteurs simplement en les entourant de "brosses" qui frottent au sol


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#10 dakota99

dakota99

    Habitué

  • Membres
  • PipPip
  • 228 messages
  • Gender:Male

Posté 13 septembre 2021 - 05:22

Bonjour

Merci pour vos réponses.

Cet appareil a plusieurs utilisations.

La première est de transporter une lance haute pression avec brosse rotative afin de nettoyer des surfaces de pavés autobloquants.

Je place un repère (des profilés en plastique, de la rubalise, ...).

Le robot commence à une distance de 30 cm et mesure la distance avec le lidar du côté droit..

Quand il arrive à la fin du repère il détecte une distance plus grande et fait alors demi-tour pour suivre le repère avec le lidar côté gauche.

Il s'éloigne au fur et à mesure de la référence jusqu'à une distance de +/- 5 mètres.

 

J'ai déjà fait quelques essais et il n'y a pas beaucoup d'éclaboussures car la pression est concentrée dans la brosse. Cela fonctionne assez bien. Au-début il faisait marche avant puis revenait en arrière mais ce n'est pas évident, je préfère garder une seul sens de marche et qu'il fasse demi-tour à chaque trajet.

 

Merci pour votre temps.






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users