AlphaBot: Motoren und Inkrementalgeber: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 102: | Zeile 102: | ||
# Die Seitenlänge a ist eine Variable und soll 30 cm betragen. | # Die Seitenlänge a ist eine Variable und soll 30 cm betragen. | ||
# Führen Sie eine Schleife 4x aus, die aus Geradeausfahrt und Drehung besteht. | # Führen Sie eine Schleife 4x aus, die aus Geradeausfahrt und Drehung besteht. | ||
# Stellen Sie die gefahrene Strecke | # Stellen Sie die gefahrene Strecke als X-Y-Plot in MATLAB<sup>®</sup> dar (vgl. Abb. 5). | ||
[[Datei:FahreQuadrat.jpg|ohne|mini|250px|Abb. 4: Fahren Sie im Uhrzeigersinn die Seiten eines Quadrates ab]] | [[Datei:FahreQuadrat.jpg|ohne|mini|250px|Abb. 4: Fahren Sie im Uhrzeigersinn die Seiten eines Quadrates ab]] | ||
Version vom 13. April 2023, 16:08 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
Versuchsdurchführung
Aufgabe 5.1: Lichtschranke
- Bitte aktualisieren Sie ihre Arduino / librarie.
- Machen Sie sich mit dem Demo
E13_Lichtschranke
vertraut, so dass Sie jede Zeile erläutern können. - Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
- Lassen Sie als Test beide Motoren langsam vorwärts drehen.
- Flankenwechsel von
CNTL/CNTR
sollen einen Interrupt auslösen. - Stellen Sie beide Lichtschrankenzustände
CNTL/CNTR
über der Zeit in MATLAB® dar.
Lernzielkontrollfragen:
- Wie funktioniert eine Lichtschranke?
- Wo befinden sich die Lichtschranken?
- Wo ist rechts und wo links?
- An welchen Ports sind die linke und rechte Lichtschranke angeschlossen?
- Welche IO-Pins sind beim Arduino Uno interruptfähig?
- Wie entsheidet die Lichtschranke zwischen Vorwärts- oder Rückwärtsdrehung?
- Wieviele Flanken erhalten Sie für eine Radumdrehung?
Arbeitsergebnisse: testeLichtschranke.ino
, testeLichtschranke.m
Tipp 1 |
Nutzen Sie die Demos E13_Lichtschranke und E01_MotorenTest |
Nur die IO-Pins D2 und D3 sind beim Arduino Uno interruptfähig. |
Legen Sie für eine langsame Raddrehung keine Akkus ein. |
Tipp 2 |
Ergebnisplot: Abb. 2: CNTL/CNTR über der Zeit |
Aufgabe 5.2: RadInkrementalgeber
- Machen Sie sich mit
E15_RadInkrementalgeberFahrt
vertraut, so dass Sie jede Zeile erläutern können. - Kopieren Sie das Beispiel in Ihren Ordner und erweitern Sie es.
- Rechnen Sie die Radumdrehungen in gefahrene Strecke um.
- Stellen Sie die gefahrene Strecke über der Zeit in MATLAB® dar.
Lernzielkontrollfragen:
- Was ist ein Interrupt und wozu dient er?
- Wozu dient die Funktion
attachInterrupt()
? - Wie lässt sich die die gefahrene Strecke berechnen?
Arbeitsergebnis: testeRadInkrementalgeber.ino
, zeigeRadInkrementalgeber.m
Tipp 1 |
Nutzen Sie die Demos E14_RadInkrementalgeber und E15_RadInkrementalgeberFahrt |
Legen Sie den Akku korrekt an, um die Motoren anzusteuern. |
Aus den gemessenen Motorumdrehungen lässt sich die gefahrene Strecke berechnen: . Drehen beider Räder um 360 °, dann fährt der Roboter 20,1 cm vorwärts. |
Tipp 2 |
Ergebnisplot: Abb. 3: CNTL/CNTR über der Zeit |
Aufgabe 5.3: 1 m Fahrt
- Machen Sie sich mit dem Demo
E15_RadInkrementalgeberFahrt
vertraut, so dass Sie jede Zeile erläutern können. - Fahren Sie mit Ihrem Fahrzeug genau 1 m geradeaus vorwärts.
- Fahren Sie wieder zum Startpunkt zurück. Wenden Sie das Fahrzeug nicht!
- Stellen Sie die gefahrene Strecke auf dem OLED Display dar.
- Der AlphaBot inkrementiert die Strecke bei Vorwärtsfahrt und dekrementiert bei Rückwärtsfahrt.
Lernzielkontrollfragen:
- Wie kann die Fahrtrichtung bei der Streckenbestimmung berücksichtigt werden?
- Zeigt das Display 1 m an? Begründen Sie ggf. die Abweichung.
Arbeitsergebnis: fahreVorZurueck.ino
Tipp 1 |
Nutzen Sie die Demos E01, E15, E22 im SVN-Verzeichnis. |
Legen Sie den Akku korrekt an, um die Motoren anzusteuern. |
Aufgabe 5.4: Differentielle Odometrie
Odometrie bezeichnet eine Methode der Schätzung von Position und Orientierung (Lageschätzung) eines mobilen Roboters anhand der Daten seines Vortriebsystems. Durch Räder angetriebene Systeme benutzen dafür die Anzahl der Radumdrehungen, während laufende Systeme (z. B. Roboter) die Anzahl ihrer Schritte verwenden. Ein Gerät, das die Odometrie zur Lageschätzung verwendet, ist ein Odometer. Die Odometrie ist im Zusammenspiel mit der Koppelnavigation ein grundlegendes Navigationsverfahren für bodengebundene Fahrzeuge aller Art (Kraftfahrzeuge, Roboter), allerdings wird es auf Grund seiner Fehlereigenschaften selten als alleiniges Verfahren eingesetzt. In dieser Aufgabe werden die Raddrehzahlen der beiden Räder zur Lageschätzung verwendet.
- Erweitern Sie Ihr bisheriges Programm, um die Seiten eines Quadrates im Uhrzeigersinn abzufahren (vgl. Abb. 4).
- Die Seitenlänge a ist eine Variable und soll 30 cm betragen.
- Führen Sie eine Schleife 4x aus, die aus Geradeausfahrt und Drehung besteht.
- Stellen Sie die gefahrene Strecke als X-Y-Plot in MATLAB® dar (vgl. Abb. 5).
Lernzielkontrollfragen:
- Kommen Sie wieder am Startpunkt an?
- Begründen Sie ggf. eine Abweichung.
Arbeitsergebnis: fahreQuadrat.ino
Tipp 1 |
Nutzen Sie die Demos E01, E15, E22 im SVN-Verzeichnis. |
Legen Sie den Akku korrekt an, um die Motoren anzusteuern. |
Nützlicher Artikel: Navigation mit Differenzialantrieb |
Tipp 2 |
Abb. 2: CNTL/CNTR über der Zeit |
Für den Kurswinkel gilt: mit : Spurweite |
Aufgabe 5.5: 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
Demos
Literatur
- Uni Ulm: Differentialantrieb.pdf
- HU-Berlin Kognitive Robotik
- The Rossum Project: Differential Steering System
→ Termine 1 2 3 4 5
→ zurück zum Hauptartikel: Informatik Praktikum 2