Objekterkennung mit HiTechnics EOPD mit Matlab/Simulink und EV3

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autorin: Lena Gödeke
Betreuer: Prof. Dr.-Ing. Ulrich Schneider

In diesem Projekt wird ein fahrbarer und lenkbarer Roboter, der einen EOPD (Electro Optical Proximity Detector)- Sensor enthält, mit Lego Mindstorms EV3 gebaut. Der Roboter soll mit Hilfe des Sensors ein Hindernis erkennen, das Signal verarbeiten und daraufhin automatisch abbremsen, sodass das Fahrzeug 5 cm vor dem Hindernis zum Stehen kommt.

Auswahl eines Primärsensors

EOPD-Sensor

Der Primärsensor ist ein EOPD Sensor, der im vorderen Bereich des EV3 Robotors angebracht wurde.

Funktionsweise

Der EOPD Sensor ist ein Näherungssensor, der eine interne Lichtquelle (rote LED) und ein sensitives Element nutzt, um eine Distanz zu einem Hindernis indirekt zu messen. Der Sensor wirft über die rote LED(Sender) einen kegelförmigen Lichtstrahl aus. Trifft dieser auf einen Gegenstand wird der Lichtkegel reflektiert. Ein Teil des reflektierten Lichts gelangt wieder zurück zum Sensor. Das zurückkommende Licht wird vom Sensor über das sensitive Element, eine Photodiode (Empfänger), gemessen. Da das reflektierte Licht von der Beschaffenheit des Zielgegenstandes und der Distanz zum Hindernis abhängt, ist dieser gemessene Wert proportional zur Distanz zum Hindernis und zur Beschaffenheit des Hindernisses. Um nun die Distanz messen zu können, muss die Beschaffenheit der Zieloberfläche bekannt sein und der Sensor vor der Messung darauf kalibriert werden. Auf diese Weise können Ziele, die zwischen 0 und 20 cm entfernt sind, vom EOPD Sensor erkannt werden. Der Unterschied zu anderen Lichtsensoren ist, dass der Sensor das Licht gepulst auswirft. Durch das gepulste Licht ist das Signal nicht von den äußeren Verhältnissen abhängig, da die gepulsten Signale deutlich von den äußeren Lichtverhältnissen zu unterscheiden sind.

Rohsignale des Sensors

Rohdaten des EOPD Sensors

Der Sensor liefert eine analoge Spannung. Dieser Wert nimmt mit steigendem Abstand zum Hindernis ab. Beim EV3 werden die Daten über ein sechsadriges Kabel übertragen. Auch die Spannungsversorgung läuft über dieses Kabel. Die genaue Pinbelegung des Steckers ist in der unten dargestellten Tabelle zu sehen. Der analoge Wert wird vom EV3 Roboter mit einem Analaog- Digital- Wandler eingelesen.

Leitung Funktion Ausgang(Motor) Eingang (Sensor)
1 Analoge Datenleitung PWM 0 ANALOG
2 Analoge Datenleitung PWM1 GND
3 Masseleitung GND GND
4 Versorgungsspannung VDD VDD
5 Digitale Datenleitung I2 C 0 I2 C (SCL) 0
6 Digitale Datenleitung I2 C / 1 I2 C (SDA) 1 / Analog geg. Pin 3

[1]

In der Abbildung der Rohsignale sind die Rohsignale auf der y- Achse und die Distanz auf der x-Achse abgetragen. An dem Verlauf der Funktion ist zu erkennen, dass die Zuordnung antiproportional verläuft. Das bedeutet je Größer die wirkliche Distanz ist, desto kleiner sind die Rohdaten. Durch dem hyperbelförmigen Verlauf kann desweiteren geschlussfolgert werden, dass die Abnahme der Rohwerte quadratisch erfolgt. Somit kann die Funktion, die die Zuordnung zwischen Rohdaten und Distanz beschreibt, wie folgt zusammengefasst werden.


Nach der Distanz aufgelöst, ergibt sich daraus die nachfolgende Gleichung.


Um die Konstante ermitteln zu können, müssen die Werte linearisiert werden. Für die Linearisierung wird die Funktion auf die Form gebracht, so dass über der Steigung der Geraden die Abhängigkeit zwischen Distanz und abgelesen werden kann. Dieser Proportionalitätsfaktor entspricht der Konstanten.


Fehlerermittlung

Weiterhin zu beachten ist, dass Fehler bei der Messung auftreten können. Da nun die Formel zur Berechnung der Daten gegeben ist, kann überprüft werden ob und wie viel sie von der tatsächlichen Distanz abweichen. Aus der Abweichung wird der Mittelwert gebildet, der dann als Fehler in die oben angeführte Gleichung mit eingerechnet wird.


Signalvorverarbeitung

