Autonomes Fahren im Maßstab 1:10

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Christian Sievers
Betreuer: Prof. Schneider
Art: Projekt
Kurzbeschreibung: Der Artikel beschreibt den Zusammenbau und die Verwendung eines von der Firma Sunfounder hergestellten Bausatz für ein autonomes Fahrzeug auf der Basis des Raspberry Pi 3.

Quelle: TU-Braunschweig

Thema

Autonomes Fahren ist ein wichtiges Ziel auf der Agenda der Automotive OEMs für die kommenden Jahre. Für das Praktikum SDE ist ein Mikrocontroller-gesteuertes Fahrzeug im Maßstab 1:10 zu entwickeln.

Ziel

Entwickeln Sie autonomes Modellfahrzeug, welches in der Zukunft im Praktikum SDE im Studiengang Mechatronik eingesetzt werden kann.

Umfang

Die Praktika habe laut Modulhandbuch folgenden Umfang

  • Systementwurf Workload: 108h (45h Präsenz + 63h Selbststudium)
  • Systemintegration Workload: 150h (60h Präsenz + 90h Selbststudium)

Der Umfang entspricht 258h. Bei einer 40 Stunden Woche entspricht dies ca. 7 Wochen.

Aufgabenstellung

Systementwurf

  1. Projektplanung und Zeit-Management*
  2. Entwickeln Sie konsequent nach dem V-Modell.
  3. Aufstellung der Anforderungen (Lastenheft)*
    1. Raspberry Pi für die LiDAR und Videoverarbeitung
    2. Optional Berücksichtigung von 3D-ToF-Sensorik
    3. Arduino zur Auswertung einfacher Sensorik und Ansteuerung der Aktoren
    4. Längs- und Querregleregler
    5. WLAN Kommunikation mit einem Diagnose-PC
    6. Display ansteuern
  4. Umsetzung der Anforderungen in ein Pflichtenheft*
  5. Planung der Hardware*
  6. Konstruktion und 3D-Druck des mechanischen Aufbaus des Fahrzeugs*
  7. QV-Antrag und Beschaffung der Bauteile

Systemimplementierung

  1. Modellbasierte Programmierung mit Simulink aufbauend auf der bestehenden Online/Offline-Software*
  2. Inbetrieb des Systems*
  3. Test der Anforderungen entsprechend der Methoden der Vorlesung Reliability Engineering (statische und dynamische Code-Tests, Modul- und Systemtests)
  4. Testdokumentation*
  5. Dokumentation nach wissenschaftlichem Stand*
* Diese Meilensteine müssen mit Prof. Schneider in einem persönlichen Gespräch abgestimmt und dokumentiert werden.

Anforderung

  • Wissenschaftliche Vorgehensweise (Requirements, Projektplan, etc.)
  • Wöchentliche Fortschrittsberichte
  • Regelmeeting
  • Projektvorstellung im Wiki
  • ggf. Literaturrecherche mit Citavi
  • Softwareentwicklung nach HSHL Standard, tägliche Datensicherung in SVN

Getting Started

  • Nutzen Sie die Matlab Academy, um sich in Matlab Simulink einzuarbeiten.
  • Studieren Sie das Carolo Cup Regelwerk zur Erstellung der Anforderungen.
  • Erstellen Sie ein Lastenheft.
  • Für die Entwicklung steht ein Bausatz "SunFounder Raspberry Pi Smart Video Car Kit V2.0" zur Verfügung.
  • Lastenheft und Projektdaten der Vorgängen in SVN

Projektplanung und Zeit-Management

Meilensteine A-Muster

Projektplanung und Zeit-Management erstellt

Plandatum: 21.02.2019 Aktuelles Zieldatum: 21.02.2019 Meilenstein erreicht: 21.02.2019

Erstellung Lastenheft

Plandatum: 07.03.2019 Aktuelles Zieldatum: 07.03.2019 Meilenstein erreicht: 07.03.2019

Erstellung Pflichtenheft

Plandatum: 18.04.2019 Aktuelles Zieldatum: 03.05.2019 Meilenstein erreicht: 03.05.2019

Freigabe Lastenheft und Pflichtenheft

Plandatum: 31.05.2019 Aktuelles Zieldatum: 31.05.2019 Meilenstein erreicht: 28.05.2019

Erstellung Testplan

Plandatum: 18.04.2019 Aktuelles Zieldatum: 31.05.2019 Meilenstein erreicht: 16.06.2019

Konstruktion und mechanischer Aufbau

Plandatum: 02.05.2019 Aktuelles Zieldatum: 06.05.2019 Meilenstein erreicht: 06.05.2019

