AlphaBot: Parklücke suchen: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 10: Zeile 10:
== Lernziele==
== Lernziele==
Nach Durchführung dieser Lektion können Sie
Nach Durchführung dieser Lektion können Sie
*  
* einen Einparkalgorithmus planen
* Parklücken während der Fahrt vermessen.
* eine geeignete Parklücke suchen und auswählen.
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren.
* mittels <code>subplot</code> Messdaten vergleichen, ein x-y-Diagramme erstellen und analysieren.
 
== Vorbereitung/Hausaufgabe ==
== Vorbereitung/Hausaufgabe ==
In diesem Praktikum soll Ihr AlphaBot autonom einparken. Als Algorithmus dient der in der
In diesem Praktikum soll Ihr AlphaBot autonom einparken. Als Algorithmus dient der in der
Fahrschule vermittelte Ablauf (siehe Abb. 1). Planen Sie hierzu den Algorithmus als PAP und legen Sie die Programmrümpfe als <code>switch..case</code> im Programm an. Gehen Sie in den nachfolgenden
Fahrschule vermittelte Ablauf (siehe Abb. 1). Planen Sie hierzu den Algorithmus als PAP und legen Sie die Programmrümpfe als <code>switch..case</code> im Programm an. Gehen Sie in den nachfolgenden
Phasen vor:
Phasen vor:
# Vermessen Sie die Parklücke mit Ultraschall und bestimmen Sie die Länge mit dem Inkrementalgeber.
# Fahren Sie auf der schwarzen Linie geregelt geradeaus. Vermessen Sie dabei die Parklücke mit Ultraschall und bestimmen Sie die Länge mit dem Inkrementalgeber.
# Wenn die Lücke dem 1,5-fachen der Fahrzeuglänge entspricht, halten Sie an, um optimal einparken zu können.
# Wenn die Lücke dem 1,5-fachen der Fahrzeuglänge entspricht, halten Sie an, um optimal einparken zu können.
# Voller Rechtseinschlag
# Voller Rechtseinschlag
Zeile 26: Zeile 31:
'''Arbeitsergebnisse:''' <code>AEP.pap, AEP.ino</code>
'''Arbeitsergebnisse:''' <code>AEP.pap, AEP.ino</code>


# Planen Sie die Funktion <code>findeParklücke()</code> als PAP.
# Planen Sie die Programm mit der Unterfunktion <code>findeParklücke()</code> als PAP.
# Setzen Sie das PAP 1:1 als Rahmenprogramm <code>sucheParkluecke.ino</code> um.
# Setzen Sie das PAP 1:1 als Rahmenprogramm <code>sucheParkluecke.ino</code> um.


'''Tipp''': Sie brauchen die Programmierung noch nicht umsetzen. Legen Sie die Struktur (Header, Anweisungen, Verweigungen, Schleifen, Kommentaren..) an.
'''Tipp''': Sie brauchen die Programmierung noch nicht umsetzen. Legen Sie die Struktur (Header, Anweisungen, Verweigungen, Schleifen, Kommentaren..) an.


Arbeitsergebnisse:  <code>findeParklücke.pap, sucheParkluecke.ino</code>
Arbeitsergebnisse:  <code>sucheParkluecke.pap, sucheParkluecke.ino</code>


== Versuchsdurchführung ==
== Versuchsdurchführung ==
=== Aufgabe 5.1: Lichtschranke ===
=== Aufgabe 9.1: Parklücke suchen ===
F¨ullen Sie den Funktion FindeParkluecke() gem¨aß Ihres Konzepts mit Inhalt.
1. Stellen Sie mit Kartons eine Parkl¨uckensituation dar.
2. Fahren Sie mit dem Linienverfolger geregelt an den L¨ucken vorbei.
3. Vermessen Sie w¨ahrend der Fahrt diese L¨ucken.
4. Das Fahrzeug soll sanft anfahren (lineare Rampe bis vmax).
5. Stoppen Sie Ihr Fahrzeug, wenn Sie eine passende L¨ucke gefunden haben.
Arbeitsergebnisse: <code>sucheParkluecke.ino</code>
 
=== Aufgabe 9.2 Speicherung und Visualisierung ===
Speichern Sie während der Fahrt Daten im [[Arduino:_Daten_im_EEPROM_speichern|EEPROM]]. Visualisieren Sie in MATLAB<sup>®</sup> die Werte
* Längsabweichung (Fahrstrecke, x-t-Diagramm)
* Querabweichung (Ultraschallmesswerte, y-t-Diagramm)
* Längs- und Querabweichung (x-y-Diagramm)
über der Fahrzeit.
 
