Objekterkennung mit TeraRanger mit Matlab/Simulink auf einem EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Verfasser: Oleg Patrusev

Betreuer: Prof. Dr.-Ing. Ulrich Schneider

→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017

Aufgabe

Im Rahmen des Projektes für das Modul "Signalverarbeitende Systeme" musste ein EV3 Lego Roboter so programmiert werden, dass er vor einem Objekt mit einem Abstand von 5 cm zum Stillstand kommt. Für den zugeteilten Sensor IR Seeker V2 ist ein zusätzliches Ziel hinzugefügt worden. Dieser muss zunächst einen IR Ball identifizieren und dann in einem Abstand von 5 cm zu diesem, zum Stillstand kommen.

Für eine systematische Recherche und Lösung dieser Aufgabe sind entlang der Signalverarbeitungskette folgende Fragestellungen definiert und gestellt worden:

Schritte zur Signalbearbeitung

  1. Auswahl eines Primärsensors
    1. Wie funktioniert der Sensor?
    2. Welche Rohsignale liefert der Sensor?
  2. Signalvorverarbeitung
    1. Sollen Messwerte oder vorverarbeitete Daten übertragen werden?
    2. Wie lässt sich eine Vorverarbeitung umsetzen?
    3. Wird eine Kennlinie eingesetzt? Wenn ja, wie wird diese kalibriert?
  3. Analog-Digital-Umsetzer
    1. Wie werden die analogen Signale umgesetzt?
    2. Welcher ADU kommt zum Einsatz?
    3. Welche Gründe sprechen für diesen ADU? Alternativen?
  4. Bussystem
    1. Wird ein Bussystem zwischen Sensor und Mikrocontroller eingesetzt?
    2. Wenn ja, wie funktioniert dieses Bussystem?
  5. Digitale Signalverarbeitung
    1. Welche Verarbeitungsschritte sind notwendig?
    2. Welche Filter werden angewendet?
    3. Bestimmen Sie Auflösung, Empfindlichkeit und Messunsicherheit des Sensors.
  6. Darstellung der Ergebnisse
    1. Welche Fehler treten in welchem Verarbeitungsschritt auf?
    2. Stellen Sie die Messunsicherheit bzw. das Vertrauensintervall dar.

Restriktion der Programmierumgebung

Die Programmierung des EV3 Roboters muss mit dem Programm MATLAB durchgeführt werden.

Technische Spezifikationen des Sensors

Abbildung 1: IR Seeker V2 Sensor

Der Sensor NXT IRSeeker V2 wird von der Firma HiTechnic hergestellt. Es ist ein Infrarot Sensor mit mehreren Betriebsmodi und Funktionsweisen. Er identifiziert Infrarot-Signale aus verschiedenen Quellen wie Fernbedienungen, Sonnenlicht oder aus dem IR Ball (siehe Kapitel IR-Ball Referenzdaten), der ebenfalls von der Firma HiTechnic hergestellt wird. Die verschiedenen Betriebsmodi sind in den nachfolgenden Kapiteln näher erläutert

Modulated Mode (AC)

In diesem Modus detektiert der Sensor modulierte bzw. regulierte Infrarot-Signale. Dazu zählen z. B. Fernbedienungen oder der IR Ball. In dem AC Mode filtert der Sensor ungewollte IR Signale heraus. Dazu gehören z.B. Interferenzen, die von Licht oder Sonne verursacht werden. In diesem Modus ist er auf Rechtecksignale mit einer Frequenz von 1200 Hz eingestellt.

Un-modulated Mode (DC)

In diesem Modus ist der Sensor in der Lage unmodellierte und unbestimmte IR-Signale zu identifizieren und zu messen.

Aufbau und Funktionsweise

Abbildung 2: Suchbereiche des IR Seeker V2
Abbildung 3: Suchbereiche des IR Seeker V2
Abbildung 4: I2C Schnittstelle

Der digitale Sensor besteht aus mehreren Teilen. Das Gehäuse ist aus Plastik. Weitere konstruktive und elektrische Komponenten sind:

  • 5 IR Sensoren, die jeweils in verschiedene Richtungen zeigen
  • eine abgerundete Objektivabdeckung, die dafür sorgt, dass eine unverzerrtes IR-Signal empfangen werden kann
  • ein leistungsfähiger DSP (digital signal processor) Prozessor, der die Signalverarbeitung für alle 5 Ein- und Ausgänge der Photodioden übernimmt (Verarbeitung von DC Signalen wie auch modulierten Signalen in einem Frequenzbereich zwischen 600 Hz und 1200 Hz)
  • ein Oszillator, der bei 10 Mhz läuft
  • und ein IC für die Signalvorverarbeitung

