Wie man mit Sonarübersprechen umgeht

10

Unser Roboter verfügt über eine kreisförmige Anordnung von 12 Sonarsensoren, die folgendermaßen aussehen:

Geben Sie hier die Bildbeschreibung ein

Die Sonarsensoren selbst sind ziemlich gut. Wir verwenden einen Tiefpassfilter, um mit Rauschen umzugehen, und die Messwerte scheinen ziemlich genau zu sein. Wenn der Roboter jedoch auf eine flache Oberfläche wie eine Wand stößt, passiert etwas Seltsames. Die Sonare zeigen keine Messwerte an, die auf eine Wand hinweisen, sondern erscheinen wie eine gekrümmte Oberfläche.

Die Darstellung unten wurde gemacht, als der Roboter vor einer Wand stand. Sehen Sie die Kurve in den blauen Linien im Vergleich zur geraden roten Linie. Die rote Linie wurde unter Verwendung einer Kamera erzeugt, um die Wand zu erfassen, wobei die blauen Linien gefilterte Sonarwerte zeigen.

Geben Sie hier die Bildbeschreibung ein

Wir glauben, dass dieser Fehler auf Übersprechen zurückzuführen ist, bei dem der Impuls eines Sonarsensors in einem Winkel von der Wand abprallt und von einem anderen Sensor empfangen wird. Dies ist ein systematischer Fehler, daher können wir nicht wirklich so damit umgehen wie mit Lärm. Gibt es irgendwelche Lösungen, um dies zu korrigieren?

Robz
quelle
Verwandte: "Multiple Ultrasonic Rangefinder Question" . Soll ich meine eigene Antwort von dort nach hier kopieren und einfügen?
David Cary

Antworten:

10

Dies ist ein häufiges Problem und eines von vielen. Die akustische Wahrnehmung ist ein kompliziertes Forschungsgebiet, von dem ein erheblicher Teil damit verbracht wird, zu erraten, welchen Weg eine Schallwelle zwischen dem Senden und Empfangen eingeschlagen hat. Wie Sie bemerkt haben, führt die Annahme, dass es direkt herauskam und direkt zurückkam, in der Praxis zu merkwürdigen Ergebnissen.

Um es wirklich zu lösen, müssen Sie ein System verwenden, das jedem Sensor eine eindeutige Frequenz und / oder Tonlänge zuweist. Dies kann zu erheblichen Extremen geführt werden, z. B. zur Frequenzsprung-Pseudozufallsimpulsbreitenmodulation, um das Übersprechen von Sonarsensoren in mobilen Robotern zu beseitigen .

Es gibt auch eine Low-Tech-Lösung, deren Konzept recht einfach ist. Wenn Sie einfach das Übersprechen erkennen möchten, müssen Sie den Impuls eines einzelnen Sensors zwischen dem Auslösen aller Sensorimpulse auslösen. Wenn Sie den Rückimpuls mit einem anderen Sensor erfassen, wissen Sie, dass Sie sich in einer Übersprech-Situation befinden.

In der Praxis ist dies ziemlich verschwenderisch: Beachten Sie, dass sich dadurch die Anzahl der Proben, die Sie entnehmen können, effektiv halbiert. Sie können also die Implementierung verbessern, indem Sie die Sensoren in Gruppen unterteilen, in denen jedes Mitglied der Gruppe weit genug von den anderen entfernt ist, dass es kein Übersprechen erhält. Die robusteste Version dieses Ansatzes besteht darin , die Gruppen selbst pseudozufällig zu machen, wodurch nicht nur die Fehler über die Zeit gemittelt werden können, sondern auch die Erkennung von Übersprechen auf der Basis einzelner Sensoren unterstützt wird.

In Ihrem speziellen Fall haben Sie den zusätzlichen Vorteil, dass ein von Ihnen angezeigter Kamerasensor einen korrekteren Wert für die Bereiche zurückgibt. Strategien, um separate (und möglicherweise widersprüchliche) Messungen zu einer genaueren Schätzung zu kombinieren, sind ein sehr weit gefasstes Thema ( Fusion genannt , Beispiel 1 , Beispiel 2 ), aber ein sehr relevantes für das, was Sie hier tun.

Ian
quelle
5

Einige Sensoren, wie der Maxbotix MB1200 XL-MaxSonar-EZ0, verfügen über ein integriertes Verkettungssystem, bei dem ein Sensor den nächsten Sensor auslöst, sobald die Messung abgeschlossen ist. Auf diese Weise können Sie N Sensoren haben und sicherstellen, dass nur einer gleichzeitig feuert, aber dass dort der nächste Sensor feuert, sobald der erste seine Rückkehr gesammelt hat. Diese Lösung ist einfach, reduziert aber offensichtlich die Datenmenge, die Sie pro Zeiteinheit erhalten, erheblich. Ians Lösungen sind dem Optimum viel näher.

Foobarbecue
quelle
4

Ist es möglich, mehrere Ultraschallsensoren an einem einzigen Roboter zu verwenden? Ja: "Verwenden mehrerer Sonarsensoren" .

