AlphaBot: Autonomes Einparken: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
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: Parkl¨ucke suchen,
## 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)
unterscheiden kann.
# 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, 14:36 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: 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:

  1. Erstellen Sie eine Zustandsmaschine, die zwischen den folgenden 4 Zuständen unterscheiden kann.
    1. Zustand 1: Parklücke suchen,
    2. Zustand 2: Rechtseinschlag,
    3. Zustand 3: Linkseinschlag und
    4. Zustand 4: 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.

  1. Programmieren Sie Zustand 3: Linkseinschlag. Schlagen Sie voll links ein, bis das Fahrzeug

gerade (0 °) in der L¨ucke steht.

  1. Programmieren Sie Zustand 4: Geradeaus. Fahren Sie gerade vorwärts, bis Sie mittig in der

Parklücke stehen.

  1. Schalten Sie alle Motoren aus.

Aufgabe 10.2: Nachhaltige Doku

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