Objekterkennung mit rotierenden Ultraschall mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autorin: Cosima Eckert-Ludwig
Betreuer: Prof. Dr.-Ing. Ulrich Schneider


Für das Fach „Signalverarbeitende Systeme“ im Sommersemester 2017 wurde den Studierenden des Masters „Business and Systems Engineering“ jeweils ein Projekt aufgegeben. Dieses Projekt beschäftigt sich mit einem fahrbaren Roboter mit Lego Mindstorms EV3. Dieser soll mit Matlab/Simulink gesteuert werden und mit einem Sensor ergänzt werden. Fährt das Fahrzeug auf ein Hindernis zu, soll es 5 cm davor eine automatische Notbremsung durchführen. Zudem soll der Sensor rotieren. Die Signalverarbeitungskette soll ebenfalls beschrieben und untersucht werden. Weitere Informationen gibt es im Hauptartikel: Signalverarbeitende Systeme SoSe2017


Der Primärsensor und seine Funktionen

Abbildung 1: Der Ultraschallsensor

Der Sensor

Der Sensor für dieses Projekt ist der LEGO Mindstorms EV3 Ultrasonic Sensor (95652) [1]. In Abbildung 1 wird der Sensor dargestellt. Er misst Entfernungen zwischen 3 und 250 cm. Die Messgenauigkeit liegt bei ± 1 cm. Der Sensor leuchtet dauerhaft beim Senden und blinkt beim Empfangen. Die EV3-Software erkennt den angeschlossenen Sensor automatisch und durch das passende Matlab/Simulink Supportpackage kann so auf den Sensor zugegriffen werden. Kurzgefasst besteht der Ultrasonic Sensor aus einem Sender und einem Empfänger. Der Sender emittiert die Ultraschallwellen, während der Empfänger die Ultraschallwellen empfängt. So können Objekte und deren Entfernung in cm gemessen werden. Der Ultrasonic misst die Strecke, indem er die Zeit auswertet die er benötigt, um die Ultraschallwellen auszusenden und wieder zu empfangen. [2]

Der LEGO Mindstorms EV3 Ultrasonic Sensor (95652) besteht unter anderem aus: [3]

  • einem STM8S103F3 Mikrocontroller
  • einem AW8T40-10OA00 Sender
  • einem AW8R40-10OA00 Empfänger

Der Sender und der Empfänger besitzen folgende technische Daten: [4]

Eigenschaft AW8T40-10OA00 Sender AW8R40-10OA00 Empfänger
Mittelfrequenz 40.0±1.0KHz
Schalldruckpegel ≥110dB -
Empfindlichkeit - ≥-67dB
Strahlungswinkel 100°
Kapazität 1700±20%pF
Gehäuse Aluminum
Max. Ansteuerungsspannung 30Vrms
Arbeitstemperatur -20 bis +70℃
Lagertemperatur -30 bis +80℃

Die Funktion

Abbildung 2: Funktionsweise des Sensors

Im Allgemeinen sind Ultraschallsensoren sehr zuverlässige und präzise Sensoren zum Messen der Entfernung von Hindernissen. Das Prinzip ist dem Sonar der Fledermäuse nachempfunden. Zunächst wird mit einem Ultraschallsender (Piezo Schallwandler) einige Ultraschallbursts (begrenzte Anzahl von Schwingungen fester Frequenz) erzeugt. Diese liegen im Bereich von 40kHz. Anschließend werden die von einem Hindernis reflektierten Schallwellen mit dem Ultraschallempfänger empfangen. Dazu misst ein Prozessor die Zeit, bis das Echo eintrifft. Diese Zeit ist proportional zur Entfernung des Hindernisses, da sich der Schall, in einem Medium wie Luft, mit einer linearen Geschwindigkeit von ca. 300m/s bewegt. Das Echo legt dabei die doppelte Strecke zurück. So kommt man auf eine Zeit von ca. 60µs pro cm. Damit lässt sich die Entfernung des Hindernisses durch teilen der gemessenen Zeit ermitteln. Abbildung 2 zeigt das Prinzip des Ultraschallsensors.

