HaBuRo1 HaBuRo1

Roboter HaBuRo1

Ein Auto-Roboter mit Webkamera für autonomes Fahren

Bastelprojekt

Zurück Schaltplan Video Streaming Audio Das Pythonprogramm Main Kompass


Roboter HaBuRo1 HaBuRo1 Aggregate


HaBuRo ist ein Auto-Roboter mit Webkamera für autonomes Fahren. Ein Raspberry Pi, Modell 2, steuert den HaBuRo. Fahrbefehle und weitere Kommandos erhält der HaBuRo vom TrekStor-SurfTab-Windows10. Die Raspberry Pi Applikation wurde mit Python erstellt, auf dem SurfTab läuft eine, vom Touchscreen gesteuerte, Qt-C++-Applikation.

Zwei XBee-Funkmodule übertragen die Steuerbefehle. Für die Webkamera ist eine WLAN-Verbindung erforderlich. Sechs Gleichstrommotoren sorgen für den Antrieb, diese werden von vier Entfernungsmesser beeinflusst.

Für die Kurvensteuerung sorgt ein Kompass-Modul. Kurven werden gefahren, indem eine Antriebsseite vorwärts- und die gegenüberliegende Seite rückwärts dreht. Die Motoren werden über eine H-Bridge L298N gesteuert. Dieser erlaubt auch eine Pulsweitenmodulation-Ansteuerung.

Parallel zum autonomen Fahren können alle Fahrtrichtungen über Touch-Befehle zusätzlich beeinflusst werden. Zwei Stoßstangen mit Grenztastern sorgen für den Not-Halt. Eines der sechs Laufräder verfügt über eine Umdrehungsblende aus Sperrholz. Diese Blende signalisiert der Gabellichtschranke die Umdrehungen des HaBuRo.

Informationen und Fehlermeldungen sendet der HaBuRo per Audio über einen Lautsprecher. Mal sehen ob da irgendetwas mit Sprachsteuerung geht! Momentan plappert er seine Meldungen so vor sich hin. Eine Servo-Dreh-Kippmechanik inklusiv Schwenkarm sorgt für Videoaufnahmen im 360°-Bereich.

Der HaBuRo ist 620 Millimeter lang und 380 Millimeter breit. Er wiegt 1,2 Kilogramm. Ein 12Volt, 4300mA Akku sorgt für die Antriebsenergie. Der Raspberry Pi und alle Sensoren werden vom 7,2 Volt, 4300mA Akku mit Energie versorgt. Ein "Step-Down-Converter" sorgt für die genaue 5 Volt Versorgung. Zielsetzung war hier eine geringe Wärmeentwicklung verbunden mit einem hohen Wirkungsgrad. Ein Schaltregler des Typs 7805 leistet das nicht.

Die Akkuspannungen werden auf Entladeschlussspannung überwacht. Es gibt beim HaBuRo Busmodule für 3,3 Volt und 5 Volt. Damit ist der Raspberry Pi überfordert. Ein Bus-Level-Shifter sorgt für Abhilfe. Zwei von insgesamt vier Ultraschall-Entfernungsmesser werden von einem Mikrokontroller PIC16F872 verwaltet. Die Begründung liegt in der Ressourcen-Optimierung im Bereich der vielen Verzögerungszeiten für Rückmeldungen der Sensoren. Jedoch ist auf der Programmiereben Python eine Parallelprogrammierung (Thread) unumgänglich. Der HaBuRo besitzt sechs parallele Programme. Keine Angst! Das ist bei der Programmiersprache Python kein großes Problem.

Nachtfahrten kann der HaBuRo auch. Vier superhelle Leuchtdioden sorgen für Beleuchtung, diese werden per Relaiskarte angesteuert.

Parallel zu den Versuchsaufbauten wurde diese Dokumentation erstellt. Dieses geschah durch Erstellung von Arbeitsblätter und Notizen. Sie sind leider manchmal mit unterschiedlichen Schriftgrößen erstellt worden. Ich habe jetzt keine Lust mehr das zu korrigieren. Weiterhin liegt mir die Schreiberei nicht so, deshalb überwiegen Bilder in dieser Dokumentation. Die größten Schwierigkeiten waren: Den Kompass aus dem magnetische Störfeld zu bringen, Kurvenoptimierung, speicherschonendes Video-Streaming, Motorbefestigung, und Zeitverhalten Ultraschall. Während der Bauzeit habe ich ungefähr 15 Stunden im Internet gesurft. Na Ja! Da kann ich dann berichten, dass es nur eine Webseite gibt, die in Sachen Programmierung und Elektronik zielführend ist: stackoverflow.com! Einige Deutsche Foren sind ein Graus. Die kennen nur eine Umgangsform: Beleidigung.



