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 Fargestellungen 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 Pragrammierumgebung

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), 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 Winkelbreich 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 x: 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 x: Gesamtkonzept

Der IR Seeker V2 ist ein NXT Sensor. Es existieren vorgefertigte Bausteine für die originale LEGO Software. Die Einbindung und die Verabeitung der Daten musste mit dem Programm MATLAB durchgeführt werden. Für die Realisierung einer Verbindung mit MATLAB muss dazu ein I"C 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 Arfuino Microkotroller auszulesen und diese an MATLAB zu übertragen. Abbildung x zeigt das Gesamtkonzept der Verschaltung.

Der Infrarot Ball sendet eine 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 eine 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. IM MAtlab erfolgt dann die tatsächliche Steurung der EV3 Motoren und es wird die Bremsschwelle festgesetzt (sie Code MATLAB).

Verbindungsstruktur

Schaltung Arduino/BAtterie/Ssnsor

Abbildung x 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.

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 und wurde mit doppelseitigem Industrieklebeband befestigt
  • Der Kanal ist in vier Bereiche aufgeteilt mit einer Segmentgröße von 30 cm
  • Für die Versuchsdurchführung ist eine Kellerraum ausgesucht worden, der sich komplett abdunkeln lässt (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 8).

Diagramm 8: 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 is tder Durschnittswert zu jeder Entfernung zu der 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 3: dynamische Sensokennlinie

Auswertung der statischen und dynamischen Versuche

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 statische Sensorkennlinie modelliert worden (Diagramm 8)

Diagramm 8: statische Sensorkennlinie


→ zurück zum Hauptartikel: Signalverarbeitende Systeme SoSe2017