Als Ultraschall wird ein Schall mit Frequenzen oberhalb des Hörfrequenzbereichs des Menschen bezeichnet. Er umfasst Frequenzen ab etwa 16 kHz. Wie bereits erwähnt, besteht der Ultrasonic aus einem Sender und einem Empfänger. Im Sender befinden sich kleine Metallplatten, sogenannte piezoelektrische Elemente mit positiven und negativen Ladungen. Ändert sich die Spannung zwischen den Metallplatten, ziehen sich diese an und bewegen sich aufeinander zu bzw. werden voneinander weggedrückt. Somit sind im Sender sozusagen kleine Membrane die schwingen können. Dadurch können Schallwellen erzeugt werde, die über die Luft übertragen werden. Treffen die Schallwellen nun auf ein undurchlässiges Gewebe, wird der Schall reflektiert. Der Rückschall der dabei entsteht trifft anschließend auf die Metallplatten. Dadurch wird die Platte bewegt und es ändert sich die Spannung. Diese Spannungsänderung wird im System aufgenommen und es kann die Zeit zwischen des Zeitpunktes bei dem das Signal losgeschickt wurde und des Zeitpunktes wann es wieder zurück reflektiert wurde gemessen werden. Durch die Zeitdifferenz kann anschließend der Weg berechnet werden.


Die Rohsignale

Der Ultrasonic kann durch die Spannungsänderung die Zeit messen. Mit Hilfe der Geschwindigkeit der Ultraschallwellen und der Zeit kann die Distanz gemessen werden. Die Geschwindigkeit des Ultraschalls ist 343m/s. Damit die Geschwindigkeit in cm angegeben wird, wird die Einheit umgerechnet. Somit liegt nun die Geschwindigkeit bei 0,034cm/µs. Da bei dem Sensor der Weg der Ultraschallwellen die Strecke vom Sensor zum Gegenstand und vom Gegenstand zum Sensor zurück beinhaltet, muss dieser Wert verdoppelt werden. Um Anschließend mit dem Zeitwert die Strecke auszurechnen, muss dieser Wert wieder halbiert werden, da nur die Strecke zwischen dem Sensor und dem Gegenstand relevant ist.

Die Schallgeschwindigkeit des Ultrasonic ist: bzw.

Der Ultrasonic misst die Zeit wie folgt:


Da der Ultrasonic allerdings den Weg zum Objekt und wieder zurück berechnen muss, ergibt sich hieraus folgende Formel:

Der Ultrasonic misst die Strecke wie folgt:


Um den Zeitwert auszurechnen, muss jedoch der Wert wieder halbiert werden, da nur die Zeit vom Aussenden des Signals bis zum Objekt relevant ist.


Im Folgenden wird ein Beispiel angegeben: Der Roboter ist vom Gegenstand entfernt und die Geschwindigkeit des Ultraschalls . Dann brauchen die Ultraschallwellen für die Strecke.

Dies berechnet sich wie folgt:

Dieser Wert lässt sich nun wieder in die Strecke umrechnen:

Die Signalvorverarbeitung

Abbildung 3: Komponenten des Sensors

Messwerte und Vorverarbeitung

Beim Ultrasonic werden vorverarbeitet Daten als digitale Werte an den Brick weitergegeben. Der Ultrasonic besteht aus verschiedenen Komponenten, die in Abbildung 3 dargestellt werden. Der Ultrasonic besitzt zudem einen Timer. Dieser besitzt folgende Eigenschaften:

  • Fortgeschrittene Timer-Steuerung: 16-bit, 4 CAPCOM Kanäle, 3 komplementäre Ausgänge, Totzeit Einfügung und flexible Synchronisierung
  • 16-bit Allzweck-Timer, mit 3 CAPCOM Kanälen (IC, OC or PWM)
  • 8-bit Basic Timer mit 8-bit Vorteiler
  • Auto wake-up Timer
  • Window watchdog und independent watchdog Timer

Aus den Rohdaten wird über diesen Timer die Zeit gemessen, die der Ultrasonic zwischen der Ausstrahlung der Ultraschallwellen und der Messung benötigt.


Kennlinie

Da sich die Werte des Sensors bei der Messung nach bestimmten Gegebenheiten ändern können, bzw. nicht dem optimal entsprechen, ist eine Kennlinie wichtig, um diese Änderungen einzuplanen. Besonders beim Ultrasonic verhalten sich die Messungen je nach bestimmten Austrahlwinkel anders.

