AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen
Zeile 36: | Zeile 36: | ||
=== Aufgabe 10.1: Parken === | === 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 4 Zuständen | # Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann. | ||
## Zustand 1: | ## Zustand 1: Parklücke suchen, | ||
## Zustand 2: Rechtseinschlag, | ## Zustand 2: Rechtseinschlag, | ||
## Zustand 3: Linkseinschlag und | ## Zustand 3: Linkseinschlag und | ||
## Zustand 4: Geradeaus (Korrekturzug) | ## Zustand 4: Geradeaus (Korrekturzug) | ||
# Fahren Sie konstant ohne Unterbrechung zügig rückwärts. | # Fahren Sie konstant ohne Unterbrechung zügig rückwärts. | ||
# Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1. | # Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1. |
Version vom 19. Mai 2023, 15:36 Uhr
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
- mit yED eine Zustandsmaschine planen.
- eine Zustandsmaschine programmieren.
- funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen.
- 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: AEP.pap, AEP.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:
- Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
- Zustand 1: Parklücke suchen,
- Zustand 2: Rechtseinschlag,
- Zustand 3: Linkseinschlag und
- Zustand 4: Geradeaus (Korrekturzug)
- Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
- Verwenden Sie Ihr Programm
sucheParkluecke.ino
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 °) in der L¨ucke steht.
- Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der
Parklücke stehen.
- Schalten Sie alle Motoren aus.
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.
Hinweise:
- Es empfiehlt sich die Zustandsmaschine mit den Befehlen
switch..case
zu realisieren. - 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
Arbeitsergebnis in SVN: SVN Log
Tutorials
Demos
Literatur
→ Termine 1 2 3 4 5 6 7 8 9 10 11
→ zurück zum Hauptartikel: Informatik Praktikum 2