Software flashen

Plandatum: 16.05.2019 Aktuelles Zieldatum: 31.05.2019 Meilenstein erreicht: 28.05.2019

1. Fahrt

Plandatum: 21.05.2019 Aktuelles Zieldatum: 31.05.2019 Meilenstein erreicht: 28.05.2019

Testplan abgearbeitet

Plandatum: 04.06.2019 Aktuelles Zieldatum: 18.06.2019 Meilenstein erreicht: 18.06.2019

Präsentation

Plandatum: 11.06.2019 Aktuelles Zieldatum: 17.06.2019 Meilenstein erreicht: 17.06.2019

Dokumentation finalisiert

Plandatum: 19.07.2019 Meilenstein erreicht: -

Abschlussgespräch

Plandatum: 02.07.2019 Aktuelles Zieldatum: 02.07.2019 Meilenstein erreicht: 17.06.2019

Meilensteine B-Muster

Meilensteine C-Muster

Bausatz

Der Zusammenbau ist in der Dokumentation von Sunfounder sehr ausführlich beschrieben. Falls Fragen aufkommen kann auch das von mir erstellte Video verwendet werden:

Zusammenbauanleitung auf Youtube

Beschaffung

Zur Inbetriebnahme sind folgende Komponenten beschafft worden:

Bausatz Sunfounder Smart Video Car Kit V2.0

Der Bausatz wurde zu Beginn des Projekts bereits durch Prof. Schneider zur Verfügung gestellt.

Preis (08.06.2019) US$115.00

Link zum Onlineshop von Sunfounder

Batterien

Industriezelle, Li-Ion, 18650, 3,7 V, 3200 mAh, Button Top

Preis (08.06.2019) 15,59 €

Benötigt werden 2 Stück für das Fahrzeug. Beschafft wurden 4 Stück.

Link zum Shop von Reichelt

Batterie Ladegerät

XTAR D2 :: AC Ladegerät, 2 A, 2 slot

Das Ladegerät ist geeignet für diverse Modellbauakkus, unter anderem auch für die verwendeten 18650 LiPo.

Preis (08.06.2019) 14,20 €

Link zum Shop von Reichelt

Batterie Lagerbeutel

brandschutzbeutel-fuer-li-polymer-akkus-lipo-guard

Preis (08.06.2019) 8,24 €

Wichtig! Von LiPo Akkus geht bei Defekt immer eine Brand- und Explosionsgefahr aus!

Die Akkus immer bei Nichtverwendung im Lagerbeutel aufbewahren.

Akkus ohne Lagerbeutel nicht unbeaufsichtigt lassen, nicht Wärmequellen und mechanischer Belastung aussetzen.

Link zum Shop von Reichelt

Zusammenbau

Der Zusammenbau erfolgte mit Hilfe der dem Bausatz beigefügtem Bausatz. Der Bausatz ist gut bebildert und hilft, die einzelnen Schritte zu verstehen. Zusätzlich ist ein Video erstellt worden, in dem der gesamte Zusammenbau des Modells dokumentiert wurde. Hier kann sich jeder einzelne Schritt des mechanischen Zusammenbaus angeschaut werden, falls Fragen zum Aufbau aufkommen. Die Schritte des Aufbaus sind dabei identisch zur PDF vom Hersteller gewählt, damit man sich schnell orientieren und zum momentanen Schritt zu springen.


Das Video ist momentan im SVN vorhanden und wird, da Grafiken vom Hersteller Sunfounder vernwedet werden, erst online gestellt, wenn die Freigabe erfolgt ist. Dann wird es auf Youtube frei verfügbar sein.

Verkabelung der Platinen

Komponenten

Grundplatten

Die Grundplatten bestehen auf einem Plexiglas. Alle Teile sind bereits fertig zugeschnitten und müssen nicht mechanisch nachbearbeitet werden. Die Teile sind beidseitig mit einer Schutzfolie versehen, die vorab entfernt werden muss.

Servos

Kupplungsgetriebe-Digitalservo mit eingebautem Gleichstrommotor Nach einer bestimmten Belastung kuppelt und schützt das Lenkgetriebe das Produkt automatisch vor Beschädigung.

Elektrische Eigenschaften:

Motoren

Die Beigefügten Motoren sind Gleichstrommotoren mit drehzahlreduzierendem Getriebe.

Elektrische Eigenschaften:


Platinen

TB6612_Motor_driver

Das TB6612 Motortreibermodul ist geeignet für Motoren mit geringer Wärmeentwicklung und kleinem Motorgehäuse.

