Comment gérer la diaphonie sonar


10

Notre robot dispose d'un réseau circulaire de 12 capteurs sonar qui ressemble à ceci:

entrez la description de l'image ici

Les capteurs sonar eux - mêmes sont plutôt bons. Nous utilisons un filtre passe-bas pour gérer le bruit et les lectures semblent assez précises. Cependant, lorsque le robot rencontre une surface plane comme un mur, quelque chose d'étrange se produit. Les sonars ne montrent pas de lectures qui indiqueraient un mur, au lieu de cela, il apparaît comme une surface courbe.

L'intrigue ci-dessous a été réalisée lorsque le robot faisait face à un mur. Voir la courbe dans les lignes bleues, par rapport à la ligne rouge droite. La ligne rouge a été produite en utilisant une caméra pour détecter le mur, où les lignes bleues montrent des lectures de sonar filtrées.

entrez la description de l'image ici

Nous pensons que cette erreur est due à la diaphonie, où l'impulsion d'un capteur sonar rebondit sur le mur à un angle et est reçue par un autre capteur. Il s'agit d'une erreur systématique, nous ne pouvons donc pas vraiment y faire face comme nous le ferions avec le bruit. Existe-t-il des solutions pour y remédier?


connexes: "Question de télémètre à ultrasons multiples" . Dois-je copier-coller ma propre réponse d'ici là?
David Cary

Réponses:


10

Il s'agit d'un problème courant et l'un des nombreux. La détection acoustique est un domaine d'étude compliqué, dont une grande partie est consacrée à la détermination du chemin emprunté par une onde sonore entre son envoi et sa réception. Comme vous l'avez remarqué, en supposant qu'il est sorti directement et qu'il est revenu directement, cela produira des résultats étranges dans la pratique.

Pour vraiment le résoudre, vous devrez utiliser un système qui place une fréquence et / ou une longueur de ton unique sur chaque capteur. Cela peut être poussé à des extrêmes significatifs, par exemple la modulation de largeur d'impulsion pseudo-aléatoire à saut de fréquence pour éliminer la diaphonie des capteurs sonar dans les robots mobiles .

Il existe également une solution à faible technologie, dont le concept est assez simple. Si vous vouliez simplement détecter la diaphonie, il s'agirait de déclencher l'impulsion d'un seul capteur entre le déclenchement de toutes les impulsions des capteurs. Si vous détectez l'impulsion de retour avec un autre capteur, vous savez que vous êtes dans une situation de diaphonie.

En pratique, cela est assez inutile: notez que cela réduit de moitié le nombre d'échantillons que vous pouvez prélever. Vous pouvez donc améliorer la mise en œuvre en divisant les capteurs en groupes où chaque membre du groupe est suffisamment éloigné des autres pour ne pas recevoir de diaphonie. La version la plus robuste de cette approche consiste à rendre les groupes eux-mêmes pseudo-aléatoires, ce qui permet non seulement de faire la moyenne des erreurs dans le temps, mais facilite la détection de la diaphonie sur la base d'un capteur individuel.

Dans votre cas particulier, vous avez l'avantage supplémentaire d'un capteur de caméra qui, comme vous l'avez montré, renvoie une valeur plus correcte pour les plages. Les stratégies pour combiner des mesures séparées (et éventuellement conflictuelles) en une seule estimation plus précise est son propre sujet très large (appelé fusion , exemple 1 , exemple 2 ), mais très pertinent pour ce que vous faites ici.


5

Certains capteurs, tels que le Maxbotix MB1200 XL-MaxSonar-EZ0, ont un système de chaînage intégré où un capteur déclenche le capteur suivant une fois qu'il a terminé sa mesure. De cette façon, vous pouvez avoir N capteurs et vous assurer qu'un seul tire à la fois mais que le prochain capteur se déclenche dès que le premier a récupéré son retour. Cette solution est simple mais réduit évidemment considérablement la quantité de données que vous obtenez par unité de temps. Les solutions d'Ian sont beaucoup plus proches de l'optimale.


4

Est-il possible d'utiliser plusieurs capteurs à ultrasons sur un seul robot? Oui: "Utilisation de plusieurs capteurs sonar" .