'''Arbeitsergebnis:''' <code>zeigeMesswerte.m</code>
 
'''Hinweis:''' Achten Sie auf die maximalen Schreib- und Lesezyklen für ein EEPROM.
 
=== Aufgabe 9.3: Nachhaltige Doku ===
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN.
* Halten Sie die Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein.
* Halten Sie die [[Medium:Programmierrichtlinie.pdf|Programmierrichtlinie für C]] und die [[Medium:Programmierrichtlinien_für_Matlab.pdf|Programmierrichtlinien für MATLAB<sup>®</sup>]] ein.
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Kommentiere Sie den Quelltext umfangreich.


== Tutorials ==
== Tutorials ==
* [[Arduino:_Daten_im_EEPROM_speichern|Daten im EEPROM speichern]]


== Demos ==
== Demos ==

Version vom 19. Mai 2023, 14:30 Uhr

Abb. 1: Schritte eines Einparkvorgangs

Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul I
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester

Inhalt

Lernziele

Nach Durchführung dieser Lektion können Sie

  • einen Einparkalgorithmus planen
  • Parklücken während der Fahrt vermessen.
  • eine geeignete Parklücke suchen und auswählen.
  • Messdaten speichern und via MATLAB® auswerten und visualisieren.
  • mittels subplot Messdaten vergleichen, ein x-y-Diagramme erstellen und analysieren.

Vorbereitung/Hausaufgabe

In diesem Praktikum soll Ihr AlphaBot autonom einparken. Als Algorithmus dient der in der Fahrschule vermittelte Ablauf (siehe Abb. 1). Planen Sie hierzu den Algorithmus als PAP und legen Sie die Programmrümpfe als switch..case im Programm an. Gehen Sie in den nachfolgenden Phasen vor:

  1. Fahren Sie auf der schwarzen Linie geregelt geradeaus. Vermessen Sie dabei die Parklücke mit Ultraschall und bestimmen Sie die Länge mit dem Inkrementalgeber.
  2. Wenn die Lücke dem 1,5-fachen der Fahrzeuglänge entspricht, halten Sie an, um optimal einparken zu können.
  3. Voller Rechtseinschlag
  4. Rückwärtsfahrt starten
  5. Rückwärtsfahrt bis das Auto 45° in der Parklücke steht
  6. Steht das Auto 45° in der Parklücke Volleinschlag links
  7. Gerade lenken
  8. Korrekturzug vorwärts

Arbeitsergebnisse: AEP.pap, AEP.ino

  1. Planen Sie die Programm mit der Unterfunktion findeParklücke() als PAP.
  2. Setzen Sie das PAP 1:1 als Rahmenprogramm sucheParkluecke.ino um.

Tipp: Sie brauchen die Programmierung noch nicht umsetzen. Legen Sie die Struktur (Header, Anweisungen, Verweigungen, Schleifen, Kommentaren..) an.

Arbeitsergebnisse: sucheParkluecke.pap, sucheParkluecke.ino

Versuchsdurchführung

Aufgabe 9.1: Parklücke suchen

F¨ullen Sie den Funktion FindeParkluecke() gem¨aß Ihres Konzepts mit Inhalt. 1. Stellen Sie mit Kartons eine Parkl¨uckensituation dar. 2. Fahren Sie mit dem Linienverfolger geregelt an den L¨ucken vorbei. 3. Vermessen Sie w¨ahrend der Fahrt diese L¨ucken. 4. Das Fahrzeug soll sanft anfahren (lineare Rampe bis vmax). 5. Stoppen Sie Ihr Fahrzeug, wenn Sie eine passende L¨ucke gefunden haben. Arbeitsergebnisse: sucheParkluecke.ino

Aufgabe 9.2 Speicherung und Visualisierung

Speichern Sie während der Fahrt Daten im EEPROM. Visualisieren Sie in MATLAB® die Werte

  • Längsabweichung (Fahrstrecke, x-t-Diagramm)
  • Querabweichung (Ultraschallmesswerte, y-t-Diagramm)
  • Längs- und Querabweichung (x-y-Diagramm)

über der Fahrzeit.

Arbeitsergebnis: zeigeMesswerte.m

Hinweis: Achten Sie auf die maximalen Schreib- und Lesezyklen für ein EEPROM.

Aufgabe 9.3: Nachhaltige Doku

Tutorials

Demos

Literatur


→ Termine 1 2 3 4 5 6 7 8 9 10 11
→ zurück zum Hauptartikel: Informatik Praktikum 2