AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(11 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 9: Zeile 9:
*  
*  
== Lernziele==
== Lernziele==
Nach Durchf¨uhrung dieser Lektion k¨onnen Sie
Nach Durchführung dieser Lektion können Sie
* mit yED eine Zustandsmaschine planen.
* eine Zustandsmaschine programmieren.
* eine Zustandsmaschine programmieren.
* funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen.
* funktional programmieren und Funktionen zu einem großen Projekt zusammenf¨ugen.
Zeile 25: Zeile 26:
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?
unterscheiden kann. Welche Transitionen führen zu den Zustandsübergängen?


Legen Sie das programm als Funktionsrümpfe an.
Legen Sie das Programm als Funktionsrümpfe an.


Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml
Arbeitsergebnis: ZustandsdiagrammAutonomesParken.graphml


'''Arbeitsergebnisse:''' <code>AEP.pap, AEP.ino</code>
'''Arbeitsergebnisse:''' <code>AutonomesParken.pap, AutonomesParken.ino</code>


== Versuchsdurchführung ==
== Versuchsdurchführung ==
Zeile 35: 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: Parkl¨ucke suchen,
## Zustand: Parklücke suchen,
## Zustand 2: Rechtseinschlag,
## Zustand: Rechtseinschlag,
## Zustand 3: Linkseinschlag und
## Zustand: Linkseinschlag und
## Zustand 4: Geradeaus (Korrekturzug)
## Zustand: Geradeaus (Korrekturzug)
unterscheiden kann.
# Fahren Sie konstant ohne Unterbrechung zügig rückwärts.
# Fahren Sie konstant ohne Unterbrechung z¨ugig r¨uckw¨arts.
# Verwenden Sie Ihr Programm <code>sucheParkluecke.ino</code> im Zustand 1.
# 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 2: Rechtseinschlag. Schlagen Sie voll rechts ein und fahren Sie
# Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug gerade (0&thinsp;°) in der Lücke steht.
r¨uckw¨arts bis das Fahrzeug 40° zur L¨ucke steht.
# Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der Parklücke stehen.
# 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¨arts, bis Sie mittig in der
Parkl¨ucke stehen.
# Schalten Sie alle Motoren aus.
# 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>


=== Aufgabe 10.2: Nachhaltige Doku ===
=== Aufgabe 10.2: Nachhaltige Doku ===
Zeile 57: Zeile 61:
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Versehen Sie jedes Programm mit einem Header ([[Header Beispiel für MATLAB]], [[Header Beispiel für C]]).
* Kommentiere Sie den Quelltext umfangreich.
* Kommentiere Sie den Quelltext umfangreich.
'''Hinweise:'''
* Es empfiehlt sich die Zustandsmaschine mit den Befehlen <code>switch..case</code> zu realisieren.
* Ermitteln Sie die Roboterpose aus den unterschiedlichen Radumdrehungen (Differenzielle Odometrie).
* Nutzen Sie den Ultraschallsensor um Mittig in der Parkl¨ucke zu stehen.
'''Arbeitsergebnisse:''' <code>AutonomesParken.ino</code>


'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>
'''Arbeitsergebnis''' in SVN: <code>SVN Log</code>

Aktuelle Version vom 22. Mai 2023, 12:39 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

  • 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: 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

Demos

Literatur


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