Geschwindigkeitsüberwachung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(73 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
[[Kategorie:ProjekteET MTR BSE WS2020]] | [[Kategorie:ProjekteET MTR BSE WS2020]] | ||
<!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird. --> | <!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird. --> | ||
'''Autoren:''' | '''Autoren:''' Alexander Lips, [[Benutzer:Melanie Luncke| Melanie Luncke]]<br/> | ||
'''Betreuer:''' [[Benutzer:Ulrich_Schneider | Prof. Schneider]]<br/> | '''Betreuer:''' [[Benutzer:Ulrich_Schneider | Prof. Schneider]]<br/> | ||
Zeile 196: | Zeile 196: | ||
Die Funktionsweise der Komponenten wird folgend kurz beschrieben: | Die Funktionsweise der Komponenten wird folgend kurz beschrieben: | ||
* 1.001 - Mikrocontroller: | * 1.001 - Mikrocontroller: | ||
Der Mikrocontroller ist die Schnittstelle zwischen der Hard- und Software. Er dient zur Ansteuerung der Aktoren und zur Sensordatenverarbeitung. | Der Mikrocontroller ist die Schnittstelle zwischen der Hard- und Software. Er dient zur Ansteuerung der Aktoren und zur Sensordatenverarbeitung. Der Mikrocontroller besteht aus Analog-Pins (A0-A5) und Digital-Pins (D0-D13) die mit max. 40 mA belastet werden dürfen. Sechs der digitalen I-/O-Pins können analoge Pulsweitenmodulationssignale generieren. | ||
* 1.002 - Ultraschallsensor: | * 1.002 - Ultraschallsensor: | ||
Mit dem Ultraschallsensor HC-SR04 soll über eine Abstandsmessung die Geschwindigkeit des Modellautos bestimmt werden. Der Messbereich des Sensors liegt laut Datenblatt zwischen 3 cm und 400 cm mit einer maximalen Abweichung von 0,3 mm. | Mit dem Ultraschallsensor HC-SR04 soll über eine Abstandsmessung die Geschwindigkeit des Modellautos bestimmt werden. Der Messbereich des Sensors liegt laut Datenblatt zwischen 3 cm und 400 cm mit einer maximalen Abweichung von 0,3 mm. | ||
Zeile 206: | Zeile 207: | ||
Um die Geschwindigkeit zu erfassen, werden zwei Abstände festgelegt, an denen die Entfernung gemessen werden soll. So kann anschließend die Geschwindigkeit bestimmt werden. | Um die Geschwindigkeit zu erfassen, werden zwei Abstände festgelegt, an denen die Entfernung gemessen werden soll. So kann anschließend die Geschwindigkeit bestimmt werden. | ||
* 1.003 - Ampel: | * 1.003 - Ampel: | ||
Die Ampel besteht aus 3 untereinander angeordneten LED's (rot, gelb, grün) die abhängig von der Ampelphase mit einem HIGH Input = 1 (LED leuchtet) oder einem LOW Input = 0 (LED leuchtet nicht) angesteuert werden. | |||
* 1.004 - Lichtschranke: | * 1.004 - Lichtschranke: | ||
Die Lichtschranke besteht aus einem Sender und einem Empfänger, welche sich im selben Gehäuse befinden. Der Sender strahlt ein Infrarotlicht aus, welches von einem Reflektionsobjekt zum Empfänger zurückgeworfen wird. Wird der Lichtstrahl von einem Objekt unterbrochen,bzw. die Reflektionsstrecke verkürzt, findet am Ausgang eine Zustandsänderung statt. | Die Lichtschranke besteht aus einem Sender und einem Empfänger, welche sich im selben Gehäuse befinden. Der Sender strahlt ein Infrarotlicht aus, welches von einem Reflektionsobjekt zum Empfänger zurückgeworfen wird. Wird der Lichtstrahl von einem Objekt unterbrochen, bzw. die Reflektionsstrecke verkürzt, findet am Ausgang eine Zustandsänderung statt. Die Reichweite des Infrarotsignals beträgt 50 cm. | ||
* 1.005 - LED: | * 1.005 - LED: | ||
Eine LED besteht aus Kathode und Anode, die über einen Draht miteinander verbunden sind. Sobald ein Strom fließt wird Energie in Form von Photonen freigesetzt und bringt die LED zum Leuchten. | |||
* 1.006 - Modellauto: | * 1.006 - Modellauto: | ||
Bei dem Modellauto handelt es sich um das Messobjekt. | Bei dem Modellauto handelt es sich um das Messobjekt. | ||
Zeile 226: | Zeile 231: | ||
|- | |- | ||
| 2.001 | | 2.001 | ||
| | | Grafische Benutzeroberfläche | ||
| | | Visualisierung der Ergebnisse und Steuerung des Systems | ||
| Lips, Luncke | | Lips, Luncke | ||
| 30.10.2020 | | 30.10.2020 | ||
Zeile 233: | Zeile 238: | ||
| 2.002 | | 2.002 | ||
| MessungPosition | | MessungPosition | ||
| | | Abstandsmessung mit Ultraschallsensor | ||
| Lips, Luncke | | Lips, Luncke | ||
| 30.10.2020 | | 30.10.2020 | ||
Zeile 278: | Zeile 283: | ||
* 2.007 - KalmanFilterG: Als Referenz dient die mit dem Kalmanfilter geschätzte Position, Geschwindigkeit und Beschleunigung. | * 2.007 - KalmanFilterG: Als Referenz dient die mit dem Kalmanfilter geschätzte Position, Geschwindigkeit und Beschleunigung. | ||
Die vollständigen Matlab-Dateien sind in [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/093-125/118_Geschwindigkeitsüberwachung | Eine ausführliche Beschreibung der einzelnen Funktionen ist in den Headern der Matlab-Dateien zu finden. | ||
Die vollständigen Matlab-Dateien sind in [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/093-125/118_Geschwindigkeitsüberwachung SVN] abgelegt. | |||
<br clear=all> | <br clear=all> | ||
Zeile 285: | Zeile 291: | ||
1. Hardware | 1. Hardware | ||
Für die Projektdurchführung wurde zunächst die benötigte Hardware (siehe Komponentenspezifikation) beschafft. Außerdem wurde aus Holz eine brückenähnliche Halterung für den Ultraschallsensor, die Ampel und die Lichtschranke gebaut (siehe Abb.1). | Für die Projektdurchführung wurde zunächst die benötigte Hardware (siehe Komponentenspezifikation) beschafft. Außerdem wurde aus Holz eine brückenähnliche Halterung für den Ultraschallsensor, die LED, die Ampel und die Lichtschranke gebaut (siehe Abb.1). | ||
Folgend ist der Anschlussplan des Arduino Uno und der einzelnen Komponenten | Folgend ist der Aufbau dargestellt, ebenso wie der Anschlussplan (Abb.14) des Arduino Uno und der einzelnen Komponenten. | ||
Abbildung 12 zeigt die Maße der Strecke und die Positionierungsstelle der Brücke und Abbildung 13 stellt die Maße der Brückenkonstruktion dar. Werden Teile mehrfach verwendet, ist die benötigte Anzahl angegeben. Die Brücke wird einzeln montiert und anschließend auf der Strecke befestigt. Der Ultraschallsensor wird mittig auf der Brücke positioniert und mit zwei Seiten und einem Deckel abgedeckt. | |||
[[Datei:Geschwindigkeitsüberwachung_Anschlussplan.PNG|700px|thumb|left||'''Abb. | [[Datei:Skizze_Strecke.png|700px|thumb|left||'''Abb.12''': Maße-Strecke]] | ||
[[Datei:Skizze_Brücke.png|700px|thumb|left||'''Abb.13''': Maße-Brücke]] | |||
[[Datei:Geschwindigkeitsüberwachung_Anschlussplan.PNG|700px|thumb|left||'''Abb.14''': Anschlussplan]] | |||
<br clear=all> | <br clear=all> | ||
2. Hardware und Software | 2. Hardware und Software | ||
[[Datei:Programmablaufplan_Geschwindigkeitsüberwachung.PNG|200px|thumb|right||'''Abb. | [[Datei:Programmablaufplan_Geschwindigkeitsüberwachung.PNG|200px|thumb|right||'''Abb.15''': Programmablaufplan]] | ||
Ohne die Software kann die Hardware nicht angesteuert werden. | Ohne die Software kann die Hardware nicht angesteuert werden. | ||
Dazu werden Subsysteme aus Hard- und Software gebildet. | Dazu werden Subsysteme aus Hard- und Software gebildet. | ||
Zeile 311: | Zeile 320: | ||
! style="font-weight: bold;" | ID | ! style="font-weight: bold;" | ID | ||
! style="font-weight: bold;" | Komponente | ! style="font-weight: bold;" | Komponente | ||
! style="font-weight: bold;" | | ! style="font-weight: bold;" | Test | ||
! style="font-weight: bold;" | Funktion | ! style="font-weight: bold;" | Funktion/Ergebnis | ||
! style="font-weight: bold;" | Ersteller | ! style="font-weight: bold;" | Ersteller | ||
! style="font-weight: bold;" | Datum | ! style="font-weight: bold;" | Datum | ||
Zeile 318: | Zeile 327: | ||
| 1.001 | | 1.001 | ||
| Mikrocontroller | | Mikrocontroller | ||
| | | Anschluss der Spannungsversorgung | ||
| ja | | ja, Kontrollleuchte blinkt | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 325: | Zeile 334: | ||
| 1.002 | | 1.002 | ||
| Ultraschallsensor | | Ultraschallsensor | ||
| | | statische Objektmessung | ||
| ja | | ja, Messobjekt wird erkannt (Referenzmessung mit Lineal) | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
|- | |- | ||
| 1.003 | | 1.003 | ||
|Ampel | | Ampel | ||
| | | Ansteuerung der LEDs (rot, gelb, grün) | ||
| ja | | ja, 1(Hight)= LEDs leuchten, 0(Low)= LEDs leuchten nicht | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 339: | Zeile 348: | ||
| 1.004 | | 1.004 | ||
| Lichtschranke | | Lichtschranke | ||
| | | Objekterkennung | ||
| ja | | ja, 1(High)= kein Objekt, 0(Low)= Objekt erkannt | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 346: | Zeile 355: | ||
| 1.005 | | 1.005 | ||
| LED | | LED | ||
| | | Ansteuerung mit Spannungssignal | ||
| ja | | ja, 1(High)= LED leuchtet, 0(Low)= LED leuchtet nicht | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 353: | Zeile 362: | ||
| 1.006 | | 1.006 | ||
| Modellauto | | Modellauto | ||
| | | Fahrfunktion | ||
| ja | | ja, Fahrzeug fährt | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 360: | Zeile 369: | ||
| 1.007 | | 1.007 | ||
| LCD Display | | LCD Display | ||
| | | Textanzeige | ||
| nein, Pinbelegung nicht möglich (nicht genug Pins am Arduino Uno vorhanden | | nein, Pinbelegung nicht möglich (nicht genug Pins am Arduino Uno vorhanden, Alternative: Grafische Benutzeroberfläche | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 367: | Zeile 376: | ||
| 1.008 | | 1.008 | ||
| Modellaufbau (Brücke) | | Modellaufbau (Brücke) | ||
| | | Stabilität, Anordnung, Maßgenauigkeit | ||
| | | Stabilität gewährleistet, planmäßige Anordnung möglich | ||
| Lips, Luncke | | Lips, Luncke | ||
| 20.12.2020 | | 20.12.2020 | ||
Zeile 398: | Zeile 407: | ||
| Ampelsignal = grün, Lichtschranke = 1 , LED = aus | | Ampelsignal = grün, Lichtschranke = 1 , LED = aus | ||
| Ampelsignal = grün, Lichtschranke = 1 , LED = aus | | Ampelsignal = grün, Lichtschranke = 1 , LED = aus | ||
| i.O. | |||
| Lips, Luncke | |||
| 01.01.2021 | |||
|- | |||
| 2.004 | |||
| Regelverstoß Ampel (Ampelsignal = rot, gelb) | |||
| Ampelsignal = gelb, Lichtschranke = 0, LED = an | |||
| Ampelsignal = gelb, Lichtschranke = 0, LED = an | |||
| i.O. | | i.O. | ||
| Lips, Luncke | | Lips, Luncke | ||
Zeile 421: | Zeile 438: | ||
== Kalman - Filter == | == Kalman - Filter == | ||
[[Datei:KalmanAlgo.png|430px|thumb|right|Kalman Algorithmus|'''Abb. | [[Datei:KalmanAlgo.png|430px|thumb|right|Kalman Algorithmus|'''Abb.16''': Kalman - Filter Algorithmus]] | ||
Neben der Messung der Position des Fahrzeugs (Ultraschallsensor) und der anschließenden Berechnung der Geschwindigkeit, soll ebenfalls eine Zustandsschätzung durch die Verwendung eines Kalman - Filters erfolgen. In diesem Abschnitt wird der Algorithmus zur Zustandsschätzung und die Anwendung auf das Projekt kurz beschrieben. | Neben der Messung der Position des Fahrzeugs (Ultraschallsensor) und der anschließenden Berechnung der Geschwindigkeit, soll ebenfalls eine Zustandsschätzung durch die Verwendung eines Kalman - Filters erfolgen. In diesem Abschnitt wird der Algorithmus zur Zustandsschätzung und die Anwendung auf das Projekt kurz beschrieben. | ||
Die Bewegung des fahrenden Modellautos kann durch ein konstante Beschleunigung - Modell dargestellt werden. Es ergeben sich die folgenden Größen: | Die Bewegung des fahrenden Modellautos kann durch ein konstante Beschleunigung - Modell dargestellt werden. Es ergeben sich die folgenden Größen: | ||
Berechnung (anhand der Positionsmessung): | |||
pos = s = 1/2 * a * t^2 + | v = s / t | ||
v = a * t + | a = v * t | ||
v = ((2 * s) / t ) - v_0 | |||
a = ((2 * s) / t^2 ) - (2 * v_0 / t) | |||
Schätzung (Kalman - Filter) | |||
pos = s = 1/2 * a * t^2 + v_0 * t + s_0 | |||
v = a * t + v_0 | |||
a = konstant | a = konstant | ||
Unter Berücksichtigung der aufgeführten Formeln können somit die für den Kalman - Algorithmus notwendigen Matrizen und Vektoren festgelegt werden. Die folgenden Matrizen und Vektoren wurden bezüglich der Anwendung innerhalb des Systems entsprechend ausgewählt. | Unter Berücksichtigung der aufgeführten Formeln können somit die für den Kalman - Algorithmus notwendigen Matrizen und Vektoren festgelegt werden. Die folgenden Matrizen und Vektoren wurden bezüglich der Anwendung innerhalb des Systems entsprechend ausgewählt. Es soll ein hohes Vertrauen gegenüber den Messwerten eingestellt sein, solange sich das Fahrzeug auf der Messstrecke befindet und der Ultraschallsensors aufgrund dessen Ausrichtung hinreichende Messergebnisse liefern kann. Sobald das Fahrzeug die Messstrecke 0,3 m bis 0,7 m (Abstand zum Ultraschallsensor) verlässt soll ein geringes Vertrauen gegenüber den Messwerten vorliegen. Das Vertrauen wird durch den Vektor/ Matrix R und Q bestimmt. | ||
0. Zu Beginn findet eine Initialisierung des Vektors | 0. Zu Beginn findet eine Initialisierung des Vektors x_0 und der Matrix P_0. Der Vektor x_0 beinhaltet die Anfangswerte der Position, der Geschwindigkeit und der Beschleunigung des Fahrzeugs. Die initiale Fehlerkovarianzmatrix P_0 stellt das Vertrauen gegenüber der ersten Schätzung dar. Der erste Wert des Vektors x_0 entspricht dem ersten Messpunkt auf der Messstrecke. Hierbei ergeben sie zwei Möglichkeiten, entweder alle Werte auf 0 zu setzen und ein geringes Vertrauen oder die pos v und a schätzen und hohes Vertrauen anzunehmen. | ||
x0 = [ 0.7 0 0 ]' ; P0 = 100 * eye(3) ; | x0 = [ 0.7 0 0 ]' ; P0 = 100 * eye(3) ; | ||
1. In dem ersten Schritt wird der Zustandsvektor x(k) und die Kovarianzmatrix P(k) anhand der Systemmatrix A prädiziert (vorhergesagt). Als Systemmodell dient das konstante Beschleunigung Modell welches in die Systemmatrix A überführt wurde. Die Matrix Q wird genutzt um das Systemrauschen zu berücksichtigen. Hohe Werte innerhalb der Matrix Q führen zu einer hohen Kalman - Verstärkung und somit zu einer hohen Gewichtung der Messwerte. | 1. In dem ersten Schritt wird der Zustandsvektor x(k) und die Kovarianzmatrix P(k) anhand der Systemmatrix A prädiziert (vorhergesagt). Als Systemmodell dient das konstante Beschleunigung Modell welches in die Systemmatrix A überführt wurde. Die Matrix Q wird genutzt um das Systemrauschen zu berücksichtigen. Hohe Werte innerhalb der Matrix Q führen zu einer hohen Kalman - Verstärkung und somit zu einer hohen Gewichtung der Messwerte. | ||
A = [ 1 dt 1/2*dt^2 ; Q = 0.1 * eye(3); | A = [ 1 dt 1/2*dt^2 ; Q = 0.1 * eye(3); wenn Fahrzeug außerhalb der Messstrecke | ||
0 1 dt ; | 0 1 dt ; Q = 20 * eye(3); wenn Fahrzeug innerhalb der Messstrecke | ||
0 0 1 ] ; | 0 0 1 ] ; | ||
Zeile 444: | Zeile 467: | ||
2. Folgend findet im zweiten Schritt die Ermittlung der Kalman - Verstärkung K(k+1) durch die Verwendung der prädizierten Daten aus dem ersten Schritt. Ebenfalls werden die Ausgangsmatrix H und die Kovarianzmatrix des Messrauschens R definiert. Durch die Messmatrix H erfolgt eine Festlegung welcher Wert aus dem Zustandsvektor x(k) gemessen wird. Das Messrauschen R ist gegensätzlich zum Systemrauschen Q und bewirkt somit bei einem hohen Wert einen hohen Einfluss der Messung auf die Schätzung. | 2. Folgend findet im zweiten Schritt die Ermittlung der Kalman - Verstärkung K(k+1) durch die Verwendung der prädizierten Daten aus dem ersten Schritt. Ebenfalls werden die Ausgangsmatrix H und die Kovarianzmatrix des Messrauschens R definiert. Durch die Messmatrix H erfolgt eine Festlegung welcher Wert aus dem Zustandsvektor x(k) gemessen wird. Das Messrauschen R ist gegensätzlich zum Systemrauschen Q und bewirkt somit bei einem hohen Wert einen hohen Einfluss der Messung auf die Schätzung. | ||
H = [1 0 0] ; R = 10; | H = [1 0 0] ; R = 50; wenn Fahrzeug außerhalb der Messstrecke | ||
R = 10; wenn Fahrzeug innerhalb der Messstrecke | |||
3. Innerhalb des dritten Schrittes werden die aktuellen Messdaten z(k+1) in den Algorithmus mit einbezogen und eine Schätzung des Systemzustandes x(k+1) berechnet. Als Eingangsgröße dient bei der Berechnung die Zustandsschätzung x_stern(k+1) aus dem ersten Schritt. | 3. Innerhalb des dritten Schrittes werden die aktuellen Messdaten z(k+1) in den Algorithmus mit einbezogen und eine Schätzung des Systemzustandes x(k+1) berechnet. Als Eingangsgröße dient bei der Berechnung die Zustandsschätzung x_stern(k+1) aus dem ersten Schritt. | ||
4. Um festzulegen mit welchem Gewicht die Zustandsschätzung aus dem vorherigen Zyklus in die aktuelle Schätzung mit einbezogen werden soll, wird im letzten Schritt die Fehlerkovarianzmatrix P(k+1) berechnet. Als Messvektor z werden die Daten des Ultraschallsensors verwendet. | 4. Um festzulegen mit welchem Gewicht die Zustandsschätzung aus dem vorherigen Zyklus in die aktuelle Schätzung mit einbezogen werden soll, wird im letzten Schritt die Fehlerkovarianzmatrix P(k+1) berechnet. Als Messvektor z werden die Daten des Ultraschallsensors (Position des Fahrzeugs) verwendet. | ||
Der Kalman - Algorithmus wird zyklisch über die Anzahl der Messwerte ausgeführt, sodass die Position, die Geschwindigkeit und die Beschleunigung für jeden Zeitschritt ermittelt werden kann. Die Abtastzeit dt entspricht der Abtastrate des Ultraschallsensors. Anschließend können die | Der Kalman - Algorithmus wird zyklisch über die Anzahl der Messwerte ausgeführt, sodass die Position, die Geschwindigkeit und die Beschleunigung für jeden Zeitschritt ermittelt werden kann. Die Abtastzeit dt entspricht der Abtastrate des Ultraschallsensors. Anschließend können die geschätzten Zustände als Rückgabewerte festgelegt und zur grafischen Veranschaulichung genutzt werden. | ||
dt = 0.1; | dt = 0.1; | ||
== Grafische Benutzeroberfläche == | == Grafische Benutzeroberfläche == | ||
[[Datei:GUI_G.png|500px|thumb|right|GUI_Gewschwindigkeitsueberwachung|'''Abb. | [[Datei:GUI_G.png|500px|thumb|right|GUI_Gewschwindigkeitsueberwachung|'''Abb.17''': grafische Benutzeroberfläche]] | ||
Um eine nutzerfreundliche Bedienung des Systems zur Geschwindigkeitsüberwachung zu ermöglichen wurde eine grafische Benutzeroberfläche in dem MATLAB APP Designer erstellt. | Um eine nutzerfreundliche Bedienung des Systems zur Geschwindigkeitsüberwachung zu ermöglichen wurde eine grafische Benutzeroberfläche in dem MATLAB APP Designer erstellt. | ||
Zeile 546: | Zeile 570: | ||
<br clear=all> | <br clear=all> | ||
[[Datei:GUI_Geschwindigkeit_0.JPG|550px|thumb|left|GUI_Gewschwindigkeitsueberwachung|'''Abb.18''': Fahrzeug im Stand]] | |||
<div class="tright" style="clear:none">[[Datei:GUI_beides.JPG|550px|thumb|left|GUI_Gewschwindigkeitsueberwachung|'''Abb.19''': Fahrzeug in Bewegung]]</div> | |||
<br clear=all> | |||
Befindet sich das Fahrzeug im Stand, sind die | Das Fahrzeug wird an der Position bei 0,7 m erkannt, welches durch eine Referenzmessung mit Lineal bestätigt werden konnte. Es ist zu erkennen, dass die Positionsmesswerte leicht um den Wert 0,7 m schwanken. | ||
Nach einer Einschwingzeit von 1 Sekunde, ist zu erkennen, dass die geschätzte Position des Fahrzeugs mit den Messwerten übereinstimmt. | |||
Befindet sich das Fahrzeug im Stand, sind die geschätzten Zustände des Kalmanfilters für die Geschwindigkeit und die Beschleunigung gleich Null. Da die Positionsmessung des Ultraschallsensors leichte Messabweichungen aufweist schwanken die Messwert der Geschwindigkeit und Beschleunigung leicht (+-0,2 m/s / +-0,05 m/s^2) um den Wert Null. Außerdem ist zu erkennen, dass kein Ampelverstoß vorliegt, da sich das Fahrzeug nicht auf Ampelhöhe befindet. Die gemessene Geschwindigkeit beträgt 0 m/s (stehendes Fahrzeug) und liegt somit unterhalb der zugelassenen Geschwindigkeit von 0,05 m/s, weshalb kein Regelverstoß bezüglich der Geschwindigkeit angezeigt wird. | |||
Die Bewegung des Fahrzeugs wird auf der Messstrecke zwischen 0,4 und 0,7 m erkannt. Die Positionsschätzung des Kalmanfilters stimmt näherungsweise mit den Positionsmesswerten überein. Es ist ein Geschwindigkeitsanstieg bei konstanter Beschleunigung erkennbar. Da die Ampel nicht bei "rot" überfahren wird, wird diesbezüglich auch kein Regelverstoß angezeigt. Die gemessene Geschwindigkeit von 0,1 m/s ist höher als die zugelassene Geschwindigkeit von 0,05 m/s und wird somit als Regelverstos angezeigt. | |||
Sobald sich das Fahrzeug außerhalb der festgelegten Messstrecke (0,4 bis 0,7 m und 1 bis 3 sek.) befindet, wird das Kalmanfilterergebnis zu sehr von den Ausreißern beeinflusst. Durch Anpassung der Rauschvektoren/-matrizen R und Q können die Ausreißer angepasst werden. | |||
Ursache der Ausreißer können das Messobjekt (transparente Scheibe verdunkelt) und dessen dynamische Bewegung sein. Bei der statischen Messung waren die Messergebnisse im Gegensatz zur dynamischen Messung zufriedenstellend. Außerdem kann die Ausrichtung des Ultraschallsensors ebenfalls Ausreißer verursachen, da möglicherweise nicht immer das Messobjekt (Fahrzeug) getroffen wird, sondern beispielsweise die Fahrban. | |||
Um die Ausreißer zu vermeiden, wäre eine automatisierte Messung über die festgelegte Messstrecke (0,4 m bis 0,7 m) mittels einer While-Schleife (Zyklen abhängig von der gemessenen Distanz) möglich, die ebenfalls das Vertrauen in die Messwerte erhöht. | |||
== Zusammenfassung == | == Zusammenfassung == | ||
=== Lessons Learned === | === Lessons Learned === | ||
Herausforderung: | Herausforderung: | ||
* Entscheidung für Softwareumsetzung (Matlab, Simulink, Arduino IDE...) | |||
# Hardwareumsetzung (Mikrocontroller hat nicht genügend In-/Outputs | # Softwareumsetzung in Matlab (Vorteil: App-Designer, Einbindung von Toolbox, Hardware Support Package, Kalman-Filte etc.) | ||
* Hardwareumsetzung (Mikrocontroller hat nicht genügend In-/Outputs) | |||
# Reduzierung nicht unbedingt erforderlicher Komponenten (weitere Lichtschranken, zweite LED, LCD-Display) | |||
* Modellauto so ausstatten, dass eine Messung möglich ist | |||
# | # Transparente Scheibe verdunkeln/vergrößern | ||
* Feste Fahrbahn vorgeben | |||
# Seitenbegrenzung (Schienen), sodass das Modellauto geradeaus fährt | |||
* Modellaufbau (Brücke) zu instabil | |||
# Holz- statt Pappkonstruktion | |||
* Sensorausrichtung | |||
# Sensor so befestigen, dass er seine Ausrichtung beibehält | |||
* Messausreißer | |||
# feste Messstrecke definieren (0,4 m bis 0,7 m) | |||
# Rauschparameter richtig einstellen | # Rauschparameter richtig einstellen | ||
== Projektunterlagen == | == Projektunterlagen == | ||
=== Projektplan === | === Projektplan === | ||
Der Ablauf des Projektes wird in folgendem Projektplan ausschnittsweise dargestellt. Die dazugehörige Excel-Datei des kompletten Projektplans befindet sich in [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/093-125/118_Geschwindigkeitsüberwachung | Der Ablauf des Projektes wird in folgendem Projektplan ausschnittsweise dargestellt. Die dazugehörige Excel-Datei des kompletten Projektplans befindet sich in [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/093-125/118_Geschwindigkeitsüberwachung SVN]. | ||
[[Datei:Geschwindigkeitsüberwachung_Projektplan.PNG|1000px|thumb|left||'''Abb. | [[Datei:Geschwindigkeitsüberwachung_Projektplan.PNG|1000px|thumb|left||'''Abb.20''': Prokjektplan]] | ||
<br clear=all> | <br clear=all> | ||
Zeile 584: | Zeile 616: | ||
== YouTube Video == | == YouTube Video == | ||
Das Video zum Projekt befindet sich in Sciebo: [https://hshl.sciebo.de/s/nAbQK7epAQQaBQi Geschwindigkeitsüberwachung_Video]. | |||
== Weblinks == | == Weblinks == | ||
Zeile 594: | Zeile 626: | ||
== Literatur == | == Literatur == | ||
Phil Kim, Kalman - Filter mit Matlab Beispielen, 1. Auflage 2016, Übersetzt von Ulrich Schneider | |||
Aktuelle Version vom 27. März 2021, 15:24 Uhr
Autoren: Alexander Lips, Melanie Luncke
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
Einleitung
Im Rahmen der Veranstaltung "Angewandte Elektrotechnik" innerhalb des Masterstudiengangs "Business and Systems Engineering" wird durch die Studierenden ein semesterbegleitendes Projekt im Bereich der Mikrocontroller durchgeführt. Hierbei werden anhand eines praktischen Beispiels Kenntnisse in der Ansteuerung unterschiedlicher Sensoren und Aktuatoren durch einen Mikrocontroller, sowie der damit verbundenen Verarbeitung und Auswertung der Sensordaten vermittelt.
Im folgenden Projekt soll eine Geschwindigkeitsüberwachung mittels eines Ultraschallsensors realisiert werden. Analog zur Funktionsweise der Geschwindigkeitsüberwachung im Straßenverkehr, wird die Geschwindigkeit eines vorbeirollenden Modellautos gemessen, angezeigt und bewertet. Neben der Messung soll parallel eine Zustandsschätzung anhand eines Kalman - Filter erfolgen wodurch die Position, die Geschwindigkeit und die Beschleunigung des Fahrzeugs geschätzt werden kann.
Ergänzend zu der Geschwindigkeitsüberwachung findet ebenfalls eine Kontrolle unterschiedlicher Ampelphasen statt. Hierfür wird eine Modellbau Ampel in Verbindung mit einer Infrarotlichtschranke genutzt um einen Regelverstoß, der durch das Überfahren einer roten Ampel entsteht, zu prüfen.
Um die unterschiedlichen Werte und Hinweise visualisieren zu können wird eine grafische Benutzeroberfläche, die mit dem MATLAB APP Designer realisiert wurde, verwendet. Hierdurch ergibt sich die Möglichkeit neben einer nutzerfreundlichen Inbetriebnahme und Steuerung der Geschwindigkeitsüberwachung ebenfalls einer einfachen Erkennung der Regelverstöße. An dem Modell selbst dient eine rote LED als visuelle Kennzeichnung der Regelverstöße.
Vorgehensweise bei der Entwicklung des Systems
Bei der Entwicklung des Systems zur Geschwindigkeitsüberwachung fand eine Orientierung am V - Modell statt. Somit konnte anhand einer systematischen Vorgehensweise eine Validierung bezüglich der Anforderungen und eine Verifikation bezüglich der Ergebnisse der einzelnen Stufen gewährleistet werden.
Das V-Modell ist ein wichtiges Vorgehensmodell und besitzt eine breite Anwendung bei der Entwicklung von Systemen. Den Grundsatz des Modells bilden Entwicklungs- und Testarbeiten die zueinander korrespondieren und gleichwertige Tätigkeiten darstellen. Durch die Aufteilung des Vorgehens in einzelne Entwicklungsphase kann eine Verifikation des Systems gewährleistet werden.
Hierbei wird das Problem bzw. die Aufgabe in einzelne Teilaufgaben heruntergebrochen, hierfür Teillösungen entwickelt und anschließend wieder zu einem Gesamtsystem integriert. Das Ziel ist es durch eine saubere Anforderungsdefinition und Spezifikation späte Fehler bei der Implementierung und Integration zu vermeiden und eine Struktur in den Ablauf der Entwicklung zu bringen.
Die folgenden Kapitel stellen die einzelnen Schritte des V - Modells dar und beschreiben die Vorgehensweise bei der Entwicklung des Systems zur Geschwindigkeitsüberwachung.
Anforderungen
Entwurf eines mechatronischen Systems für die Geschwindigkeitsmessung eines Objektes:
In der nachfolgenden Tabelle werden die an das System ermittelten Anforderungen aufgeführt.
ID | Kategorie | Anforderung | Ersteller | Datum |
---|---|---|---|---|
001 | Geschwindigkeitsermittlung | Die Geschwindigkeit v des Modellautos muss auf einem definierten Streckenabschnitt mittels eines Ultraschallsensors ermittelt werden. | Lips, Luncke | 30.10.2020 |
002 | Geschwindigkeitsverstoß | Eine Überschreitung der zugelassenen Geschwindigkeit v > v_zugelassen muss visuell über eine LED dargestellt werden. | Lips, Luncke | 30.10.2020 |
003 | Geschwindigkeitsverstoß | Die zugelassene Geschwindigkeit muss vom Benutzer vorgegeben werden können. | Lips, Luncke | 30.10.2020 |
004 | Ampelverstoß | Ein Ampelverstoß liegt vor, wenn das Auto bei "rot" die Lichtschranke unterbricht und muss über eine LED visuell dargestellt werden. | Lips, Luncke | 30.10.2020 |
005 | Zustandsschätzung | Die Fahrzeugbewegung wird mit einem Konstante-Beschleunigung-Modell modelliert und die Zustände Position, Geschwindigkeit Beschleunigung werden mittels Zustandsschätzer (Kalman- Filter) geschätzt. | Lips, Luncke | 30.10.2020 |
006 | Visualisierung | Auf der grafischen Benutzeroberfläche muss ein Regelverstoß visuell dargestellt werden. | Lips, Luncke | 30.10.2020 |
007 | Visualisierung | Auf der grafischen Benutzeroberfläche muss die gemessene Geschwindigkeit dargestellt werden. | Lips, Luncke | 30.10.2020 |
008 | Aufbau | Der Aufbau muss eine geeignete Positionierung des Ultraschallsensors ermöglichen um eine zufriedenstellende Messung durchzuführen. | Lips, Luncke | 30.10.2020 |
009 | Modellauto | Das Modellauto muss so angepasst werden, das eine möglichst optimale Ultraschallmessung durchgeführt werden kann. | Lips, Luncke | 30.10.2020 |
010 | Inbetriebnahme und Steuerung | Die Inbetriebnahme und Steuerung des Systems muss über eine grafische Benutzeroberfläche und Mikrocontroller stattfinden. | Lips, Luncke | 30.10.2020 |
Funktionaler Systementwurf/Technischer Systementwurf
Folgend wird der Systementwurf und der Programmablaufplan der Geschwindigkeitsüberwachung aufgeführt.
Komponentenspezifikation
Für die Projektdurchführung werden folgende Komponenten benötigt:
Hardware:
ID | Komponente | Aufgabe | Ersteller | Datum |
---|---|---|---|---|
1.001 | Mikrocontroller | Regler (Arduino Uno) | Lips, Luncke | 30.10.2020 |
1.002 | Ultraschallsensor | Geschwindigkeits- bzw. Abstandsmessung | Lips, Luncke | 30.10.2020 |
1.003 | Ampel | Signaldarstellung (rot, gelb, grün) | Lips, Luncke | 30.10.2020 |
1.004 | Lichtschranke | Objekterkennung bei Ampelkreuzung | Lips, Luncke | 30.10.2020 |
1.005 | LED | Aufleuchten bei rotem Ampelsignal und Unterbrechung der Lichtschranke, Aufleuchten bei Geschwindigkeitsüberschreitung | Lips, Luncke | 30.10.2020 |
1.006 | Modellauto | Messobjekt | Lips, Luncke | 30.10.2020 |
1.007 | LCD-Display | Geschwindigkeitsanzeige | Lips, Luncke | 30.10.2020 |
1.008 | Modellaufbau (Brücke) | Halterung für die verwendeten Komponenten | Lips, Luncke | 30.10.2020 |
Die Funktionsweise der Komponenten wird folgend kurz beschrieben:
- 1.001 - Mikrocontroller:
Der Mikrocontroller ist die Schnittstelle zwischen der Hard- und Software. Er dient zur Ansteuerung der Aktoren und zur Sensordatenverarbeitung. Der Mikrocontroller besteht aus Analog-Pins (A0-A5) und Digital-Pins (D0-D13) die mit max. 40 mA belastet werden dürfen. Sechs der digitalen I-/O-Pins können analoge Pulsweitenmodulationssignale generieren.
- 1.002 - Ultraschallsensor:
Mit dem Ultraschallsensor HC-SR04 soll über eine Abstandsmessung die Geschwindigkeit des Modellautos bestimmt werden. Der Messbereich des Sensors liegt laut Datenblatt zwischen 3 cm und 400 cm mit einer maximalen Abweichung von 0,3 mm.
Der Ultraschallsensor wird an seinen vier Pins an den Mikrocontroller angeschlossen. Zwei der Pins (VCC und GND) werden für die Spannungsversorgung mit 5 V benötigt. Die anderen beiden Pins (Trig und Echo) werden für das Senden und Empfangen der Ultraschallwellen verwendet. Der Trig-Pin bzw. Ultraschalllautsprecher sendet einen Schallimpuls, welcher beim Auftreffen auf ein Objekt reflektiert und am Echo-Pin bzw. Ultraschallmikrofon wieder empfangen wird. Liegt an dem Trig-Pin ein High-Signal an, sendet der Sensor eine Ultraschallwelle aus, bis wieder ein Low-Signal an dem Trig-Pin anliegt. Die gesendete Ultraschallwelle entfernt sich so lange vom Sensor, bis sie auf ein Hindernis (das Modellauto) trifft. Anschließend wird sie zum Sensor zurückreflektiert. Empfängt der Sensor die reflektierte Welle, sendet der Echo-Pin ein High-Signal. Mit der gemessenen Zeit zwischen dem Senden und Empfangen der Ultraschallwelle kann die Entfernung bestimmt werden.
Um die Geschwindigkeit zu erfassen, werden zwei Abstände festgelegt, an denen die Entfernung gemessen werden soll. So kann anschließend die Geschwindigkeit bestimmt werden.
- 1.003 - Ampel:
Die Ampel besteht aus 3 untereinander angeordneten LED's (rot, gelb, grün) die abhängig von der Ampelphase mit einem HIGH Input = 1 (LED leuchtet) oder einem LOW Input = 0 (LED leuchtet nicht) angesteuert werden.
- 1.004 - Lichtschranke:
Die Lichtschranke besteht aus einem Sender und einem Empfänger, welche sich im selben Gehäuse befinden. Der Sender strahlt ein Infrarotlicht aus, welches von einem Reflektionsobjekt zum Empfänger zurückgeworfen wird. Wird der Lichtstrahl von einem Objekt unterbrochen, bzw. die Reflektionsstrecke verkürzt, findet am Ausgang eine Zustandsänderung statt. Die Reichweite des Infrarotsignals beträgt 50 cm.
- 1.005 - LED:
Eine LED besteht aus Kathode und Anode, die über einen Draht miteinander verbunden sind. Sobald ein Strom fließt wird Energie in Form von Photonen freigesetzt und bringt die LED zum Leuchten.
- 1.006 - Modellauto:
Bei dem Modellauto handelt es sich um das Messobjekt.
Software:
ID | Komponente | Aufgabe | Ersteller | Datum |
---|---|---|---|---|
2.001 | Grafische Benutzeroberfläche | Visualisierung der Ergebnisse und Steuerung des Systems | Lips, Luncke | 30.10.2020 |
2.002 | MessungPosition | Abstandsmessung mit Ultraschallsensor | Lips, Luncke | 30.10.2020 |
2.003 | Ampelschaltung | Ampelphaseneinstellung (rot, gelb, grün) | Lips, Luncke | 30.10.2020 |
2.004 | RegelverstoßAmpel | Ampel = rot, LED = an; Ampel = grün, LED = aus | Lips, Luncke | 30.10.2020 |
2.005 | BestimmungGeschwindigkeit | v = (2s)/t | Lips, Luncke | 30.10.2020 |
2.006 | RegelverstoßGeschwindigkeit | v > v_zugelassen, LED = an | Lips, Luncke | 30.10.2020 |
2.007 | Kalman Filter | Schätzung von Position, Geschwindigkeit, Beschleunigung | Lips, Luncke | 30.10.2020 |
- 2.001 - Geschwindigkeitsüberwachung: Hier wird zunächst Matlab initialisiert, mit der Hardware verbunden und mit den benötigten Funktionen ausgestattet.
- 2.002 - MessungPosition: Über den Ultraschallsensor wird die Position des Fahrzeugs gemessen und dargestellt.
- 2.003 - Ampelschaltung: Mit dieser Funktion wird die Dauer der einzelnen Ampelphasen realisiert.
- 2.004 - RegelverstoßAmpel: Wird die Lichtschranke bei rotem Ampelsignal unterbrochen, wird dies durch eine aufleuchtende LED visualisiert.
- 2.005 - BestimmungGeschwindigkeit: Aus der gemessenen Position wird die Geschwindigkeit bestimmt.
- 2.006 - RegelverstoßGeschwindigkeit: Bei einer Überschreitung der vorgegebenen Maximalgeschwindigkeit, wird dies ebenfalls visuell über eine LED dargestellt.
- 2.007 - KalmanFilterG: Als Referenz dient die mit dem Kalmanfilter geschätzte Position, Geschwindigkeit und Beschleunigung.
Eine ausführliche Beschreibung der einzelnen Funktionen ist in den Headern der Matlab-Dateien zu finden. Die vollständigen Matlab-Dateien sind in SVN abgelegt.
Umsetzung (HW/SW)
1. Hardware
Für die Projektdurchführung wurde zunächst die benötigte Hardware (siehe Komponentenspezifikation) beschafft. Außerdem wurde aus Holz eine brückenähnliche Halterung für den Ultraschallsensor, die LED, die Ampel und die Lichtschranke gebaut (siehe Abb.1). Folgend ist der Aufbau dargestellt, ebenso wie der Anschlussplan (Abb.14) des Arduino Uno und der einzelnen Komponenten. Abbildung 12 zeigt die Maße der Strecke und die Positionierungsstelle der Brücke und Abbildung 13 stellt die Maße der Brückenkonstruktion dar. Werden Teile mehrfach verwendet, ist die benötigte Anzahl angegeben. Die Brücke wird einzeln montiert und anschließend auf der Strecke befestigt. Der Ultraschallsensor wird mittig auf der Brücke positioniert und mit zwei Seiten und einem Deckel abgedeckt.
2. Hardware und Software
Ohne die Software kann die Hardware nicht angesteuert werden. Dazu werden Subsysteme aus Hard- und Software gebildet.
Mit der Funktion „Ampelschaltung“ wird die Hardwarekomponente Ampel verbunden, sodass die verschiedenen Ampelphasen (grün, gelb, rot) geschaltet werden. Die Ampel gehört außerdem zusammen mit der Lichtschranke und der LED zur Funktion „RegelverstoßAmpel“. Wird die Lichtschranke bei der Ampelphase „rot“ überfahren wird dieser Regelverstoß visuell über die LED dargestellt.
Der Ultraschallsensor steht mit der Funktion „MessungPosition und „Geschwindigkeitsbestimmung“ in Verbindung, da über die Positionsbestimmung in den Funktionen die Geschwindigkeit berechnet wird. Außerdem findet der Ultraschallsensor zusammen mit der LED und den Ergebnissen der vorherigen Funktionen in der Funktion „RegelverstoßGeschwindigkeit“ Anwendung. Wir die zugelassene Geschwindigkeit, die die durch den Benutzer vorher festgelegt wird überschritten, wird dieser Verstoß ebenfalls über die LED visualisiert.
Komponententest
Die Funktionsweise der Komponenten aus der Komponentenspezifikation wurde einzeln getestet. Bei Eintritt der gewünschten Funktionsweise der einzelnen Komponenten wurden mehrere Komponenten gemeinsam auf ihre Funktionalität geprüft.
Hardware:
ID | Komponente | Test | Funktion/Ergebnis | Ersteller | Datum |
---|---|---|---|---|---|
1.001 | Mikrocontroller | Anschluss der Spannungsversorgung | ja, Kontrollleuchte blinkt | Lips, Luncke | 20.12.2020 |
1.002 | Ultraschallsensor | statische Objektmessung | ja, Messobjekt wird erkannt (Referenzmessung mit Lineal) | Lips, Luncke | 20.12.2020 |
1.003 | Ampel | Ansteuerung der LEDs (rot, gelb, grün) | ja, 1(Hight)= LEDs leuchten, 0(Low)= LEDs leuchten nicht | Lips, Luncke | 20.12.2020 |
1.004 | Lichtschranke | Objekterkennung | ja, 1(High)= kein Objekt, 0(Low)= Objekt erkannt | Lips, Luncke | 20.12.2020 |
1.005 | LED | Ansteuerung mit Spannungssignal | ja, 1(High)= LED leuchtet, 0(Low)= LED leuchtet nicht | Lips, Luncke | 20.12.2020 |
1.006 | Modellauto | Fahrfunktion | ja, Fahrzeug fährt | Lips, Luncke | 20.12.2020 |
1.007 | LCD Display | Textanzeige | nein, Pinbelegung nicht möglich (nicht genug Pins am Arduino Uno vorhanden, Alternative: Grafische Benutzeroberfläche | Lips, Luncke | 20.12.2020 |
1.008 | Modellaufbau (Brücke) | Stabilität, Anordnung, Maßgenauigkeit | Stabilität gewährleistet, planmäßige Anordnung möglich | Lips, Luncke | 20.12.2020 |
Software und Hardware:
ID | Komponente/Funktion | Erwartetes Ergebnis | Ergebnis | Bewertung | Ersteller | Datum |
---|---|---|---|---|---|---|
2.004 | Regelverstoß Ampel (Ampelsignal = rot) | Ampelsignal = rot, Lichtschranke = 0, LED = an | Ampelsignal = rot, Lichtschranke = 0, LED = an | i.O. | Lips, Luncke | 01.01.2021 |
2.004 | Regelverstoß Ampel (Ampelsignal = grün) | Ampelsignal = grün, Lichtschranke = 1 , LED = aus | Ampelsignal = grün, Lichtschranke = 1 , LED = aus | i.O. | Lips, Luncke | 01.01.2021 |
2.004 | Regelverstoß Ampel (Ampelsignal = rot, gelb) | Ampelsignal = gelb, Lichtschranke = 0, LED = an | Ampelsignal = gelb, Lichtschranke = 0, LED = an | i.O. | Lips, Luncke | 01.01.2021 |
2.005 | Bestimmung Geschwindigkeit (stehendes Modellauto) | Geschwindigkeit beträgt 0 m/s | Geschwindigkeit beträgt 0 m/s | i.O. | Lips, Luncke | 01.01.2021 |
2.006 | Regelverstoß Geschwindigkeit (v > v_zugelassen) | v > v_zugelassen, LED = an | v > v_zugelassen, LED = an | i.O. | Lips, Luncke | 01.01.2021 |
Kalman - Filter
Neben der Messung der Position des Fahrzeugs (Ultraschallsensor) und der anschließenden Berechnung der Geschwindigkeit, soll ebenfalls eine Zustandsschätzung durch die Verwendung eines Kalman - Filters erfolgen. In diesem Abschnitt wird der Algorithmus zur Zustandsschätzung und die Anwendung auf das Projekt kurz beschrieben.
Die Bewegung des fahrenden Modellautos kann durch ein konstante Beschleunigung - Modell dargestellt werden. Es ergeben sich die folgenden Größen:
Berechnung (anhand der Positionsmessung): v = s / t a = v * t v = ((2 * s) / t ) - v_0 a = ((2 * s) / t^2 ) - (2 * v_0 / t) Schätzung (Kalman - Filter) pos = s = 1/2 * a * t^2 + v_0 * t + s_0 v = a * t + v_0 a = konstant
Unter Berücksichtigung der aufgeführten Formeln können somit die für den Kalman - Algorithmus notwendigen Matrizen und Vektoren festgelegt werden. Die folgenden Matrizen und Vektoren wurden bezüglich der Anwendung innerhalb des Systems entsprechend ausgewählt. Es soll ein hohes Vertrauen gegenüber den Messwerten eingestellt sein, solange sich das Fahrzeug auf der Messstrecke befindet und der Ultraschallsensors aufgrund dessen Ausrichtung hinreichende Messergebnisse liefern kann. Sobald das Fahrzeug die Messstrecke 0,3 m bis 0,7 m (Abstand zum Ultraschallsensor) verlässt soll ein geringes Vertrauen gegenüber den Messwerten vorliegen. Das Vertrauen wird durch den Vektor/ Matrix R und Q bestimmt.
0. Zu Beginn findet eine Initialisierung des Vektors x_0 und der Matrix P_0. Der Vektor x_0 beinhaltet die Anfangswerte der Position, der Geschwindigkeit und der Beschleunigung des Fahrzeugs. Die initiale Fehlerkovarianzmatrix P_0 stellt das Vertrauen gegenüber der ersten Schätzung dar. Der erste Wert des Vektors x_0 entspricht dem ersten Messpunkt auf der Messstrecke. Hierbei ergeben sie zwei Möglichkeiten, entweder alle Werte auf 0 zu setzen und ein geringes Vertrauen oder die pos v und a schätzen und hohes Vertrauen anzunehmen.
x0 = [ 0.7 0 0 ]' ; P0 = 100 * eye(3) ;
1. In dem ersten Schritt wird der Zustandsvektor x(k) und die Kovarianzmatrix P(k) anhand der Systemmatrix A prädiziert (vorhergesagt). Als Systemmodell dient das konstante Beschleunigung Modell welches in die Systemmatrix A überführt wurde. Die Matrix Q wird genutzt um das Systemrauschen zu berücksichtigen. Hohe Werte innerhalb der Matrix Q führen zu einer hohen Kalman - Verstärkung und somit zu einer hohen Gewichtung der Messwerte.
A = [ 1 dt 1/2*dt^2 ; Q = 0.1 * eye(3); wenn Fahrzeug außerhalb der Messstrecke 0 1 dt ; Q = 20 * eye(3); wenn Fahrzeug innerhalb der Messstrecke 0 0 1 ] ;
2. Folgend findet im zweiten Schritt die Ermittlung der Kalman - Verstärkung K(k+1) durch die Verwendung der prädizierten Daten aus dem ersten Schritt. Ebenfalls werden die Ausgangsmatrix H und die Kovarianzmatrix des Messrauschens R definiert. Durch die Messmatrix H erfolgt eine Festlegung welcher Wert aus dem Zustandsvektor x(k) gemessen wird. Das Messrauschen R ist gegensätzlich zum Systemrauschen Q und bewirkt somit bei einem hohen Wert einen hohen Einfluss der Messung auf die Schätzung.
H = [1 0 0] ; R = 50; wenn Fahrzeug außerhalb der Messstrecke R = 10; wenn Fahrzeug innerhalb der Messstrecke
3. Innerhalb des dritten Schrittes werden die aktuellen Messdaten z(k+1) in den Algorithmus mit einbezogen und eine Schätzung des Systemzustandes x(k+1) berechnet. Als Eingangsgröße dient bei der Berechnung die Zustandsschätzung x_stern(k+1) aus dem ersten Schritt.
4. Um festzulegen mit welchem Gewicht die Zustandsschätzung aus dem vorherigen Zyklus in die aktuelle Schätzung mit einbezogen werden soll, wird im letzten Schritt die Fehlerkovarianzmatrix P(k+1) berechnet. Als Messvektor z werden die Daten des Ultraschallsensors (Position des Fahrzeugs) verwendet.
Der Kalman - Algorithmus wird zyklisch über die Anzahl der Messwerte ausgeführt, sodass die Position, die Geschwindigkeit und die Beschleunigung für jeden Zeitschritt ermittelt werden kann. Die Abtastzeit dt entspricht der Abtastrate des Ultraschallsensors. Anschließend können die geschätzten Zustände als Rückgabewerte festgelegt und zur grafischen Veranschaulichung genutzt werden.
dt = 0.1;
Grafische Benutzeroberfläche
Um eine nutzerfreundliche Bedienung des Systems zur Geschwindigkeitsüberwachung zu ermöglichen wurde eine grafische Benutzeroberfläche in dem MATLAB APP Designer erstellt.
Die grafische Benutzeroberfläche bietet neben der Steuerung der Messung ebenfalls die Möglichkeit die ermittelten Daten zu visualisieren. Hierdurch kann die mittels Messung und Berechnung ermittelte Position, Geschwindigkeit und Beschleunigung des Fahrzeugs mit den Ergebnissen des Kalman - Filters vergleichen werden,
kurze Anleitung zur Nutzung der grafischen Benutzeroberfläche:
1. Zu Beginn wird das System gestartet indem der Schalter in der unteren linken Ecke auf ON gestellt wird. Es leuchtet die grüne Lampe auf und das System ist nach einigen Sekunden startbereit. Sobald auf der rechten Seite die kleine Ampel beginnt die Phasen (rot, gelb, grün) zu wechseln kann zu nächsten Schritt übergegangen werden.
2. Bevor die Messung starten kann muss zunächst eine zugelassene Geschwindigkeit festgelegt und in das zugehörige Feld auf der rechten Seite eingetragen werden.
3. Anschließend kann durch das Betätigen des Buttons "Messung" in der unteren rechten Ecke die Messung gestartet werden. Das Fahrzeug fährt nun auf der Messstrecke und daraufhin unter der Brücke hindurch.
4. Nachdem die Messung abgeschlossen ist findet die Visualisierung der Daten in den zugehörigen Diagrammen und Feldern statt. Ebenfalls erfolgen Hinweise bezüglich der Regelverstöße und eine Darstellung der gemessenen Geschwindigkeit unterhalb der zugelassenen Geschwindigkeit.
Im nächsten Abschnitt folgt eine Abbildung der grafischen Benutzeroberfläche, die diese in Aktion zeigt.
Ergebnis
Als Ergebnis lässt sich zunächst festhalten, dass die geforderten Anforderungen, wie in unterer Tabelle zu sehen, erfüllt werden.
ID | Kategorie | Anforderung | Erfüllt | Ersteller |
---|---|---|---|---|
001 | Geschwindigkeitsermittlung | Die Geschwindigkeit v des Modellautos muss auf einem definierten Streckenabschnitt mittels eines Ultraschallsensors ermittelt werden. | ja | Lips, Luncke |
002 | Geschwindigkeitsverstoß | Eine Überschreitung der zugelassenen Geschwindigkeit v > v_zugelassen muss visuell über eine LED dargestellt werden. | ja | Lips, Luncke |
003 | Geschwindigkeitsverstoß | Die zugelassene Geschwindigkeit muss vom Benutzer vorgegeben werden können. | ja | Lips, Luncke |
004 | Ampelverstoß | Ein Ampelverstoß liegt vor, wenn das Auto bei "rot" die Lichtschranke unterbricht und muss über eine LED visuell dargestellt werden. | ja | Lips, Luncke |
005 | Zustandsschätzung | Die Fahrzeugbewegung wird mit einem Konstante-Beschleunigung-Modell modelliert und die Zustände Position, Geschwindigkeit Beschleunigung werden mittels Zustandsschätzer (Kalman- Filter) geschätzt. | ja | Lips, Luncke |
006 | Visualisierung | Auf der grafischen Benutzeroberfläche muss ein Regelverstoß visuell dargestellt werden. | ja | Lips, Luncke |
007 | Visualisierung | Auf der grafischen Benutzeroberfläche muss die gemessene Geschwindigkeit dargestellt werden. | ja | Lips, Luncke |
008 | Aufbau | Der Aufbau muss eine geeignete Positionierung des Ultraschallsensors ermöglichen um eine zufriedenstellende Messung durchzuführen. | ja | Lips, Luncke |
009 | Modellauto | Das Modellauto muss so angepasst werden, das eine möglichst optimale Ultraschallmessung durchgeführt werden kann. | ja | Lips, Luncke |
010 | Inbetriebnahme und Steuerung | Die Inbetriebnahme und Steuerung des Systems muss über eine grafische Benutzeroberfläche und Mikrocontroller stattfinden. | ja | Lips, Luncke |
Das Fahrzeug wird an der Position bei 0,7 m erkannt, welches durch eine Referenzmessung mit Lineal bestätigt werden konnte. Es ist zu erkennen, dass die Positionsmesswerte leicht um den Wert 0,7 m schwanken. Nach einer Einschwingzeit von 1 Sekunde, ist zu erkennen, dass die geschätzte Position des Fahrzeugs mit den Messwerten übereinstimmt. Befindet sich das Fahrzeug im Stand, sind die geschätzten Zustände des Kalmanfilters für die Geschwindigkeit und die Beschleunigung gleich Null. Da die Positionsmessung des Ultraschallsensors leichte Messabweichungen aufweist schwanken die Messwert der Geschwindigkeit und Beschleunigung leicht (+-0,2 m/s / +-0,05 m/s^2) um den Wert Null. Außerdem ist zu erkennen, dass kein Ampelverstoß vorliegt, da sich das Fahrzeug nicht auf Ampelhöhe befindet. Die gemessene Geschwindigkeit beträgt 0 m/s (stehendes Fahrzeug) und liegt somit unterhalb der zugelassenen Geschwindigkeit von 0,05 m/s, weshalb kein Regelverstoß bezüglich der Geschwindigkeit angezeigt wird.
Die Bewegung des Fahrzeugs wird auf der Messstrecke zwischen 0,4 und 0,7 m erkannt. Die Positionsschätzung des Kalmanfilters stimmt näherungsweise mit den Positionsmesswerten überein. Es ist ein Geschwindigkeitsanstieg bei konstanter Beschleunigung erkennbar. Da die Ampel nicht bei "rot" überfahren wird, wird diesbezüglich auch kein Regelverstoß angezeigt. Die gemessene Geschwindigkeit von 0,1 m/s ist höher als die zugelassene Geschwindigkeit von 0,05 m/s und wird somit als Regelverstos angezeigt.
Sobald sich das Fahrzeug außerhalb der festgelegten Messstrecke (0,4 bis 0,7 m und 1 bis 3 sek.) befindet, wird das Kalmanfilterergebnis zu sehr von den Ausreißern beeinflusst. Durch Anpassung der Rauschvektoren/-matrizen R und Q können die Ausreißer angepasst werden. Ursache der Ausreißer können das Messobjekt (transparente Scheibe verdunkelt) und dessen dynamische Bewegung sein. Bei der statischen Messung waren die Messergebnisse im Gegensatz zur dynamischen Messung zufriedenstellend. Außerdem kann die Ausrichtung des Ultraschallsensors ebenfalls Ausreißer verursachen, da möglicherweise nicht immer das Messobjekt (Fahrzeug) getroffen wird, sondern beispielsweise die Fahrban. Um die Ausreißer zu vermeiden, wäre eine automatisierte Messung über die festgelegte Messstrecke (0,4 m bis 0,7 m) mittels einer While-Schleife (Zyklen abhängig von der gemessenen Distanz) möglich, die ebenfalls das Vertrauen in die Messwerte erhöht.
Zusammenfassung
Lessons Learned
Herausforderung:
- Entscheidung für Softwareumsetzung (Matlab, Simulink, Arduino IDE...)
- Softwareumsetzung in Matlab (Vorteil: App-Designer, Einbindung von Toolbox, Hardware Support Package, Kalman-Filte etc.)
- Hardwareumsetzung (Mikrocontroller hat nicht genügend In-/Outputs)
- Reduzierung nicht unbedingt erforderlicher Komponenten (weitere Lichtschranken, zweite LED, LCD-Display)
- Modellauto so ausstatten, dass eine Messung möglich ist
- Transparente Scheibe verdunkeln/vergrößern
- Feste Fahrbahn vorgeben
- Seitenbegrenzung (Schienen), sodass das Modellauto geradeaus fährt
- Modellaufbau (Brücke) zu instabil
- Holz- statt Pappkonstruktion
- Sensorausrichtung
- Sensor so befestigen, dass er seine Ausrichtung beibehält
- Messausreißer
- feste Messstrecke definieren (0,4 m bis 0,7 m)
- Rauschparameter richtig einstellen
Projektunterlagen
Projektplan
Der Ablauf des Projektes wird in folgendem Projektplan ausschnittsweise dargestellt. Die dazugehörige Excel-Datei des kompletten Projektplans befindet sich in SVN.
Projektdurchführung
Die Durchführung des Projektes orientierte sich an dem Projektplan. Begonnen wurde mit einem Projektvorschlag und dessen Genehmigung durch den betreuenden Professor. Dazu wurde sowohl die Einleitung als auch die Anforderungen und der Funktionale Systementwurf angefertigt. Nach der Projektgenehmigung wurde die Komponentenspezifikation erstellt und die benötigten Komponenten besorgt. Anschließend begann die Umsetzung der Hard- und Software, sodass auch ein Komponententest durchgeführt werden konnte. Zunächst wurden alle Komponenten einzeln getestet und bei gewünschter Funktionsweise mit weiteren Komponenten zusammengeschaltet, bis die Anforderungen in zufriedenstellender Weise erfüllt wurden. Abschließend wurden die Ergebnisse des Projektes und dessen Durchführung im Wiki-Artikel festgehalten und ein Video erstellt.
YouTube Video
Das Video zum Projekt befindet sich in Sciebo: Geschwindigkeitsüberwachung_Video.
Weblinks
Literatur
Phil Kim, Kalman - Filter mit Matlab Beispielen, 1. Auflage 2016, Übersetzt von Ulrich Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
- ↑ Prof. Dr. Göbel, "Systems Design Engineering" - Vorlesungsunterlagen, 2020.