Objekterkennung mit HiTechnics EOPD mit Matlab/Simulink und EV3: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 114: Zeile 114:


===1.Ansatz: EV3 mit eigener Betriebssoftware===
===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.  
[[Bild:Port_Error.jpg|thumb|right|Device Browser]]
[[Bild:None.jpg|thumb|right|Input Port]]
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===
===2.Ansatz: EV3 mit anderer Betriebssoftware===
[[Bild:Device_Browser.jpg|thumb|right|Device Browser]]
[[Bild:Device_Browser.jpg|thumb|right|Device Browser]]

Version vom 18. Juni 2017, 10:08 Uhr

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 über Pin 1 des Steckers übergeben werden. Allerdings fehlen dem Brick des EV3s 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

Device Browser
Input Port

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

Device Browser
Input Port
Set Device)

Der zweite Ansatz,das Problem zu lösen ist dem Brick über eine MicroSD eine neue Betriebssoftware(EV3dev) aufzuspielen. Diese Software enthält bestimmte Treiber, die analoge Daten auslesen können. Zunächst wurde auf der Seite http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-jessie/sensors.html überprüft ob das Betriebssystem EV3dev den HiTechnics EOPD Sensor unterstützt. Nun konnte das neue Betriebssystem installiert werden, indem nach "Getting Started" (http://www.ev3dev.org/docs/getting-started/) vorgegangen wurde. Nach der Installation ist ein neues Menü zu sehen. Unter "Device Browser" können "Ports", "Sensors" und "Motors" ausgewählt werden. Unter "Ports" wurde dann der Port, an dem der EOPD Sensor angeschlossen ist, ausgewählt. Nun wird das in der Abbildung zu sehende Menü dargestellt. In diesem Menü können unter "Set device" und "Set mode" Angaben zum verwendeten Sensor gemacht werden. Unter Device kann der EOPD Sensor und unter mode sein Übertragungsmodus, also nxt-Analog ausgewählt werden. Nun ist der Sensor verbunden und über "Sensors" können die Rohwerte des Sensors ausgelesen werden. Mit diesen Werten konnte dann die oben beschriebene Kennlinie ermittelt werden. Problematik bei diesem Ansatz ist allerdings, dass der Brick nun nicht mehr über Matlab angesprochen werden kann, da dieses Betriebssystem nicht kompatibel mit der Toolbox füt Matlab/Simulink ist (vgl.https://github.com/ev3dev/ev3dev/issues/298).

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