Objekterkennung mit rotierenden Infrarotsensor mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Thorsten Drees
Betreuer: Prof. Dr.-Ing. Ulrich Schneider

Aufgabenstellung

Begleitend zu der Vorlesung „Signalverarbeitende Systeme“ besteht die Aufgabe des Studenten darin, dass ein LEGO Mindstorm Roboter mit EV3 Brick mittels eines Sensors ein Hindernis erkennt und automatisch abbremst. Diese Notbremsung soll erfolgen, sobald sich ein Objekt (Kopierpapierkarton) 20 cm vor dem Roboter befindet. Als Sensor kommt in diesem Projekt ein rotierender LEGO Infrarot Sensor zum Einsatz. Die Programmierung soll in Matlab und/oder Simulink implementiert werden. Zudem ist ein Video zu erstellen, welches die Funktionalität demonstriert.

Projektplan

Zur zeitlichen Planung des Projekts wurde ein Gantt Chart mit MS Project 2016 erstellt. Dieses ist in Abbildung 1 zu sehen.

Abbildung 1: Gantt-Chart

Primärsensor

Abb.2: Lego Infrarot Sensor [8]

Als Sensor für die Distanzmessung kommt der Lego EV3 Infrarot Sensor zum Einsatz. Dieser Sensor hat drei Funktionen: • IR proximity Sensor • IR seeker Sensor • IR remote control Receiver Für dieses Projekt wird der Sensor als „IR proximity Sensor“ eingesetzt. In diesem Modus bestimmt der Sensor eine relative Distanz zu einem vor ihm liegenden Objekt. Als Ausgabe liefert der Sensor einen Wert von 0 (sehr nah) bis 100 (maximale Entfernung). Implementiert ist dieser Sensor als digitaler Sensor. Das bedeutet, dass der Sensor einen kleinen 8-bit Mikrocontroller integriert hat, welcher über den UART-Bus mit dem EV3-Brick kommuniziert.





Funktionsweise des Sensors

Der Sensor besteht grundlegend aus zwei Bauteilen. Zum einen besteht der Sensor aus einer infraroten LED und zum anderen aus einer Fotodiode. Die Infrarot-LED sendet einen Infrarotlichtstrahl auf ein Objekt aus. Ein Teil des ausgesendeten Lichtes wird vom Objekt reflektiert und von der Fotodiode empfangen. Die Intensität des reflektierten Lichtes ist dabei umgekehrt proportional zum Quadrat der Distanz. Die vom optischen Sensor erzeugten analogen Spannungswerte werden durch den AD-Wandler des Sensors in Digitalwerte umgewandelt. Zudem findet im Mikrocontroller die Vorverarbeitung statt, indem die Werte auf Entfernungswerte von 0-100 normiert werden. Da dieser Sensor nicht nach der Triangulation als Messmethode arbeitet sondern nach der reflektierten Lichtmenge, treten je nach Oberfläche und Farbe des Objektes stark unterschiedliche Entfernungswerte auf. Die höchste Sensibilität hat der eingesetze optische Sensor bei einer Wellenlänge von ca. 900 nm und es wird alle 50 mS eine Messung durchgeführt. Das schließt Störeinflüsse durch Umgebungslicht nahezu aus. Abbilung 3 Zeigt dazu schematisch die Funktionsweise falls sich kein Objekt vor dem Sensor befindet. [3]

Abb.3: Kein Objekt vor dem Sensor [2]

Sobald sich ein Objekt vor dem Sensor befindet erfasst die Fotodiode das reflektierte Infrarotsignal.Dies ist in der Abbildung 4 zu sehen.

Abb.4: Objekt vor dem Sensor [2]

Rohsignale des Sensors

Der eigentliche Infrarotsensor, also der optische Sensor (Fotodiode), gibt analoge Spannungswerte aus. Leider war es nicht möglich hierzu eine Kennline des Sensors zu erhalten. Die Rohsignale des fertigen LEGO Infrarotsensors bestehen aus int8 Werten von 0-100. Die Ausgabe erfolgt über den UART-Bus auf pin 5 und 6.

Signalvorverarbeitung

Abb.5:Schaltplan [1]

Bei dem verwendeten Sensor handelt es sich um einen digitalen Sensor welcher vorverarbeitete Daten überträgt. Durch den optischen Sensor (Fotodiode) wird die Intensität des reflektierten Lichtes, welches umgekehrt proportional zum Quadrat der Distanz ist, in eine Spannung gewandelt. Diese Spannung wird durch den ADU in einen digitalen Wert umgesetzt und im Mikrocontroller auf einen relativen Distanzwert von 0-100 normiert. Die dafür eingesetzte Kennlinie ist leider nicht verfügbar. Der Schaltplan auf welchem auch der eingesetze Microcontroller gezeigt ist, ist in Abbildung 5 zu sehen.





Analog-Digital-Umsetzer

Umsetzung der analogen Signale

Die Analogwerte werden innerhalb des Sensors mittels eines Microcontrollers mit der Bezeichnung STM8S103F3 umgesetzt.

Eingesetzer ADU

Abb.6:Prinzip der sukzessiven Approximation [5]