PCA9685_PWM_Driver.JPG

PCA9685 16-Kanal-12-Bit-I2C-Bus-PWM-Treiber. Es unterstützt eine unabhängige PWM-Ausgangsleistung und ist ein einfach zu verwendender 4-Draht-I2C-Port für den parallelen Anschluss von 3-Farben-Ports für die PWM-Ausgabe.

Robot_hats.JPG

Robot HATS ist ein speziell für einen 40-Pin-Raspberry-Pi entwickelter HAT (Hardware Attached on Top), der mit den Raspberry-Pi-Modellen B +, 2-Modell B und 3-Modell B kompatibel ist. Er versorgt den Raspberry-Pi über die GPIO-Ports mit Strom. Dank des Designs der idealen Diode nach den Regeln von HATS kann der Raspberry Pi sowohl über das USB-Kabel als auch über den Gleichstromanschluss mit Strom versorgt werden. Dadurch wird verhindert, dass die TF-Karte durch tiefenentladene Batterien beschädigt wird. Der PCF8591 wird als ADC-Chip mit I2C-Kommunikation und der Adresse 0x48 verwendet.


Räder

Die verwendeten Räder sind aus einem Kunststoff, der mit Gummiüberzug versehen ist. Die Räder für vorne und hinten sind unterschiedlich im Design, aber gleich im Durchmesser.

Kamera

Die beigefügte Kamera besitzt einen Weitwinkel von 120 °.

Fernsteuerung

Um das Fahrzeug im Handbetrieb einsetzen zu können, wird die Modellbaufernsteuerung Reflex Wheel ultimate touch 2.4g von Carson Modell Sport eingesetzt. Diese Basiert auf einer Handsteuerung mit Gashebel, Steuerrad und diversen Schaltern, sowie einer Signaleinheit die am Heck des Fahrzeugs befestigt wird. Diese besitzt eine Antenne, die am höchsten Punkt des Fahrzeugs befestigt ist, um das 2.4 Ghz Signal zu empfangen, sowie diverser Kanäle, die das Signal zum Raspberry Pi übertragen.


Jeder Kanal besitzt drei Anschlüsse: Power (3.3V), GND und Signal. Die Signale Gas/Bremse, Steuerung und Schalter sind über drei seperate I/O Ports des Raspberry Pi verbunden. Das Signal wird über PWM übertragen. Dabei wird das Signal nur digital von niedrig zu hoch und wieder zu niedrig geschaltet, wobei die Dauer des hoch Pegels gemessen werden muss. Das Verhältnis von hoch zu niedrig gibt dann den analogen Signalwert. Da das Signal zyklisch auf dem Raspberry Pi gegeben wird, ist auch eine zyklische Signalauswertung notwendig. Diese wird auf folgende Art realisiert:

In die Funktion in Simulink wird das Signal vom I/O Port geschickt, sowie die Systemzeit. Für den Raspberry Pi gibt es leider keinen Systemblock der die interne Prozessorzeit ausgibt, deswegen muss die Simulationszeit verwendet werden. In der Funktion werden steigende und fallende Flanken detektiert und die Zeit gemessen. Aus der Funktion kommt der Duty Cicle zwischen 0% und 100%. Um dies auch während der Simulation sichtbar zu machen, ist eine Anzeige hinzugefügt worden.

function [y,DutyCicle] = PWM_Analyse(u,time) persistent status persistent firstRun persistent Zeit persistent ZeitOutput persistent Duty persistent DutyCicleMom

if isempty(firstRun)

 status = 0;
 firstRun = 1;
 Zeit = 0;
 ZeitOutput = 0;
 Duty = 0;
 DutyCicleMom = 0;

end


if u > 1.5

   if status == 0
    Zeit = time
    status =1
    Duty = Duty +1;
    DutyCicleMom = time / Duty;
   end

end if u< 1.5

   if status == 1
       ZeitOutput = time - Zeit
       status = 0
   end

end y = ZeitOutput; DutyCicle = ZeitOutput/ DutyCicleMom;








Installation Software

Die Schritte die notwendig sind, um das Fahrzeug mit der von Sunfounder zur Verfügung gestellten Software zu flashen, sind alle sehr detailliert in der Beschreibung (PDF Sunfounder Pi Smart Video Car V2.0) beschrieben. Um einen Überblick zu gewinnen, sind die einzelnen Schritte hier kurz beschrieben.

A. Burn the Image