Die Kennlinie des Senders und des Empfängers sind in Abbildung 4 bzw. 5 zu sehen. Beide können bei einer Frequenz von 40 KhZ am besten die Signale empfangen bzw. auswerten, da dort das Maximum liegt. Die Kennlinie bezüglich der Frequenzcharakteristik bezieht sich auf den Sender, siehe Abbildung 6. Es ist gut zu erkennen, dass bei einer Frequenz von 40 kHz die beste Objekterkennung erfolgen kann, da bei diesem Wert die Selbstimpedanz am geringsten ist. Anhand der Kennlinie des Austrahlwinkels, siehe Abbildung 7, lässt sich erkennen, dass der Ultrasonic beim Senden seiner Wellen ab einem Austrahlwinkel von ± 40% ungenauer wird bzw. das Objekt nicht mehr optimal detektiert werden kann.

Der Analog-Digital-Umsetzer

Abbildung 8: Verarbeitung

Die analogen Signale

Die analogen Signale werden so umgesetzt, dass zunächst der Sensor die Schallwellen aussendet und dann auf den Piezoempfänger zurücktreffen. Dieser steuert dann die Transistoren an. Es wird eine Spannung erzeugt und diese kann durch einen ADU in 10-Bit Werte umgesetzt werden. Abbildung 8 stellt die Verarbeitung dar. [5]


Der ADU und Alternativen

Es kommt ein 10-Bit Analog Digital Umwandler ADC1 zum Einsatz, der in dem STM8S103F3 Mikrocontroller ist. Er arbeitet nach dem Prinzip der sukzessiven Approximation. Er weist folgende Eigenschaften auf:

  • 5 externe mehrfach nutzbare Eingangskanäle
  • Eingangsspannungsbereich: 0 - VDD
  • Wandlungszeit: 14 Taktzyklen
  • Single, kontinuierliche und gepufferte kontinuierliche Umwandlungsmodi
  • Puffergröße (n x 10 bits) wobei n = Anzahl Eingangskanäle
  • Scan mode für single und kontinuierliche Umsetzung von einer Folge von Kanälen
  • Analoge watchdog Fähigkeit mit programmierbaren upper und lower Schwellenwerten
  • Analoger watchdog Unterbrecher
  • Externer Triggereingang
  • Trigger von TIM1 TRGO
  • End of conversion (EOC) Unterbrechung


Der ADC tastet somit ab und gibt den Wert an, der dann über UART in cm wiedergegeben wird. Die Umwandlung dauert 14 Taktschläge. Er braucht 1 ms um einen Takt umzusetzen und kann also 1 Mio. Messwerte pro Sekunde umsetzten. Der ADC wandelt das analoge Messsignal in ein digitales um.

Da er nach dem Prinzip der sukzessiven Approximation arbeitet, geschieht folgendes: Zunächst wandelt der ADC die Werte in mehreren Schritten um. Das Messsignal wird in Schritten digitalisiert. Dabei steigt die Genauigkeit bei jedem Schritt um 1 Bit. Die Eingangsspannung wird bei jedem Schritt mit einer Referenzspannung verglichen, die durch den ADC erzeugt wird. Ist die Eingangsspannung größer oder kleiner als die Spannung des ADC, wird die Referenzspannung im nächsten Schritt um die halbe Schrittweite des letzten Schrittes nach oben oder nach unten verändert. Somit ist es möglich, dass sich die Spannung des ADC immer mehr der Eingangsspannung anpasst. Wird das letzte Bit des ADC gesetzt, entspricht der Wert des ADC ungefähr der Eingangsspannung. Der Prozess ist nun beendet.

Abbildung 9 [6] und Abbildung 10 [7] zeigen das Vorgehen der Sukzessive Approximation sowie die Auswirkung. Es wird ein ADC mit einem Sukzessiv-Approximation-Wandler gezeigt. Bestandteile des Wandlers sind der Komparator, das Steuerwerk, der SAR- Converter und der ADC.