Bei diesem Microcontroller kommt ein ADU nach dem Prinzip der sukzessiven Approximation zum Einsatz. Die genauen Daten des ADU sind folgende:

  • 10-bit successive approximation A/D converter (ADC1) with up to 5 external multiplexed input channels
  • Input voltage range: 0 to VDD
  • Conversion time: 14 clock cycles
  • Single and continuous and buffered continuous conversion modes
  • Buffer size (n x 10 bits) where n = number of input channels
  • Scan mode for single and continuous conversion of a sequence of channels
  • Analog watchdog capability with programmable upper and lower thresholds
  • Analog watchdog interrupt
  • External trigger input
  • Trigger from TIM1 TRGO
  • End of conversion (EOC) interrupt

Die AD-Wandler, wie der hier eingesetzte, funktionieren nach dem folgenden Prinzip: Das analoge Messsignal wird in n Schritten digitalisiert, wobei die Genauigkeit bei jedem Schritt um 1 Bit steigt. Bei jedem Schritt wird die Eingangsspannung mit einer Referenzspannung verglichen, die durch einen DA-Wandler erzeugt wird. Je nachdem, ob die Eingangsspannung größer oder kleiner als die Spannung des DA-Wandlers ist, wird die Referenzspannung im nächsten Schritt um die halbe Schrittweite des letzten Schrittes nach oben oder nach unten verändert. Dadurch nähert sich die Spannung des DA-Wandlers immer mehr der Eingangsspannung an. Zum Schluss, wenn das letzte Bit des DA-Wandlers gesetzt ist, entspricht der Wert des DAUs ungefähr der Eingangsspannung. [4]

Gründe für diesen ADU

Gründe, welche für diesen ADU sprechen, gibt es einige. Zum einen die hohen Abtastraten im Millisekundenbereich. Zudem sorgt die konstante Umsetzzeit für eine genaue Messung. Der Implementierungsaufwand bei dieser Art von DAUs ist zudem gering und die Kosten niedrig. Das Prinzip der sukzessiven Approximation eignet sich außerdem hervorragend zur Nachbildung per Software.

Bussystem

Bussystem zwischen Sensor und Mikrocontroller

Zwischen dem Sensor und dem EV3 Brick kommt ein UART-Bus zum Einsatz. Dabei kommuniziert der im Sensor integrierte Microcontroller über den UART-Bus auf Pin 5 und 6 mit dem EV3 P-Brick. Der Microcontroller mit der UART-Schnittstelle ist in Abbildung 7 gezeigt.

Abbildung 7: Microcontroller mit UART-Schnittstelle

Funktionsweise des Bussystems

UART steht für Universal Asynchronous Receiver Transmitter. Diese digitale serielle Schnittstelle ist im Fall dieses EV3-Sensors als Funktionsblock eines höherintegrierten Bauteiles (hier der STM8S103F3 Mikrocontroller) ausgeführt. Die verwendete UART-Schnittstelle dient zum Senden und Empfangen von Daten über eine Datenleitung. Die Daten werden als serieller digitaler Datenstrom mit einem fixen Rahmen übertragen, der aus einem Start-Bit, fünf bis maximal neun Datenbits, einem optionalen Parity-Bit zur Erkennung von Übertragungsfehlern und einem Stopp-Bit besteht. Bei der hier verwendeten UART-Kommunikation werden ein Start-Bit, 8 Daten-Bits, ein Stopp-Bit und kein Parity-Bit eingesetzt. [1] Durch die asynchrone Betriebsweise wird kein eigenes Taktsignal auf einer Übertragungsleitung benötigt. Stattdessen synchronisiert sich der Empfänger über die Länge des Rahmens. Dieser ist gegeben durch die Schaltflanke von Start- und Stopp-Bit, sowie die eingestellte Baudrate (entspricht der Bitrate). Der Beginn einer Übertragung kann zu beliebigen Zeitpunkten mit dem Start-Bit erfolgen, daher wird diese serielle Schnittstelle als asynchron bezeichnet. Um eine Synchronisation gewährleisten zu können, ist die Anzahl der übertragbaren Bits eingeschränkt. [6]

Digitale Signalverarbeitung

Verarbeitungsschritte im Simulink-Modell

Abbildung 8: Objekterkennung

Der Ablauf des Programmes zur Robotersteuerung ist im Programmablaufplan (Abbildung 9) gezeigt. Das MATHLAB Simulink-Modell befindet sich im SVN . Die digitale Signalverarbeitung gliedert sich bei diesem Projekt einmal in die Reglung zum Schwenken des Sensors und in die Objekterkennung mittels des Infrarotsensors. Die Regelung des Schwenkwinkels des Infrarotsensors wird durch einen PI-Regler übernommen. Die Regelstrecke hat ein Integrierendes Verhalten. Als Soll-Wert dient ein Sinus mit der Amplitude von 35. Diese 35 entsprechen einem maximalen Soll-Winkel von 35 °. Über den Encoder des EV3-Motors wird der Ist-Winkel auf den Regler zurückgeführt. Zur Objekterkennung wird die relative Entfernung, welche vom Infrarotsensor ausgegeben wird, mittels Lookup-Table in eine absolute Entferung umgerechnet. Im Anschluss kann zusammen mit dem Winkel des Encoders eine Punktewolke um ein erkanntes Objekt gelegt werden. Sobald ein Punkt dieser Wolke einen X-Wert unter 20 cm bzw. einen Y-Wert unter 20 cm aufweist, wird eine Notbremsung durchgeführt. Abbildung 8 dient zur schematischen Veranschaulichung der eingesetzten Logik hinter der Objekterkennung

