Autonome Spurführung mit einem JetRacer ROS AI Robot
Autor: | Jonas Michael Beisler |
Modul: | Projektarbeit, MBP-B-2-6.05 |
Starttermin: | 19.02.2024 |
Abgabetermin: | TBD |
Prüfungsform: | Modulabschlussprüfung als Hausarbeit (Praxisbericht, Umfang 10-50 Seiten Textteil) |
Betreuer: | Prof. Dr.-Ing. Schneider, Tel. 806 |
Mitarbeiter: | Marc Ebmeyer, Tel. 847 |
Einführung
Der JetRacer ist ein Modellrennwagen im Maßstab 1:10. Hierbei handelt es sich um ein leistungsstarkes intelligentes KI-Modellfahrzeug, das speziell für Studierende entwickelt wurde, die den Umgang mit dem Robot Operation System (ROS) erlernen möchten. Das System besteht aus zwei Steuereinheiten. Den Host-Controller bildet das JETSON-NANO-DEV-KIT-A und als Sub-Controller wird ein Raspberry Pi RP2040-Mikrocontroller verwendet. Die Hauptplatine integriert die OLED, den Servomotor-Antriebsschaltkreis, den Batterieschutzschaltkreis, einen Audioausgangsschaltkreis usw., das lästige Löten des Schaltkreises erspart, das Entladen und Laden unterstützt und kein wiederholtes Entfernen des Akkus erfordert. Der verbauter IMU-Lagesensor und DC-Encodermotor regelt die Geschwindigkeit über einen PID-Regler und kann einen Radkilometerzähler ausgeben. Die Software ist mit dem Open-Source-Projektprogramm NVIDIA Jetbot kompatibel und unterstützt AI Deep Learning, SLAM-Mapping und -Navigation, visuelle OpenCV-Verarbeitung, intelligente Sprachinteraktion und andere Funktionen.
Aufgabenstellung
- Einarbeitung in den JetRacer
- Ansteuerung des Antriebs und der Lenkung
- Einlesen der Sensoren
- Fokus auf eines der Schwerpunktgebiete
- SLAM LiDAR Mapping
- Bahnplanung, Autonome Navigation, dynamische Hindernisbehandlung
- Systemtest
- Optimierung
- Dokumentation der Vorgehensweise im HSHL-Wiki
Durchführung
- Zeitplanung
- Ursprüngliche Planung
- Überarbeitete Planung
- Endziel festlegen
- Als Endziel wurde festgelegt das der Roboter die im Labor aufgemalte Strecke abfahren soll. Dies sollte anhand von automatisch gesetzten Navigationspunkten erfolgen. Als Automatisch wird in diesem Falle festgelegt das alle benötigten Punkte gesetzt werden sobald ein bestimmtes Skript im Jetracer ausgeführt wird.
- Raum Kartographieren
- Anhand des unter Punkt "LIDAR" beschriebenen Tutorials wurde eine Karte des Labors erstellt. Wichtig war dabei das der Mapping Algorithmus dort gestartet wurde, wo das Auto auch später für das Abfahren der Strecke starten wird. Dadurch wird die Karte mit dem korrektem Fokus angezeigt, und der Ursprung liegt gleichzeitig im Startpunkt.
- In der Karte sind in hellgrau die freien Flächen und in schwarz die Hindernisse dargestellt.
- Erstellen eigener Python Skripte
- Vorhandene Skripte verstehen
- Als Vorbild wurde das oben bereits erwähnte, Multipoint Navigation Skript, genutzt. In diesem war der Code, der für das markieren der Punkte in Rviz und das setzten der Zielpunkte für den Racer, vorhanden. Dieser Code wurde dann erstmal so abgeändert das einige Marker in Rviz nicht beim Mausklick, sondern direkt beim ausführen des Skriptes gesetzt wurden. Allerdings stellte sich das setzen der Zielpunkte als etwas schwierieger dar, da dieses ausführlicheren Publisher Code benötigte.
- ROS Publisher & Subscriber verstehen
- Die sogenannten Publisher und Subscriber sind eine der wichtigsten Funktionen die es in ROS gibt. Sie sind dafür zuständig Daten, wie zum Beispiel Informationen über Marker oder Befehle, zwischen den verschiedenen Nodes hin und her zu schicken. "ROS Tutorial Seite".
- Einbauen der gewollten Funktionen
- Automatische Marker und Target Points
- Anfahren der Target Points
- Orientierung an den Target Points
- Quaternions verstehen
- Austesten der Skripte
- Testen & Verbessern des Skriptes
- Die Skripte wurden bei den jeweiligen Problemen kontinuierlich getestet und verbessert. Dabei wurde Schritt für Schritt das jeweilige Problem bearbeitet und beseitigt, um einen möglichst reibungslosen Ablauf zu gewähren.
- Einige Problemfälle waren zum Beispiel:
- Die Marker wurden außerhalb des angezeigten Kartenraums gesetzt. Dies wurde durch kleinere Koordinatenräume behoben
- Der Roboter fuhr zu Beginn des Skriptes nicht los um den ersten Targetpoint zu ereichen. Dies wurde behoben durch einen kleinen Delay zwischen dem erstellen der Targetpoints. Wohlmöglich kam das Programm nicht mit dem gleichzeitigen Erstellen von mehreren Punkten klar.
- Der Roboter wollte an jedem Punkt die gleiche Orientierung wie am Startpunkt einnehmen. Auf der Geraden war das kein Problem, in Kurven führte dies jedoch zu einem unnatürlichem Fahrverhalten. Behoben wurde dieses Problem durch...
- Finale Vorführung des Ziels
- Video
Anforderungen
Das Projekt erfordert Vorwissen in den nachfolgenden Themengebieten. Sollten Sie die Anforderungen nicht erfüllen müssen Sie sich diese Kenntnisse anhand im Rahmen der Arbeit anhand von Literatur/Online-Kursen selbst aneignen.
- Umgang mit Linux
- Python-Programmierung
- Dokumentenversionierung mit SVN
- Optional:
- AI Deep Learning mit NVIDIA Jetson Nano
- OpenCV Vision Processing
- Simulation mit WeBots
- Umgang mit ROS2
- Partikel Filter SLAM
- Mensch-Roboter Sprachinteraktion
Anforderungen an die wissenschaftliche Arbeit
- Wissenschaftliche Vorgehensweise (Projektplan, etc.), nützlicher Artikel: Gantt Diagramm erstellen
- Wöchentlicher Fortschrittsberichte (informativ), aktualisieren Sie das Besprechungsprotokoll - Live Gespräch mit Prof. Schneider
- Projektvorstellung im Wiki
- Tägliche Sicherung der Arbeitsergebnisse in SVN
- Tägliche Dokumentation der geleisteten Arbeitsstunden
- Studentische Arbeiten bei Prof. Schneider
- Anforderungen an eine wissenschaftlich Arbeit
- Abgabe der Schriftlichen Ausarbeitung als Wiki-Artikel (ggf. Artikel als PDF drucken).
Repositorium
- SVN-Projektordner: https://svn.hshl.de/svn/HSHL_Projekte/trunk/JetRacer/
- Sciebo-Abgabeordner: \Jonas_Beisler\Projektarbeit\
Getting started
Lesen Sie zum Einstieg diese Artikel
- [[:Kategorie:JetRacer_ROS_AI_Roboter| Hauptartikel: JetRacer_ROS_AI_Roboter]
- Waveshare: JetRacer ROS AI Kit
- Gantt Diagramm erstellen
- Tipps zum Schreiben eines Wiki-Artikels
- PAP Designer Einstieg
- Einführung in SVN
- Einrichtung der ScienceBox (Sciebo)
LOP | Status | Bemerkung |
---|---|---|
Sicherheitseinweisung für die Labore von Marc Ebmeyer | ☑ | |
Schlüsselübergabe für die Labore von Marc Ebmeyer | ☑ | |
SVN-Zugang bereitstellen | ☑ | user: Jonas_Beisler
|
Vereinbarung wöchentlicher Meetings | ☑ | user: Jonas_Beisler
|
Wiki-Zugang bereitstellen | ☑ | user: Jonas_Beisler
|
Nützliche Artikel
→ zurück zum Hauptartikel: Studentische Arbeiten