Der ADC1 besitzt 10 Bit, welche zudem seine maximale Größe entsprechen. Alternativ würde auch ein 8-Bit ADU für den Ultrasonic ausreichen. Da die Auflösung in vollen cm ist, werden nur 7-Bit benötigt, da nur maximal 256 Werte aufgenommen bzw. dargestellt werden können, da es auch keinen negativen Bereich gibt. Allerdings existiert durch den 10-Bit ADU ein größerer Messbereich. Somit sind die Werte einfacher zu kalibrieren. Somit sind die Vorteile des 10 Bit ADU, dass die Messunsicherheit abgefangen wird, da im Bereich der Messfehler (Bedienung des Menschen, ADC Messfehler in Auflösung etc.) nun ein 4-facher overscan vorliegt. Da nur eine cm-Stückelung vorliegt kommt es zu einer „Überabtastung“ und die Messung wird genauer. Bei einem 16-Bit ADU wird die Messunsicherheit noch geringer, jedoch dauert die Verarbeitung umso länger. Daher ist die 10-Bit Variante am besten für den Ultrasonic geeignet .

Das Bus-System

Abbildung 11: UART

EV3/UART

Das Verbindungssystem zwischen dem EV3 Brick und dem Ultrasonic entspricht dem Typ „EV3/UART“. Der EV3 hat einen UART (Universal Asynchronous Receiver Transmitter) Sendeempfänger für jeden Inputeingang und somit kann automatisch auf den Ultraschallsensor zugegriffen werden. Der Typ „EV3/UART“ ist für Sensoren geeignet, die primär für den EV3 entwickelt sind. Diese Sensoren sind etwas „smarter“ und senden nicht nur ihre gemessenen Daten, sondern senden zudem Informationen über ihre Ressourcen. Das heißt, dass der Ultrasonic Sensor ohne einen neu geschriebenen Treiber funktioniert. Es liegt eine Point to Point-Verbindung vor und es wird kein Bus zwischen Ultrasonic und Brick benötigt. Der Ultrasonic sendet bzw. empfängt seine Daten über UART, was über den Mikrokontroller geschieht. Dabei werden die Daten an den Ausgang Pin 6 gesendet. Siehe Abbildung 11 UART1_TX. Pin 5 ist der Eingang der Daten, siehe ART1_RX.




Digitale Signalverarbeitung

Umsetzung

Abbildung 12 und 11 zeigen, wie der Ultrasonic Sensor mit EV3 und den Lego Mindstorms Elementen konstruiert wurde. Der Roboter besitzt neben dem Sensor und dem Brick zwei Motoren und einen Drehmotor, damit der Sensor rotieren kann. Das Projekt wurde mittels Matlab/Simulink implementiert. Die Simulink Version ist R216B.

Abbildung 13: Vorgehen


Der Ultrasonic misst die Entfernung zum Objekt, damit der Roboter 5 cm vor einem Gegenstand stoppt. Da der Sensor über einen Drehmotor mittels Repeating Sequence rotiert, wird der aktuelle Winkel über einen Encoder ausgegeben. Damit der Roboter 5 cm vor einem Objekt hält, muss das Simulinkmodell den aktuellen Winkel des Sensors berücksichtigen. Damit dies geschieht, gibt der Encoder den aktuellen Winkel wieder. Über den Cosinus kann so die Entfernung zum Objekt über die Ankathete gemessen werden und mit den 5 cm verglichen werden. Misst der Sensor eine Entfernung zum Objekt kleiner als 5 cm, wird eine Notbremsung vollzogen.

Somit sind in diesem Projekt für die digitale Signalverarbeitung besonders die Punkte des Rotieren des Sensors, der Objekterkennung per Ultrasonic und der Notbremsung relevant.

Verarbeitungsschritte

Im folgenden werden die verschiedenen notwendigen Verarbeitungsschritte des Projekts in einem PAP-Plan dargestellt. Abbildung 14 stellt diesen dar.

Abbildung 14: Der Pap-Plan

Zudem kann im SVN Ordner auf das Simulinkmodell zugegriffen werden. Dieses ist unter folgendem Link SVN-Ordner mit Simulinkmodell [8] einzusehen. Bei der Simulation muss beachtet werden, dass die richtigen Ports der Motoren und des Sensors angesprochen werden. Zudem ist die Entfernung stark abhängig von der jeweiligen Außentemperatur. Auf die Temperaturauswirkung wird in Kapitel 6 genauer eingegangen.

Fehler und Messunsicherheiten