Abbildung 9: Programmablaufplan

Empfindlichkeit des Sensors

Der Infrarotsensor macht im Proximity Mode alle 50 mS eine Messung. Die relative Wellenlängenempfindlichkeit ist in der Abbildung 10 dargestellt. Wie man sieht, ist der Sensor um 900 nm am empfindlichsten.

Abbildung 10: Wellenlängenempfindlichkeit

Da der Sensor nur relative Entfernungswerte von 0-100% ausgibt, kann hier die Messunsicherheit nicht angegeben werden. Das geschieht am Ende dieses Artikels, nachdem durch eine erstelle Lookup-Table die relativen Werte in absolute Entfernungswerte umgerechnet wurden.

Darstellung der Ergebnisse

Die Aufgabe der Objekterkennung sowie der Notbremsung wird erfüllt. Der Roboter stoppt vor dem Objekt, falls es sich in der Fahrbahn des Roboters befindet. Die Entfernung zum Objekt liegt dabei zwischen 14 cm und 18 cm, mehr dazu im Unterpunkt Messunsicherheit. Falls das erkannte Objekt nicht in der Fahrbahn des Roboters ist, wird das erkannt und der Roboter fährt an dem Objekt vorbei. Es ist anzumerken, dass die Messung des Abstandes extrem von der Oberfläche und der Farbe des Objektes abhängig ist. Dies liegt an dem eingesetzen Verfahren zur Ermittlung der Entfernung. Hier besteht auch das größte Optimierungspotenzial. Durch den Einsatz eines Infrarot-Sensors, welcher die Entfernung nach dem Triangulationsverfahren bestimmt, kann die Objekterkennung weitgehend unabhängig von Farbe und Oberfläche des Objektes geschehen.

Fehler in den einzelnen Verarbeitungsschritten

In der Signalverarbeitungskette können bei diesem Projekt an verschiedenen Verarbeitungsschritten Fehler auftreten. Beispielsweise können bei der AD-Umwandlung folgende Fehler auftreten:

  • Quantisierungsfehler
  • Amplitudenfehler
  • Linearitätsfehler
  • Phasenfehler
  • Quantisierungsrauschen

Weitere Fehler kommen von der Ungenauigkeit bei der Umrechnung der relativen Entfernung mittels der eingesetzten Lookup Table sowie der Winkelmessung zustande. Zudem kommt es zu Rundungsfehlern bei der Berechnung der X- und Y-Koordinaten. Bevor die Notbremsung eingeleitet wird, muss vorher eine komplette Messreihe aufgenommen worden sein während der sich der Roboter weiter bewegt. Das führt dazu, dass dieser nicht bei genau 20 cm stoppt sondern die Entfernung zum Objekt immer unter 20 cm liegt.

Messunsicherheit und Vertrauensintervall

Tabelle 1: Messfehler

Um die Genauigkeit der absoluten Entfernungsmessungen einschätzen zu können, wurde ein Messplatz aufgebaut. Als Objekt wurde ein weißer Karton verwendet. Die Entfernung zum Karton wurde mittels eines Maßbandes auf dem Boden ermittelt. Nun wurde der Roboter in verschiedenen Abständen zum Karton positioniert. Diese Entfernung, sowie die mittels Infrarot Sensor ermittelte Entfernung und die absoluten und relativen Fehler sind in Tabelle 1 zu sehen. Zudem ist in Abbildung 11 die Kalibierungsgerade zu sehen. Dort ist eine sehr gute Linearität zu erkennen.

Abbildung 11: Kalibiergerade


Lessons Learned

Youtube-Video

Einzelnachweise

[1] https://education.lego.com/de-de/support/mindstorms-ev3/developer-kits Abgerufen am 20.05.2017
[2] http://www.eetimes.com/document.asp?doc_id=1272536 Abgerufen am 25.05.2017
[3] http://www.g9toengineering.com/AllSaints/infraredproximity.htm Abgerufen am 01.06.2017
[4] http://www.vias.org/mikroelektronik/adc_succapprox.html Abgerufen am 01.06.2017
[5] Skript Signalverarbeitende Systeme; Prof. Dr.-Ing. Ulrich Schneider; 2017
[6] https://de.wikipedia.org/wiki/Universal_Asynchronous_Receiver_Transmitter Abgerufen am 09.05.2017
[7] http://www.st.com/en/microcontrollers/stm8s103f2.html Abgerufen am 09.05.2017
[8] https://sh-s7-live-s.legocdn.com/is/image/LEGO/45509?$PDPDefault$ Abgerufen am 09.06.2017


→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017