Für die jeweiligen fünf Infrarot Detektoren ist einem spezifischer Sektor zugewiesen (Abbildung 2). Die 5 Detektorsektoren sind in 9 Bereiche aufgeteilt (Abbildung 3). Jeder IR-Detektor überwacht einen Winkelbereich von 60°. Damit ergibt sich ein Gesamterfassungswinkel von 300°.


Durch den IR Seeker V2 werden folgende Werte ausgegeben. Ein Wert zwischen 0 und 9, der die Richtung identifiziert, aus welcher das IR-Signal kommt und Werte zwischen 0 bis 255 aus. Ein gemessener 0 Wert ist auf ein nicht gefundenes IR-Signal zurückzuführen. 255 ist der höchste Wert der gemessen werden kann und definiert die höchste Signalstärke.

Jeder IR-Detektor ist also in der Lage die Richtung eines IR-Signal zu identifizieren und seine Stärke zumessen.

Register Layout der IR Seekers V2

Adresse Datentyp Inhalt
41H Byte Modus (AC/DC)
42H Byte DC Richtungswert
43H Byte DC Sensor 1 Signalstärke
44H Byte DC Sensor 2 Signalstärke
45H Byte DC Sensor 3 Signalstärke
46H Byte DC Sensor 4 Signalstärke
47H Byte DC Sensor 5 Signalstärke
48H Byte AC Richtungswert (0-9)
49H Byte AC Sensor 1 Signalstärke
48H Byte AC Sensor 2 Signalstärke
48H Byte AC Sensor 3 Signalstärke
48H Byte AC Sensor 4 Signalstärke
48H Byte AC Sensor 5 Signalstärke
48H Byte DC Signal durchschnittliche Stärke
0 ×10 - I2C Adresse


Der Sensor besitzt eine I2C Schnittstelle und erlaubt damit eine direkte digitale Signalverarbeitung im Programm MATLAB.


IR-Ball Referenzdaten

Abbildung 5: IR-Ball


Der IR-Ball wird ebenfalls von der Firma HiTechnic hergestellt und besteht aus folgenden Komponenten un Refernzgrößen:

  • ein durchsichtiges Plastikgehäuse (Durchmesser 75mm)
  • ein Attiny Microcontroller zur Steuerung der Dioden
  • 20 IR LEDs, die im Wellenbereich λ=940nm arbeiten
  • Stromversorgung über 4×AA Akkus
  • Gewicht ohne Akkus=95g, Geicht mit Akkus=150g

Der IR-Ball dient in der Aufgabenstellung als Hindernis vor dem es in einem Abstand von 5 cm zu stoppen gilt.




Signalbearbeitung und Verbindung des Sensors mit dem EV3

Abbildung 6: Gesamtkonzept

Der IR Seeker V2 ist ein NXT Sensor. Es existieren vorgefertigte Bausteine für die originale LEGO Software. Die Einbindung und die Verarbeitung der Daten musste mit dem Programm MATLAB durchgeführt werden. Für die Realisierung einer Verbindung mit MATLAB muss dazu ein I2C Script erstellt werden, weil der Sensor von MATLAB nicht erkannt wird. Es wurde nach Alternativen gesucht und es wurde entschieden die Daten durch einen seriellen Port mit einem Arduino Microkotroller auszulesen und diese an MATLAB zu übertragen. Abbildung 6 zeigt das Gesamtkonzept der Verschaltung.

Der Infrarot Ball sendet ein Signal durch die LEDs. Das Signal wird von dem Sensor im AC Mode detektiert und durch die Ansprache der richtigen Adressen wird die Richtung, der Winkel und Signalstärke ausgelesen. Diese Funktion übernimmt der Arduino auf dem ein Skript hochgeladen ist. Dann wird das MATLAB Skript ausgeführt und durch eine Funktion werden die Daten aus dem seriellen Port abgefangen. Diese wandelt dann MATLAB in ein "double" Format um. In MATLAB erfolgt dann die tatsächliche Steuerung der EV3 Motoren und es wird die Auslöseschwelle für die Notbremsung festgesetzt (siehe Code MATLAB).

Verbindungsstruktur und die Programmablaufpläne

Abbildung 7: Schaltung Arduino/Batterie/Sensor

Abbildung 7 zeigt die Verbindungsstruktur der Bausteine und Komponenten. Für die Verbindung zwischen dem Arduino und em IR Seeker V2 ist ein RJ12 Kabel aufgeschnitten worden. Der Sensor wird mit Spannung aus der 9V Batterie versorgt. Abbildung 8 zeigt den Programmablaufplan des Sketchs auf dem Arduino. Die Sensordaten werden in einer Dauerschleife ausgelesen. Das MATLAB Skript greift die Werte am seriellen Port ab. Es werden 50 Messungen durchgeführt. Solange der Schwellenwert von 239 nicht erreicht ist, sind die Motoren des EV3 aktiv. Diese werden durch das MATLAB Skript gesteuert. Abbildung 9 zeigt den Programmablaufplan des MATLAB Skripts. Die Quellcode Dateien sind in dem SVN Archiv hinterlegt [8].