Bei dem Ultrasonic können verschiedene Fehler bzw. Messunsicherheiten und Messabweichungen auftreten.


Es werden zunächst die Messabweichungen des Ultrasonics verglichen, indem die wahre Entfernung mit der gemessenen Entfernung verglichen wird. In der folgenden Tabelle sind die Ergebnisse eingetragen und in Abbildung 15 grafisch dargestellt.

Abbildung 15: Messabweichung
Wahre Entfernung
cm
Gemessenen Entfernung
cm
Messabweichung
cm
0 - -
1 3 2
2 3 1
3 3 -
4 5 1
5 6 1
6 6 -
7 7 -
8 8 -
9 9 -
10 10 -
15 15 -
20 20 -
25 25 -
30 30 -
35 35 -
40 40 -
45 45 -
50 50 -
55 55 -
60 60 -
65 64 1
70 70 -
75 74 1
80 79 1
85 84 1
90 90 -
95 94 1
100 100 -

Die Werte schwanken zu beginn nur minimal. Da die Werte in vollen cm Angaben angezeigt werden, wird es eine Ungenauigkeit von 0,5cm bzw. wird letztendlich eine Differenz von 1cm sichtbar. Der Ultrasonic ist ab einem Wert von 5cm sehr genau und erst ab 65cm Entfernung zum Objekt, wird er vereinzelt ungenauer. Hier liegt wie erwähnt eine Ungenauigkeit von 0,5cm vor. Daher ist ein internes Fehlerkorrigieren oder ein Setzen des Nullpunkts nicht nötigt. Allerdings trifft bei den Messungen das Ultraschallsignal annähernd senkrecht auf das Hindernis auf, bei gekrümmten Hindernissen dürfte es hier zu größeren Messfehlern kommen.


Im Folgenden werden verschiedenen Fehler bzw. Messunsicherheiten genannt:

  • So ist die Schallgeschwindigkeit von der Eigenschaft des Mediums und insbesondere von der Temperatur abhängig. Sie beträgt bei Raumtemperatur in ::Luft 343m/s.
  • Da der Ultrasonic mit vollen cm Werten arbeitet, kann es zu einem Fehler von ± 0,5cm kommen
  • Weil die Schallwellen kegelförmig sind, gibt das empfangene Echo nur Informationen über die Entfernung des Objekts zum Sender, aber nicht über die ::Winkelrichtung, in der das Objekt sich befindet.
  • Die Intensität der reflektierten Wellen hängt stark von der Oberflächenstruktur ab. (z. B. reflektiert ein Würfel stärker als eine Kugel oder Holz ::stärker als Fließ). Es kann passieren, dass das empfangene Signal im allgemeinen Rauschen oder zwischen den Störungen durch anderweitige ::Reflektionen verschwindet.
  • Umweltfaktoren haben einen großen Einfluss auf die Messungen. Z. B. Raumtemperatur oder Luftturbulenzen.
  • Es können Scheinechos auftreten. So kann eine Welle auf mehreren Objekten reflektiert werden, bevor sie als Echo vom Sender empfangen wird. Diese ::Erscheinung hat zur Folge, dass die gemessene Entfernung des Hindernisses größer als die tatsächliche ist. Es kann auch vorkommen, dass Echos von ::weit entfernten Gegenständen während einer neuen Messung empfangen werden und so ihre Entfernung viel kleiner scheint, als sie tatsächlich ist.
  • Es ist schwer, den genauen Zeitpunkt des Empfangs eines Echos zu bestimmen. Diese Unsicherheit verursacht einen Fehler beim Messen der Entfernung.
  • Es kann passieren, dass nicht nur das angepeilte Objekt sondern auch Nachbarobjekte den Schall reflektieren. Dadurch registriert der Empfänger ::mehrere Wellen.
  • Zudem darf sich das Objekt nicht zu nah (< 3 cm) und zu weit (>250) entfernt vom Roboter befinden.


Der größte und entscheidendste Einflussfaktor der Schallgeschwindigkeit ist die Temperatur. Die Schallgeschwindigkeit ist mit rund 0,17% pro Grad Celsius temperaturabhängig. Damit ändert sich die vom Ultraschallsensor gemessene Laufzeit und die berechnete Entfernung wird verfälscht. Wichtig ist zudem, dass die Schallgeschwindigkeit nicht abhängig von der Schall-Amplitude, der Frequenz oder der Wellenlänge ist. Die Ausbreitungsgeschwindigkeit von Schall in Luft liegt bei [9]:

Temperatur Luftdichte Luft-Kennimpedanz Schallgeschwindigkeit
0°C ρ0 = 1,293 kg/m3 Z0 = 428 N•s/m3 c0 = 331,5 m/s
15°C ρ15 = 1,225 kg/m3 Z15 = 417 N•s/m3 c15 = 340 m/s
20°C ρ20 = 1,204 kg/m3 Z20 = 413 N•s/m3 c20= 343 m/s
25°C ρ25 = 1,184 kg/m3 Z25 = 410 N•s/m3 c25= 346 m/s

In SI-Einheiten ist bei trockener Luft und 20°C die Schallgeschwindigkeit .

Da der Ultrasonic einen Arbeitsbereich von -20°C bis +70°C hat, wird bei einer Messentfernung von 100 cm eine Temperaturänderung gegenüber einer Raumtemperatur von 20°C einen Messfehler von -8,5 cm bei 70°C und +6,80 cm bei -20°C verursachen. Als Ausgleich der unterschiedlichen Ergebnisse bei verschiedenen Temperaturen, könnte in den Ultraschallsensor ein Temperaturfühler integriert werden, um diese Effekt auszugleichen. So könnte die Umgebungstemperatur gemessen werden und der Sensor korrigiert die Verfälschung der Messwerte.

Das Video

Um sich das Projekt besser vorstellen zu können und das Ergebnis zu sehen, wurde ein Video gedreht. Dieses ist unter folgendem Link aufzufinden: Video zur Darstellung der Ergebnisse [10]

Der Zeitplan

Für einen guten Überblick während der Erstellung wurde ein Zeitplan angelegt. So können die anstehenden Aufgaben des Projekts strukturiert abgearbeitet werden und es kann kontrolliert werden, ob die Aufgaben in der richtigen Frist erledigt werden. Abbildung 16 zeigt den Zeitplan.

Abbildung 16: Der Zeitplan
Abbildung 16: Der Zeitplan im Detail

Einzelnachweise

  1. EV3 Ultraschallsensor: https://shop.lego.com/de-DE/EV3-Ultraschallsensor-45504, zuletzt abgerufen am 17.06.2017
  2. Erklärung Ultraschallsensor: http://gillespie.agrilife.org/files/2015/04/EV3-Motors-Sensors-Explained.pdf, zuletzt abgerufen am 17.06.2017
  3. Datasheet STM8S103F3: http://www.st.com/content/ccc/resource/technical/document/datasheet/ce/13/13/03/a9/a4/42/8f/CD00226640.pdf/files/CD00226640.pdf/jcr:content/translations/en.CD00226640.pdf, zuletzt abgerufen am 17.06.2017
  4. Datasheet Sender und Empfänger: http://www.quartz1.com/price/PIC/226N0120300.pdf, zuletzt abgerufen am 17.06.2017
  5. Datasheet Ultrasonic: https://www.lego.com/en-us/mindstorms/mindstormservices/firmware-download-page?assetid={90384455-611A-4258-BC6D-90CEA9CD5108}, zuletzt abgerufen am 17.06.2017
  6. Sukzessive Approximation: http://www.vias.org/mikroelektronik/adc_succapprox.html, zuletzt abgerufen am 03.07.2017
  7. Sukzessive Approximation: http://www.vias.org/mikroelektronik/adc_succapprox.html, zuletzt abgerufen am 03.07.2017
  8. SVN-Ordner mit Simulinkmodell: https://svn.hshl.de/svn/BSE_SigSys/trunk/User/Kohorte_04_SoSe17/Cosima_Eckert-Ludwig
  9. Eichler, Hans Joachim ; Kronfeldt, Heinz-Detlef ; Sahm, Jürgen: Das neue Physikalische Grundpraktikum. Berlin Heidelberg New York: Springer-Verlag, 2016.
  10. Video des Projekts: https://www.youtube.com/watch?v=PMCbL7rLTKo&feature=youtu.be, zuletzt abgerufen am 23.06.2017