AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(26 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 2: Zeile 2:
[[Kategorie:AlphaBot]]
[[Kategorie:AlphaBot]]
[[ Datei:EPA Algo.jpg|thumb|rigth|450px|Abb. 1:  Schritte eines Einparkvorgangs]]
[[ Datei:EPA Algo.jpg|thumb|rigth|450px|Abb. 1:  Schritte eines Einparkvorgangs]]
'''Autor:''' [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]<br>
{|class="wikitable"
'''Modul:''' Praxismodul I<br>
|-
'''Lehrveranstaltung:''' Mechatronik, Informatik Praktikum 2, 2. Semester<br>
| '''Autor:''' || [[Benutzer:Ulrich_Schneider| Prof. Dr.-Ing. Schneider]]
|-
| '''Modul:''' || Praxismodul II
|-
| '''Lehrveranstaltung:''' || Mechatronik, Informatik Praktikum 2, 2. Semester
|}
 
= Inhalt =


== Inhalt ==
*
== Lernziele==
== Lernziele==
Nach Durchführung dieser Lektion können Sie
Nach Durchführung dieser Lektion können Sie
*  
* mit yED eine Zustandsmaschine planen.
* eine Zustandsmaschine programmieren.
* funktional programmieren und Funktionen zu einem großen Projekt zusammenfügen.
* Quelltext debuggen und optimieren.
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren.
* autonom einen AlphaBot einparken.
 
== Vorbereitung/Hausaufgabe ==
== Vorbereitung/Hausaufgabe ==
In diesem Praktikum soll Ihr AlphaBot autonom einparken. Als Algorithmus dient der in der
In diesem Praktikumstermin soll Ihr AlphaBot autonom einparken. Erstellen Sie als Vorbereitung ein [https://de.wikipedia.org/wiki/Endlicher_Automat Zustandsdiagramm] für die Funktion <code>Parken()</code> mit [https://www.yworks.com/products/yed yEd].
Fahrschule vermittelte Ablauf (siehe Bild 3.5).
Planen Sie eine Zustandsmaschine, die zwischen den Zuständen
1. Planen Sie hierzu den Algorithmus als PAP (PAP-Designer). Gehen Sie in den nachfolgenden
* Zustand 1: Parklücke suchen,
Phasen vor.
* Zustand 2: Rechtseinschlag (rückwärts),
2. Phase 1: Vermessen Sie die Parkl¨ucke mit Ultraschall und bestimmen Sie die L¨ange mit dem
* Zustand 3: Linkseinschlag (rückwärts) und
Inkrementalgeber.
* Zustand 4: Geradeaus (Korrekturzug)
3. Phase 2: Wenn die L¨ucke dem 1,5-fachen der Fahrzeugl¨ange entspricht, halten Sie an, um
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?
optimal einparken zu k¨onnen.
 
4. Phasen 3-7: Parken Sie ein.
Legen Sie das Programm als Funktionsrümpfe an.
5. Phasen 8: Korrekturzug
 
Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml
 
'''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code>
 
 
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung Hausaufgabe&thinsp;</strong>
|-
| [[Datei:Zustandsdiagramm AEP Inf2P.jpg|500px]]
|}
 
= Versuchsdurchführung =
In diesem Termin lassen wir den AlphaBot autonom einparken.
== Aufgabe 10.1: Parken ==
Schreiben Sie das Programm <code>AutonomesParken.ino</code>. Folgende Funktionsanforderungen sollten erfüllt werden:
# Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
## Zustand: Parklücke suchen,
## Zustand: Rechtseinschlag,
## Zustand: Linkseinschlag und
## Zustand: Geradeaus (Korrekturzug)
# Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
# Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1.
# Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie rückwärts bis das Fahrzeug 40° zur Lücke steht.
# Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0&thinsp;°) in der Lücke steht.
# Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
# Schalten Sie alle Motoren aus.
 
'''Anforderungen:'''
* Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung <code>switch..case</code>.
* Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie).
* Nutzen Sie den Ultraschallsensor um mittig in der Parklücke zu stehen.
 
'''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code>


== Versuchsdurchführung ==
== Aufgabe 10.2: Nachhaltige Doku ==
=== Aufgabe 5.1: Lichtschranke ===
* 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 ==
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
= Tutorials =
* [https://de.wikipedia.org/wiki/Endlicher_Automat Wikipedia: Zustandsdiagramm]
* [https://de.mathworks.com/discovery/state-diagram.html Zustandsdiagramme mit MATLAB<sup>®</sup>]


== Demos ==


== Literatur ==


----
----
→ Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2023|1]] [[AlphaBot:_Messdatenverarbeitung_mit_MATLAB|2]] [[AlphaBot:_MATLAB_als_serieller_Monitor|3]] [[AlphaBot: Servo ansteuern|4]] [[AlphaBot: AlphaBot:_Motoren_und_Inkrementalgeber|5]] [[AlphaBot: Programmier-Challenge I SoSe23|6]] [[AlphaBot:_Gesteuerte_Fahrt|7]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|8]] [[AlphaBot: Parklücke suchen|9]] [[AlphaBot: Autonomes Einparken|10]] [[AlphaBot: Programmier-Challenge II SoSe23|11]]<br>
→ Termine [[Einführungsveranstaltung_Informatikpraktikum_2_im_SoSe_2025|1]] [[AlphaBot:_Hardware_Support_Package_für_MATLAB|2]] [[AlphaBot: Servo_mit_MATLAB_ansteuern|3]] [[AlphaBot:_Motoren_und_Inkrementalgeber|4]] [[AlphaBot: Programmier-Challenge I SoSe25|5]] [[AlphaBot:_Gesteuerte_Geradeausfahrt|6]] [[AlphaBot: Geregelte Fahrt mit Linienverfolger|7]] [[AlphaBot: Parklücke suchen|8]] [[AlphaBot: Autonomes Einparken|9]] [[AlphaBot: Programmier-Challenge II SoSe25|10]]<br>
→ zurück zum Hauptartikel: [[AlphaBot_SoSe23|Informatik Praktikum 2]]
→ zurück zum Hauptartikel: [[AlphaBot_SoSe25|Informatik Praktikum 2]]

Aktuelle Version vom 10. Juni 2025, 13:37 Uhr

Abb. 1: Schritte eines Einparkvorgangs
Autor: Prof. Dr.-Ing. Schneider
Modul: Praxismodul II
Lehrveranstaltung: Mechatronik, Informatik Praktikum 2, 2. Semester

Inhalt

Lernziele

Nach Durchführung dieser Lektion können Sie

  • mit yED eine Zustandsmaschine planen.
  • eine Zustandsmaschine programmieren.
  • funktional programmieren und Funktionen zu einem großen Projekt zusammenfügen.
  • Quelltext debuggen und optimieren.
  • Messdaten speichern und via MATLAB® auswerten und visualisieren.
  • autonom einen AlphaBot einparken.

Vorbereitung/Hausaufgabe

In diesem Praktikumstermin soll Ihr AlphaBot autonom einparken. Erstellen Sie als Vorbereitung ein Zustandsdiagramm für die Funktion Parken() mit yEd. Planen Sie eine Zustandsmaschine, die zwischen den Zuständen

  • Zustand 1: Parklücke suchen,
  • Zustand 2: Rechtseinschlag (rückwärts),
  • Zustand 3: Linkseinschlag (rückwärts) und
  • Zustand 4: Geradeaus (Korrekturzug)

unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?

Legen Sie das Programm als Funktionsrümpfe an.

Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml

Arbeitsergebnisse: AutonomesParken.pap, AutonomesParken.ino


Versuchsdurchführung

In diesem Termin lassen wir den AlphaBot autonom einparken.

Aufgabe 10.1: Parken

Schreiben Sie das Programm AutonomesParken.ino. Folgende Funktionsanforderungen sollten erfüllt werden:

  1. Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
    1. Zustand: Parklücke suchen,
    2. Zustand: Rechtseinschlag,
    3. Zustand: Linkseinschlag und
    4. Zustand: Geradeaus (Korrekturzug)
  2. Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
  3. Verwenden Sie Ihr Programm sucheParkluecke.ino im Zustand 1.
  4. Programmieren Sie Zustand 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie rückwärts bis das Fahrzeug 40° zur Lücke steht.
  5. Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0 °) in der Lücke steht.
  6. Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
  7. Schalten Sie alle Motoren aus.

Anforderungen:

  • Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung switch..case.
  • Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie).
  • Nutzen Sie den Ultraschallsensor um mittig in der Parklücke zu stehen.

Arbeitsergebnisse: AutonomesParken.ino

Aufgabe 10.2: Nachhaltige Doku

Arbeitsergebnis in SVN: SVN Log

Tutorials



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