Wie kriegt der HaBuRo1 die Kurve? Eine kleine Funktionsbeschreibung!

Nach dem Einschalten bootet der Raspberry Pi und startet das HaBuRo1-Python-Programm automatisch. Zuerst werden alle Module geprüft. Alle Ergebnisse werden akustisch gemeldet. Am TrekStor-SurfTab-Windows10 muss eine Laufzeit eingegeben werden. Der HaBuRo fährt los. Sobald der vordere Entfernungsmesser ein Hindernis erkennt (Distanz kleiner 40 cm) werden die Entfernungsmesser rechts / links abgefragt. Melden beide ein Hindernis, erfolgt eine Rückwärtsfahrt. Wenn keiner der Rechts- Linkssensoren eine ausreichende Kurvendistanz melden, dann fährt der HaBuRo so lange Vor und Zurück bis die Laufzeit beendet ist. Meldet einer der Rechts- Linkssensoren eine ausreichende Wendedistanz, dann wird eine Kurve in Wendedistanz-Richtung eingeleitet. In Abhängigkeit eines Zufallsgenerators wird der Kompass aufgefordert, einen Winkel von größer 90° und kleiner 270° zu liefern. Der Roboter dreht nun mit reduzierter Geschwindigkeit. Parallel dazu verändert der Kompass seinen Istwinkel. Ist der Sollwinkel größer als der Istwinkel, dann ist die Kurve beendet und der Roboter fährt vorwärts. Versagen die Sensoren und der Roboter knallt gegen ein Hindernis, dann sorgen die Stoßstanken für eine sofortige Abschaltung und der Spaß hat ein Ende. Jedoch kann der Anwender einen neuen Fahrbefehl auslösen. Dafür gibt es einen Taster auf der Geschwindigkeitsmesser-Platine. Zentrale Figur für die Kurvensteuerung ist ein Schrittwerk! Schaue bitte im Python-Hauptprogramm ab Zeile 155.

Fahrwerk

HaBuRo1 Antrieb Quelle:Pollin, Pololu.
HaBuRo1 Antrieb H-Bridge, Kaufteil:Amazone, eigenes Foto
HaBuRo1 Fahrwerk Eigenes Foto. Mach vorher einen Versuchsaufbau!
HaBuRo1 H-Bridge Eigenes Foto. Quelle Amazone

Python Programm Fahrwerk

Roboter HaBuRo1 Antrieb

Roboter HaBuRo1 Geschwindigkeitsmessung

Python Software Umdrehungsmessung und digitale Eingänge

Roboter HaBuRo1 Geschwindigkeitsmessung Roboter HaBuRo1 Geschwindigkeitsmessung
Roboter HaBuRo1 Spannung und Strom Roboter HaBuRo1 Spannung und Strom Roboter HaBuRo1 Spannung und Strom Roboter HaBuRo1 GPIO Raspberry Pi


Roboter HaBuRo1 LED Roboter HaBuRo1 LED Roboter HaBuRo1 Roboter HaBuRo1

5 Volt Spannungsversorgung Raspberry Pi, Mikro-USB!

Roboter HaBuRo1 Roboter HaBuRo1 Roboter HaBuRo1


Roboter HaBuRo1 NOT HALT Roboter HaBuRo1 NOT HALT Roboter HaBuRo1 NOT HALT Roboter HaBuRo1 NOT HALT Roboter HaBuRo1 Kamera


Der Kamera-Arm ist mit drei Servos ausgerüstet. Diese Servos werden per Pulslängenmodulation angesteuert. Weil der Raspberry Pi nur eine begrenzte Anzahl von GPIO-Digitalausgänge besitzt, und die Ansteuerung per I²C-Bus sehr bequem ist, und weiterhin die Verdrahtung reduziert habe ich ein Servomodul der Firma Adafruit eingesetzt. Dieses Modul wird vom Raspberry Pi mittels I²C-Bus angesteuert. Adafruit liefert auch eine Python-Bibliothek für die Software und ich empfehle dir diese Library zu verwenden. Auf der Webseite des Anbieters wird das Servomodul sehr gut erklärt.


Roboter HaBuRo1 Kamera Roboter HaBuRo1 UART Xbee Roboter HaBuRo1 UART Xbee Roboter HaBuRo1 UART Xbee


HaBuRo Kompass Grafik Das Kompassmodul steuert diese Grafik auf dem PC-Bildschirm.
HaBuRo Qt-App Die Steuerzentrale. PC-Qt-Applikation.

Zurück Schaltplan Video Streaming Audio Das Pythonprogramm Main Kompass