In diesem Schritt wird das Betriebssystem auf eine SD Karte geflasht. Benötigt wird Software, die ein Image verarbeiten kann, z.B. win32DiskImager (Siehe unten). Leider ist ein sehr gravierender Fehler in der Konfigurationsbeschreibung der Anleitung enthalten. Sunfounder ist bereits informiert und wird dies vermutlich im nächsten Update korrigieren. Die W-Lan Config startet nicht mit networ= sondern mit network=

Zur Netzwerkverbindung habe ich einen alten W-Lan Router verwendet, das Fahrzeug kann aber auf jeden beliebiges Netzwerk konfiguriert werden.

B. Car Power Supply

Es wird beschrieben, dass das Fahrzeug sowohl über USB, als auch über die Akkus während der gesamten Prozedur mit Strom versorgt werden muss.

C. Log into Raspberry Pi

Zum Einloggen auf den Raspberry Pi wird die IP Adresse benötigt. Diese kann z.B. über das Tool Advanced IP Scanner (siehe unten) ermittelt werden. Für Windows Nutzer wird zum einloggen PuTTY (siehe unten) empfohlen. Dort wird die IP Adresse eingetragen. Die Standard Login Daten beim Raspberry Pi sind User: pi Passwort: raspberry. Die Passwort Eingabe ist wird nicht dargestellt, erfolgt aber nach Betätigung von Enter.

D. Get Source Code

Dieser Schritt läd den Sourcecode aus dem Internet herunter. Der Router, der verwendet wird, muss zwingend Internetzugriff aufweisen.

E. Go to the code directory

Hier wird auf den richtigen Pfad für die Installation der Software gewechselt.

F. Install the Enviroment via the script

Dies startet die Installation aller notwendigen Pakete.

G. Configure the Servo to 90 degrees

Diese Software stellt die Servos einmalig auf ihre Nullstellung ein, bevor alle mechanisch verbunden werden. Wichtig! Wenn dieser Schritt nicht vorab durchgeführt wird, kann es zu defekten der Servos kommen!

Installing the client

Dies startet die Installation der Software vom Github Server.


Get on the Road

1. Run the Server - Den Server auf dem Fahrzeug starten

Notwendige Schritte:

1) Vollgeladene Batterien in das Fahrzeug stecken.

2) Fahrzeug über den Schalter an der Platine einschalten.

3) Auf das Fahrzeug schalten mit Logindaten: pi und raspberry

4)Befehl ausführen: cd ~/SunFounder_PiCar-V/remote_control

5) Befehl ausführen: sudo ./start

2. Run the Client - Den PC mit dem Fahrzeug verbinden

Notwendige Schritte: 6) Einloggen mit Browser (Siehe unten) auf Adresse: http://<IP adress>:8000/ dort die IP Adresse vom Raspberry Pi einsetzen, z.B. http://192.168.0.25:8000/

7) Schalter LETS ROCK im Browser betätigen.

8) Oben links auf die Einstellungen gehen.

9) Dort die Servos falls nötig auf die Nullstellung stellen und überprüfen, ob die hinteren Antriebe richtig herum drehen. Falls nicht können diese in der Software oder am Fahrzeug invertiert werden.

10) Einstellung speichern.

11) Mit dem Fahrzeug Spaß haben! Gesteuert wird über die Pfeiltasten (Kamera) und über WASD (Fahrzeug). Mit den Zahlen 1-5 kann die Geschwindigkeit angepasst werden.

Software Tools

Win32DiscImager

Mit diesem Tool kann das Image für das Raspberry Pi Betriebssystem auf die SD Karte geflasht werden. Es werden zwei Partitionen erstellt, eins für das Betriebssystem und eins für die Datenverwaltung (Software, Medien, etc).

Link zum Download bei www.heise.de

Advanced IP Scanner

Der Advanced IP Scanner kann genutzt werden um die dynamische IP vom Raspberry Pi herauszufinden. Die IP wird benötigt, um sich auf den Raspberry Pi per Netzwerk zu verbinden und Änderungen vorzunehmen, sowie um den Browser Client zu verbinden.

Link zum Download bei www.advanced-ip-scanner.com

PuTTY

Das Tool PuTTy ist notwendig, um per Netzwerk Fernzugriff auf den Raspberry Pi zuzugreifen. Dabei ist die IP Adresse vom Raspberry Pi notwendig. Das Tool ist ähnlich der Eingabeaufforderung unter Windows und die erforderlichen Befehle sind alle in der Sunfounder Doku zu finden.

Link zum Download bei www.heise.de

Browser: Internet Explorer/Google Chrome/FIrefox