Wie Sie bereits herausgefunden haben, empfängt ein Sensor häufig Echos von Pings, die von einem anderen Sensor gesendet wurden. Es gibt verschiedene Möglichkeiten, mit Querempfindlichkeit umzugehen, ungefähr in der Reihenfolge der einfachsten zuerst:

  • Pingen Sie jeweils nur einen Wandler und ignorieren Sie alle anderen Wandler, während Sie darauf warten, dass die "Geisterechos" des aktuellen Wandlers nachlassen, bevor Sie den nächsten Wandler anpingen. Dies ist viel schneller als das mechanische Drehen eines einzelnen Wandlers. Vielleicht ist dies schnell genug, es sei denn, Ihr Roboter rammt mit nahezu Schallgeschwindigkeit gegen Dinge.
  • Verwenden Sie Sender oder Empfänger mit relativ engem Abstrahlwinkel pro Sensor und vergrößern Sie den Winkel von einem Sensor zum nächsten, damit ein Sensor das Echo eines anderen nicht hören kann (es sei denn, das Material vor dem Wandler verursacht seltsame seitliche Reflexionen ) - Sensoren, die ungefähr im gleichen Winkel wie der Abstrahlwinkel abgewinkelt sind. Leider hinterlässt dies "blinde Flecken" zwischen Wandlern, in denen Objekte von keinem Wandler gesehen werden können.
  • Eine Kombination - Erhöhen Sie beispielsweise den Winkel von einem Sensor zum anderen, sodass ein Sensor nur Echos von seinen beiden Nachbarn hört (etwa die Hälfte des Abstrahlwinkels). Wechseln Sie dann zwischen dem Pingen der geraden Wandler (Ignorieren der ungeraden Wandler) und dem Pingen der ungeraden Wandler (Ignorieren der geraden Wandler).
  • Jeder Wandler arbeitet mit einer anderen Frequenz. Leider sind alle kostengünstigen Ultraschallwandler mit wenigen Ausnahmen so abgestimmt, dass sie bei 40 kHz schwingen. Beim Abhören einer Vielzahl von Signalen können diese Wandler nur Signale "hören", die innerhalb einiger kHz von 40 kHz liegen. Sie müssen ausbalancieren (a) Je weiter Sie von 40 kHz entfernt sind, die Sie bei einem für 40 kHz ausgelegten Wandler verwenden, desto weniger empfindlich ist er. Sie möchten also eine Frequenz, die "relativ nahe" bei 40 kHz liegt. und (a) Je näher alle Frequenzen beieinander liegen, desto schwieriger ist es, zwischen ihnen zu unterscheiden. Sie möchten also einen Satz von Frequenzen, die "relativ weit voneinander entfernt" verteilt sind. Ich weiß nicht, ob es einen guten Kompromiss gibt oder nicht - wenn nicht, müssen Sie (c) teurere Sensoren verwenden, die auf andere Frequenzen abgestimmt sind.Sensoren mit "großer Bandbreite", die nicht auf eine bestimmte Frequenz abgestimmt sind.
  • Verwenden Sie verschiedene Sendezeiten, um Geisterechos auszuschließen. Angenommen, Sie senden von links, verzögern 2 ms (nicht annähernd genug, um die Echos abklingen zu lassen), senden dann von rechts, ... nachdem die Echos abgeklungen sind, senden Sie dann von links, verzögern Sie 3 ms und senden Sie dann von das Recht. Wenn der richtige Empfänger beide Male 5 ms später ein Echo zurückerhält, können Sie ziemlich sicher sein, dass es sich um ein echtes Echo handelt. Wenn der rechte Empfänger beim ersten Mal 5 ms später und beim zweiten Mal 6 ms später ein Echo zurückerhält, ist es wahrscheinlich ein Geist vom linken Empfänger. (Es gibt viel ausgefeiltere "Spread-Spectrum" -Techniken, um viele Sender zu trennen, die alle zur gleichen Zeit dieselbe Frequenz verwenden.)
  • Kombinieren Sie die Signale aller Empfänger. Wenn Sie einen zentralen Sender haben, der in alle Richtungen pingt (oder gleichwertig Sender in alle Richtungen zeigen und alle gleichzeitig pingen) und das erste Echo, das Sie zurückerhalten, zuerst den linken Empfänger (später den rechten) trifft Empfänger hört ein Echo), Sie wissen, dass das nächste Hindernis näher an der linken Seite als an der rechten Seite liegt. (Es gibt ausgefeiltere "Phased Array" -Techniken, die Signale von allen Empfängern kombinieren, und noch ausgefeiltere "Beamforming" -Techniken, um die Sendezeiten aller Sender leicht anzupassen.)

PS: Haben Sie "Infrarot vs. Ultraschall - Was Sie wissen sollten" gesehen ?

(Ja, das habe ich schon bei "Multiple Ultrasonic Rangefinder Question" gesagt .)

David Cary
quelle