Das Signal wird vom Sensor an den EV3 als analoge Werte übergeben. Bevor die Daten zur weiteren Verarbeitung an den Analog-Digital-Wandler übergeben werden, wird das Signal über eine Sample and Hold Schaltung vor verarbeitet.

Sample & Hold Schaltung

Bei der Sample and Hold Schaltung wird das Signal abgetastet. Durch die Abtastung des wert- und zeitkontinuierlichen Signals wird ein wertkontinuierliches und zeitdiskretes Signal erzeugt. Die Schaltung hält das Eingangssignal während der Umsetzzeit des Analog-Digital-Wandlers konstant. Sie ist dem Analog-Digital-Umsetzer vorgelagert, weil es zu einem Amplitudenfehler kommen kann, wenn sich das Eingangssignal während der Umsetzung des analogen Signals zu einem digitalen Signal ändert.

Analog-Digital-Umsetzer

Ein Analog zu Digital Wandler (ADC) bildet die Größen des unendlichen Wertebereichs (analog) auf einen endlichen Wertebereich (digital) ab. Es wird eine physikalische Größe in einen binären Zahlenwert umgewandelt. Grund dafür sind viele Vorteile analoger Daten wie z.B. die geringere Anzahl an Ablesefehlern oder auch die Möglichkeit analoge Daten direkt von Computern weiterverarbeiten zu können. Es gibt verschiedene Arten von ADC. Der EV3 nutzt einen ADC, der mit der sukzessiven Approximation arbeitet (SAR).

Sukzessive Approximation

Blockschaltbild des SAR Wandlers

Bei der sukzessiven Approximation wird die Eingangsspannung mit einer veränderbaren Referenzspannung verglichen. Dieser Vergleich erfolgt schrittweise und wiederholt sich ständig. Die Referenzspannung wird nach einem Vergleich so geändert, dass sie sich immer mehr der Eingangsspannung annähert. Über die angenäherte Referenzspannung kann über Schaltungen eine binär Zahl der angelegten Spannung ermittelt werden. Das schematische Schaltbild eines SAR- Wandlers zeigt, dass dem ADC eine Sample and Hold Schaltung, wie sie im vorherigen Abschnitt beschrieben wurde, vorgelagert ist. Bestandteile des SAR- Wandlers sind der Komparator, das Steuerwerk, der SAR- Converter und der DA Wandler. Im EV3 Brick ist der ADS7957 der Firma Texas Instrument verbaut.

ADS7957 Texas Instruments

ADS7957 (ADC)

Der im EV3 Brick verwendete Analog-Digital-Umsetzer ist ein sukzessiver Approximierer der Firma Texas Instruments mit folgenden Eigenschaften:

  • 10 Bit Dualcode
  • 1024 Wägestufen
  • Uref = 2,5V
  • Ulsb = 2,4mV

Liegt eine Eingangsspannung von 1,5V an, wird diese Spannung mit 10 Takten der Referenzspannung verglichen. Diese Takte teilen sich nach auf, womit sich folgende Tabelle ergibt:

t1 1,25V
t2 625mV
t3 313mV
t4 156mV
t5 78mV
t6 39mV
t7 20mV
t8 10mV
t9 5mV
t10 2,5mV

Bei 1,5 V Eingangsspannung würde der Vergleich für das MSB (Most Significant Bit) so aussehen, dass 1,5V größer als 1,25V und somit das Bit gleich 1 gesetzt wird. Für das nachfolgende Bit gilt 1,5V größer als 1,875V, daher Bit2=0. Nach dem Vergleich der Spannungen würden die Bits der Takte 1,4,5,8 und 9 gesetzt werden.

Bussystem

Serial Peripheral Interface Bus

Digitale Signalverarbeitung

Darstellung der Ergebnisse

Problematik

Wie oben bereits erwähnt übergibt der Sensor analoge Signale, diese können auch über Pin 1 des Steckers übergeben werden. Allerdings fehlen dem EV3 Treiber um analoge Daten auszulesen, da offizielle Sensoren des EV3s nur über UART oder I2C kommunizieren. Um dieses Problem zu lösen habe ich verschiedene Ansätze probiert.

1.Ansatz: EV3 mit eigener Betriebssoftware

Wird der EOPD- Sensor an den EV3 angeschlossen erkennt der Brick den Sensor nicht. In der Portview wird angezeigt, dass kein Sensor verbunden ist. Detektiert der Sensor dann einen Abstand zu einem Objekt wird ein Port Error angezeigt. Daraus lässt sich schließen, dass der Brick eine Veränderung der Daten erkennt.

2.Ansatz: EV3 mit anderer Betriebssoftware

Einzelnachweise

  1. Berns, D. K.; · S. K.; · Schmidt: Programmierung mit LEGO MINDSTORMS NXT - Robotersysteme, Entwurfsmethodik, Algorithmen. Springer Verlag, 2010. ISBN 978-3- 642-05469-3 6, 11, 13