Analog-Digital Wandler

Abblidung 8: sukszessiver Approximator

Der Arduino verwendet einen sukzessiven Approximator (Wägeverfahren). Die Umsetzung erfolgt dabei in mehreren Schritten durch den Vergleich der unbekannten Spannung mit einer bekannten Spannung, die vom ADC mithilfe der Referenzspannung erzeugt wird. Durch Vergleich der beiden Spannungen wird die Differenz ermittelt, und vom ADC eine neue Vergleichsspannung generiert. Dies läuft solange ab, bis im Rahmen der Wandler-Auflösung beide Spannungen gleich sind. Man kann dieses Verfahren mit einer Balkenwaage vergleichen, auf die man nacheinander immer kleinere Gewichte legt, bis das Wägegut aufgewogen ist.

Signalvorverarbeitung

Die Signalvorverarbeitung geschieht bei dem IR Seeker V2 bereits bei dem Gehäuse. Die abgerundete dunkle Abdeckung des Sensors soll bestimmte Wellenlängen des Lichts herausfiltern. Eine weitere Stuffe in der Vorverarbeitung ist der AC-Mode. Durch diesen Modus ist der Sensor in der Lage modellierte IR-Signale auf einer bestimmten Wellenlänge zu empfangen. Dadurch sollen die Interferenzen minimiert werden. In der Praxis ist dieser Modus so viel versprechend wie er ist leider nicht tauglich.

Modellierung der Sensorkennlinie

Die genauen IR-Detektoren in dem IR Seeker V2 konnten nicht genau identifiziert werden. Auch auf Nachfrage bei dem Hersteller sind keine spezifischen Datenblätter herausgegeben worden. Es wurde recherchiert, ob der Sensor demontiert werden kann. Ohne gewaltsames Öffnen und bleibende Schäden ist dies leider nicht möglich und wurde auch unterlassen. Aus diesem Grund sind mehrere statische und dynamische Versuche durchgeführt worden. Diese werden in den nachfolgenden Kapiteln erklärt und die Ergebnisse nach wissenschaftlichem Standard dargestellt.

Bei der Durchführung der Versuche ist auf messtechnische Grundlagen geachtet worden. Systematische und zufällige Fehler werden identifiziert, berechnet und herausgerechnet. Weiterhin wurden folgende Vorkehrungen getroffen um die Fehler bei der Versuchsdurchführung zu minimieren:

  • Der Plastikkanal hat eine Länge von 120 cm
  • Der Kanal ist in vier Bereiche aufgeteilt mit einer Segmentgröße von 30 cm
  • Für die Versuchsdurchführung ist eine abgedunkelter Raum ausgesucht worden (Trotz des AC Modus können nicht alle Interferenzen beseitigt werden)

Statische Versuche

Für die statischen Versuche ist ein provisorische Versuchsumgebung gebaut worden um die systematischen Fehler so weit wie möglich zu vermeiden.

Statischer Versuch 1

Diagramm 1: statischer Versuch 1

Beim statischen Versuch 1 ist der Richtungsbereich 5 als Referenzrichtung gewählt worden. Zunächst musste der maximale Entfernungsbereich Δt max zwischen dem Sensor und dem IR-Ball bestimmt werden. Der Sensor verliert bei einer Entfernung von über 378 cm die Konnektivität zu dem IR-Ball. Die nachfolgende Tabelle zeigt die verschiedenen Wertepaarungen. Die Entfernung der IR-Balls zu dem Sensor wurde in jedem Messchritt um 30 cm verkürzt. Das Diagramm 1 stellt die Kennlinie dar. Die rot gestrichelte Linie ist die berechnete Regressionsgerade.

Entfernung in cm Δt 378 360 330 300 270 240 210 180 150 120 90 60 30 0
gemessene Signalstärke 0 5 23 25 29 35 39 50 71 106 117 132 179 202

Durch die Regressionsgerade lässt sich ein lineare Kennlinie beschreiben. Für eine möglichst Hohe Aussagekraft bei der Berechnun der Sensokennlinie wird ein weiterer statischer Versuch durchgeführt.

Statischer Versuch 2

Diagramm 2: statischer Versuch 2

Die Durchführung für den zweiten statischen Versuch geschah unter den selben Bedingungen. Als Refenz IR-Detektor wurde der dritte Bereich (Abbildung 2) ausgewählt. Dazu wurde der EV3 in einem 45° zu dem Versuchskanal gestellt. Auch hier wurde zunächst die maximale Entfernung Δt max bestimmt. Diese beträgt 369,5 cm. Ab dieser Antfernung verliert der Sensor die Konnektivität mit dem IR-Ball. Die folgende Tabelle zeigt die resultierenden Wertepaarungen und die dazugehörigen Messwerte. In jedem Messschritt wurde die Entfernung um 30 cm verkürzt.


