AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen
| (6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 11: | Zeile 11: | ||
|} | |} | ||
= Inhalt = | |||
== Lernziele== | == Lernziele== | ||
Nach Durchführung dieser Lektion können Sie | Nach Durchführung dieser Lektion können Sie | ||
* mit yED eine Zustandsmaschine planen. | * mit yED eine Zustandsmaschine planen. | ||
* eine Zustandsmaschine programmieren. | * eine Zustandsmaschine programmieren. | ||
* funktional programmieren und Funktionen zu einem großen Projekt | * funktional programmieren und Funktionen zu einem großen Projekt zusammenfügen. | ||
* Quelltext debuggen und optimieren. | * Quelltext debuggen und optimieren. | ||
* Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren. | * Messdaten speichern und via MATLAB<sup>®</sup> auswerten und visualisieren. | ||
| Zeile 37: | Zeile 37: | ||
'''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code> | '''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code> | ||
== Versuchsdurchführung | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung Hausaufgabe </strong> | |||
|- | |||
| [[Datei:Zustandsdiagramm AEP Inf2P.jpg|500px]] | |||
|} | |||
= Versuchsdurchführung = | |||
In diesem Termin lassen wir den AlphaBot autonom einparken. | 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: | 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. | # Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann. | ||
| Zeile 56: | Zeile 63: | ||
* Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung <code>switch..case</code>. | * Realisieren Sie die Zustandsmaschine mit der Mehrfachverzweigung <code>switch..case</code>. | ||
* Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie). | * Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie). | ||
* Nutzen Sie den Ultraschallsensor um | * Nutzen Sie den Ultraschallsensor um mittig in der Parklücke zu stehen. | ||
'''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code> | '''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code> | ||
== Aufgabe 10.2: Nachhaltige Doku == | |||
* Sichern Sie alle Ergebnisse mit beschreibendem Text (<code>message</code>) in SVN. | * 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 Regeln für den [[Software_Versionsverwaltung_mit_SVN|Umgang mit SVN]] ein. | ||
| Zeile 68: | Zeile 75: | ||
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code> | '''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>] | |||
---- | ---- | ||
→ 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: | → 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_SoSe25|Informatik Praktikum 2]] | → zurück zum Hauptartikel: [[AlphaBot_SoSe25|Informatik Praktikum 2]] | ||
Aktuelle Version vom 10. Juni 2025, 13:37 Uhr

| 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
| Musterlösung Hausaufgabe |
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:
- 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
sucheParkluecke.inoim 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 °) 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
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
- Sichern Sie alle Ergebnisse mit beschreibendem Text (
message) in SVN. - Halten Sie die Regeln für den Umgang mit SVN ein.
- Halten Sie die Programmierrichtlinie für C und die Programmierrichtlinien für MATLAB® ein.
- Versehen Sie jedes Programm mit einem Header (Header Beispiel für MATLAB, Header Beispiel für C).
- Kommentiere Sie den Quelltext umfangreich.
Arbeitsergebnis in SVN: SVN Log
Tutorials
→ Termine 1 2 3 4 5 6 7 8 9 10
→ zurück zum Hauptartikel: Informatik Praktikum 2