Comme vous l'avez déjà compris, un capteur reçoit souvent des échos de pings envoyés par un autre capteur. Il existe plusieurs façons de gérer la sensibilité croisée, à peu près par ordre de simplicité:

  • Envoyez un ping à un seul transducteur à la fois, en ignorant tous les autres transducteurs en attendant que les «échos fantômes» du transducteur actuel s'éteignent avant de cingler le transducteur suivant. Ceci est beaucoup plus rapide que la rotation mécanique d'un seul transducteur. Peut-être que ce sera assez rapide, à moins que votre robot ne se précipite à presque la vitesse du son.
  • Utilisez des émetteurs ou des récepteurs d'angle de faisceau relativement étroits (ou les deux) par capteur, et augmentez l'angle d'un capteur au suivant afin qu'un capteur ne puisse pas entendre l'écho d'un autre (à moins que le truc devant le transducteur ne provoque des réflexions latérales étranges ) - capteurs inclinés à peu près de la même manière que l'angle du faisceau. Hélas, cela laisse des "angles morts" entre les transducteurs où les objets ne peuvent être vus par aucun transducteur.
  • Une combinaison - par exemple, augmenter l'angle d'un capteur à un autre afin qu'un capteur n'entende que les échos de ses 2 voisins (environ la moitié de l'angle du faisceau); puis alterner entre le ping des transducteurs pairs (en ignorant les transducteurs impairs) et le ping des transducteurs impairs (en ignorant les transducteurs pairs).
  • Chaque transducteur fonctionnant à une fréquence différente. Hélas, tous les transducteurs à ultrasons à faible coût, à quelques exceptions près , sont réglés pour résonner à 40 kHz. Lors de l'écoute d'une variété de signaux, ces transducteurs ne peuvent «entendre» que des signaux situés entre quelques kHz et 40 kHz. Vous devrez équilibrer (a) Plus vous vous éloignez de 40 kHz sur un transducteur conçu pour 40 kHz, moins il est sensible, donc vous voulez une fréquence "relativement proche" de 40 kHz; et (a) Plus toutes les fréquences sont rapprochées, plus il est difficile de les distinguer, de sorte que vous voulez un ensemble de fréquences étalées "relativement loin les unes des autres". Je ne sais pas s'il y a un bon compromis ou non - sinon, vous êtes coincé avec (c) utilisez des capteurs plus chers accordés sur d'autres fréquences,capteurs "à large bande passante" non accordés à une fréquence particulière.
  • Utilisez différents temps de transmission pour exclure les échos fantômes. Supposons que vous transmettiez par la gauche, retardiez 2 ms (pas assez pour laisser les échos s'éteindre), puis transmettez par la droite, ... après que les échos s'éteignent, puis transmettez par la gauche, retardez 3 ms, puis transmettez par la droite. Si le bon récepteur reçoit un écho 5 ms plus tard les deux fois, alors vous pouvez être sûr que c'est un véritable écho; si le récepteur droit reçoit un écho 5 ms plus tard la première fois, 6 ms plus tard la deuxième fois, c'est probablement un fantôme du récepteur gauche. (Il existe des techniques beaucoup plus sophistiquées de "spectre étalé" pour séparer de nombreux émetteurs utilisant tous la même fréquence en même temps.)
  • Combinez les signaux de tous les récepteurs. Si vous avez un émetteur central qui émet des pings dans toutes les directions (ou de manière équivalente, vous avez des émetteurs pointés dans toutes les directions, et vous les cinglez tous au même instant), et le premier écho que vous obtenez frappe d'abord le récepteur gauche (puis plus tard la droite le récepteur entend un écho), vous savez que l'obstacle le plus proche est plus proche du côté gauche que du côté droit. (Il existe des techniques plus sophistiquées de "réseau en phase" qui combinent les signaux de tous les récepteurs, et des techniques encore plus sophistiquées de "formation de faisceau" pour ajuster légèrement les temps de transmission de tous les émetteurs.)

PS: Avez-vous vu "Infrarouge vs. Ultrasonique - Ce que vous devez savoir" ?

(Oui, je l'ai déjà dit auparavant, à la «Question du télémètre à ultrasons multiples» .)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.