Entfernung in cm Δt 369,5 360 330 300 270 240 210 180 150 120 90 60 30 0
gemessene Signalstärke 0 8 25 27 30 38 45 62 76 112 120 130 190 208



Auswertung

Nach den statischen Versuchen ist eine Durschnittsfunktion gebildet worden. Die Kennlinie verläuft nicht linear. Diese wurde in drei Bereiche aufgeteilt

  • linearer Bereich 1
  • exponentieller Bereich
  • linearer Bereich 3


Aus den dargestellten Funktionsbereichen ist eine Sensorkennlinie für den IR Seeker V2 im statischen Zustand modelliert worden (Diagramm 7).

Diagramm 7: statische Sensorkennlinie

Dynamische Versuche

Für die Simulation des bewegenden EV3 sind dynamische Versuche durchgeführt worden. Der IR-Ball wurde aus einer Höhe von 7 cm mittels einer Führungsschiene in den Versuchskanal gebracht. Die Länge dieses wurde aufgrund der Führungsschiene um 30 cm reduziert. Damit ergibt sich eine Gesamtlänge von 90 cm. Für eine dynamische Betrachtung der Werte ist der Versuch 10 Mal durchgeführt worden. Dabei wurde die Zeit erfasst, die der IR-Ball zum Durchqueren des Kanals gebraucht hat und von dem Sensor wurden Werte in einem 50 ms Takt aufgenommen. Für die Auswertung wurden 75 Werte von jeder Messung entnommen. Dann ist der Durchschnittswert zu jeder Entfernung in 1,2 cm Schritten ermittelt worden. Diagramm 3 zeigt den Verlauf der Werte un berechnet die Regressionsgerade. Folgende Werte sind zu dem Diagramm zusätzlich festzuhalten

Diagramm 8: dynamische Sensokennlinie

Auswertung der statischen und dynamischen Versuche

Nach den statischen Versuchen ist eine Durchschnittsfunktion gebildet worden. Die Kennlinie verläuft nicht linear. Diese wurde in drei Bereiche aufgeteilt:

  • linearer Bereich 1
  • exponentieller Bereich
  • linearer Bereich 3


Aus den dargestellten Funktionsbereichen ist eine statische Sensorkennlinie modelliert worden (Diagramm 8).

Diagramm 8: statische Sensorkennlinie

Erkenntnis: "Wer misst misst Mist"

Die Modellierung und die Entnahme der Werte des Sensors hat sich als sehr schwierig gestaltet. Zu einem ist der Sensor sehr anfällig für Interferenzen. Dementsprechend ist der Schwellenwert je nach den Umgebungsbedingungen unterschiedlich.

Eine weitere ausschlaggebende Größe ist der IR-Ball. Durch den Energieverbrauch wird auch eine immer geringere Signalstärke ausgegeben, was die Modellierung eine Sensorkennlinie über das Zeit-Weg Verhältnis unmöglich macht. Der beste Abstandswert der während einer Notbremsung erreich wurde beträgt 8 cm mit einem Sensorwert von "239". Dazu wurde der Raum abgedunkelt, wodurch die Videoqualität gelitten hat und der IR-Ball wurde mit voll aufgeladenen Batterien ausgestattet.

Der Versuch wurde innerhalb eines Zeitabstandes von 5 Minuten 5 Mal durchgeführt und die Ergebnisse können den Abbildungen x-x entnommen werden. Der Einfluss der zufälligen Fehler ist enorm sodass keine eindeutigen Aussagen über den Schwellenwert gemacht werden können


Das YouTube Video

Video Aufgrund des abgedunkelten Raumes ist die Videoqualität nicht optimal.

Quellen


[1] https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NSK1042
[2] http://botbench.com/blog/2009/06/19/shocking-ir-seeker-v2-exposed/
[3] https://roboticstrinitycollege.wordpress.com/how-tos/07-infrared-sensor/
[4] https://de.wikipedia.org/wiki/Datentyp
[5] http://www.produktinfo.conrad.com/datenblaetter/175000-199999/191437-an-01-ml-INFRAROT_BALL_F_ROBOTER_FUSSBALL_de_en.pdf
[6] https://blog.blechschmidt.saarland/hitechnic-infrared-seeker-library-for-arduino/
[7] http://www.gomatlab.de/
[8] https://svn.hshl.de/svn/BSE_SigSys/trunk/User/Kohorte_04_SoSe17/Oleg_Patrusev/

→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017