Um das Fahrzeug fernsteuern zu können, wird ein Standard Browser benötigt. Dabei wird das Fahrzeug über die dynamische IP Adresse mit dem Zusatz :8000 verbunden. Die Tests wurden mit dem Internet Explorer 7 vorgenommen. Da eigentlich jeder PC einen Browser vorinstalliert hat, sollte der vorhandene getestet werden, bevor ein anderer installiert wird.

Mechanischer Aufbau

Koordinatensysteme im Fahrzeug

Schwerpunkt des Fahrzeugs

Der Schwerpunkt des Fahrzeugs wurde über Aufhängung und Kippversuche ermittelt (Siehe Testplan).

Referenzpunkte für Software

Die Software benötigt für die korrekte Interpretation der Messdaten die Referenzpositionen der Kamera. Für die Erstellung des Einspurmodells, um die Fahreigenschaften abzubilden, werden Achsabstände, Spurbreite, Lenkwinkel etc. verwendet. Dies sind die relevanten Referenzpunkte am Fahrzeug:

Achsensystem 1:

Referenz Vorderachsmittelpunkt

Koordinaten: [0;0;0]


Achssysteme 2-5:

Vorderachse links [0;19;0]

Vorderachse rechts [0;-19;0]

Hinterachse links [-138;19;0]

Hinterachse rechts [-138;-19;0]


Achssysteme 5,6:

Kameradrehpunk 5: [36;0;21]

Kameradrehpunkt 6: [91;0;39]


Grundfläche Fahrbahn:

[x;y;-34]

Testing

Für das abtesten der A-Muster Anforderungen in Lastenheft und Pflichtenheft, wurde ein Testplan erstellt der systematisch abgearbeitet wurde. Der Testplan ist unter folgendem Pfad im SVN zu finden:

D:\SVN\Autonomes_fahren\20_System\Testreport_A-sample.docx

Der Testablauf sah folgendermaßen aus:

Die ausführlichen Ergebnisse sind im Dokument dokumentiert. Die Tests haben folgende Ergebnisse hervorgebracht:

Geschwindigkeit: Das Fahrzeug kann in 5 Stufen gefahren werden. Die Geschwindigkeit variiert zwischen 250 und 829 cm/s.

Lenkwinkel: Es ergibt sich ein Lenkwinkel von 37° und einen Kreisumfang von 57cm.

Balltracking: Dieser Test ist nach Absprache mit Prof. Schneider entfernt worden, da er für die weiteren Projektabschnitte nicht erforderlich ist.

Geometrische Tests:

Fahrzeugabmessungen : BxLxH: 13,2cmx28,5cmx10,8cm (Zusätzlich maximal 4,1cm in der Höhe durch die Position der Kamera)

Radstand: 14,5cm

Spurweite: Messen mit Zentimetermaß oder Zollstock, anschließende Dokumentation 11cm

Höhe: Messen mit Zentimetermaß oder Zollstock, anschließende Dokumentation 10,8cm bei Kamera horizontal ausgerichtet, 14,9cm bei Kamera vertikal ausgerichtet

Kurzzusammenfassung und Ausblick

1. Semester

Der Aufbau des Bausatzes war eine Große Herausforderung für mich. Im Laufe des Projekts tauchten einige Fehler auf, die auf die mangelhafte Dokumentation und Software von Sunfounder zurückzuführen sind. Die Fehlersuche war sehr zeitintensiv, hat aber auch ein deutlich tieferes Verständnis der Software zur Folge gehabt. Dies zeigt, dass auch große Firmen nicht fehlerfrei arbeiten. Der Fehler ist Sunfounder bereits mitgeteilt worden und wird hoffentlich im nächsten Release behoben. Der mechanische Aufbau war sehr gut beschrieben und macht einen sehr guten Eindruck. Einige weiteren Anpassungen bzgl. Kameraposition wird es im nächsten Semester geben.

Alles in allem habe ich einen guten Stand, um das Projekt im nächsten Semester mit Matlab Simulink zu verbinden und steuern zu können. Eine Große Herausforderung wird es sein zu erkennen, wie Sunfounder die einzelnen Motoren antreibt, da die Steuerplatine, die auf dem Raspberry Pi sitzt, nicht mit Schaltplänen etc. dokumentiert ist. Hier wird man wahrscheinlich eher durch ausprobieren an die richtigen Steuerbefehle kommen. Parallel sind diese Unterlagen bereits bei Sunfounder angefragt.

Weblinks


Siehe auch

  1. Studentische Arbeiten bei Prof. Schneider
  2. Anforderungen an eine wissenschaftlich Arbeit
  3. Programmierrichtlinien für Matlab
  4. SVN Repositorium

→ zurück zum Hauptartikel: Studentische Arbeiten