Mit dem Raspberry Pi können fast alle denkbaren Projekte realisiert werden. Ein sehr beliebtes Thema, worauf ich des öfteren angesprochen wurde, ist wie man einen eigenen Roboter baut. Dazu gibt es viele verschiedene Bausätze und Möglichkeiten, wie man einen Raspberry Pi Roboter baut. Mein Roboter kann so z.B. Linien folgen, Hindernissen ausweichen, einer Stimme folgen, lässt sich fernsteuern uvm.
In dieser Übersicht möchte ich auf die einzelnen Themen eines Raspberry Pi Robots eingehen und hilfreiche Tipps zum Selbstbau geben. Durch Nachbauen dieses Tutorials kann ein voll funktionstüchtiger Roboter mit einer Menge Features erstellt werden, aber auch eigene Modifikationen können eingebracht werden.
Raspberry Pi Roboter Komponenten
Zu Beginn liste ich alle verwendeten Bauteile auf, die ich für den Zusammenbau meines Roboters benutzt habe. Falls du ihn 1:1 nachbauen möchtest, benötigst du die folgenden Komponenten. Natürlich kannst du auch eigene Erweiterungen anbringen, aber musst diese dann ggf. anpassen.
- Raspberry Pi
- 10.000mAh Powerbank
- Roboter Bausatz mit 2 Rädern
- L293D IC
- 4-6 AA Batterien (1.5V)
- 2-3x Line Follower Module
- Infrarot Fernbedienung Set
- Servo Motor (z.B. der SG90)
- Ultraschallsensor
- 3x Sound Sensoren (für Vorne, Rechts und Links)
- MCP3008 ADC
- Xbox 360 Wireless Controller
- Xbox 360 USB Receiver
- Widerstände
- Mini Breadboard
- Jumper Kabel
- Lötutensilien (Lötkolben, Lötzinn, Unterlage, etc.)
- Heißkleber
Der komplette Code unseres Roboters wird in Python geschrieben. Falls du diese Programmiersprache noch nicht beherrschst, kannst du entweder die Einführung auf dieser Seite folgen, oder z.B. einen Onlinekurs belegen.
Raspberry Pi Roboter Karosserie
Das Fahrgestell unseres ist der wichtigste Aspekt unseres gesamten Projekts. Hierbei gibt es verschiedene Modelle, welche überwiegend entweder zwei (2WD) oder vier (4WD) Motoren haben, welche separat angesteuert werden können. Der Vorteil von vier Motoren ist neben einer besseren Standfähigkeit auch ein präziseres Rotieren. Jene Roboter Fahrgestelle, welche zwei Motoren haben, kommen mit mindestens einem schwenkbaren Stützrad, was das präzise Navigieren u.U. ein wenig schwieriger macht.
Da mein Roboter aber lediglich in der Wohnung herumfahren soll, habe ich einen solchen zweirädrigen Bausatz als Basis genommen. Dabei ist auch ein Batteriehalter gewesen, welcher als zusätzliche Energiezufuhr für die Motoren dienen soll. Eine genaue Anleitung zum Zusammenbau und Erstellung des ersten Raspberry Pi Roboter Codes findest du hier:
Raspberry Pi Robot Bausatz – Zusammenbau (Teil 1)
Möchtest du ein anderes Fahrgestell nehmen, sind hier ein paar Ideen:
Roboter folgt Linien
Nach dem Zusammenbau des Karosserie Bausatzes kann unser Roboter leider noch recht wenig – bis auf das Fahren. Daher lassen wir ihn nun Linien folgen. Dies funktioniert mit Hilfe von Infrarot Modulen, welche an der Unterseite des Fahrgestellt angebracht werden. Indem wir eine Linie mit dunklem (Licht-absorbierendem) Klebeband legen, können diese Sensoren erkennen, ob sie sich auf der Linie befinden und die Motoren entsprechend steuern.
Raspberry Pi Robot programmieren: Linien folgen lassen (Teil 2)
Wie das in Aktion aussieht, kannst du im nachfolgenden Video sehen. Sobald der Roboter die Linie verliert, schwenkt er in einem festgelegten Winkel nach rechts und links, um die Linie zu finden. Wird sie gefunden, so folgt er einfach weiter. Falls nichts in diesem Bereich gefunden wurde, so wird der Modus beendet und der Roboter stoppt.
Raspberry Pi Roboter Fernsteuerung – per Infrarot Fernbedienung
Damit wir den Roboter auch eigenhändig funklos steuern können, haben wir einige Möglichkeiten. Die einfachste ist eine Steuerung per Infrarot Fernbedienung. Dazu können wir das Programm Lirc nutzen, womit der Anschluss eines IR Empfängers sehr einfach realisierbar ist. Wie die Einrichtung genau funktioniert und was beachtet werden muss, findest du in diesem Tutorial:
Raspberry Pi: Per IR Remote Befehle ausführen
Sobald alles fertig ist, kann der Raspberry Pi per IR Fernbedienung gesteuert werden, wie im Video zu sehen
Davor muss aber noch der Code erweitert werden. Den gespeicherten Tasten der Fernbedienung können wir Befehle zuweisen. In meinem Fall sind die Tasten zum Steuern in die verschiedenen Richtungen gedacht sowie zum Wechseln der Modi. Die komplette Anleitung zum Anlegen der Befehle und Erweitern des Python Codes gibt es hier:
Raspberry Pi Robot per Infrarot Fernbedienung steuern (Teil 3)
Hindernissen ausweichen per Ultraschall
Als weiteres Feauture habe ich mir einen Autopiloten Modus für meinen Raspberry Pi Roboter überlegt. Er soll im Raum umherfahren können, ohne dass er mit Gegenständen kollidiert. Um dieses Vorhaben zu realisieren entschied ich mich für ein Ultraschallmodul. Der Vorteil liegt darin, dass es sehr schnell misst und die Messung auch nicht all zu ungenau ist. Es stellt sich die Frage, ob man lieber mehrere Module an mehreren Stellen anbringen möchte oder – wie ich es getan habe – einen einzigen Ultraschallsensor nutzt.
Damit nicht nur die Entfernung zu einem Punkt gemessen wird und mein Roboter auch variabel ist, habe ich das HC-SR04 Modul auf einem Servo Motor angebracht. Der große Vorteil besteht darin, dass mein Sensor dadurch rotiert und automatisch die bestmögliche Richtung erkannt wird – nämlich die Richtung, in der am meisten Platz ist. Wie genau die Implementation des ganzen aussieht kannst du im vierten Teil des Raspberry Pi Roboter Tutorials durchlesen:
Raspberry Pi Robot: Automatisch Hindernissen ausweichen (Teil 4)
Raspberry Pi Roboter per Stimme lotsen
Im nächsten Teil haben wir den Roboter auf Stimmen reagieren lassen. Hierbei wird kein Mikrophon, sondern mehrere Stimm-Detektoren verwendet und an der Karosserie angebracht. Diese Sensoren ignorieren überwiegend die Umgebungsgeräusche und messen die Lautstärke einer Stimme. Da mehrere rund um die Karosserie angebracht sind, können wir ungefähr feststellen, woher die Stimme kam, da sie vom nähesten Sensor am lautesten wahrgenommen wird.
Diese Module arbeiten analog und liefern einen entsprechenden Wert. Damit wir sie auslesen können, benötigen wir einen Analog-Digital Wandler. Um so mehr Detektoren wir an unserem Raspberry Pi Roboter angebracht haben, umso genauer können wir den Ursprung der Stimme lokalisieren und dementsprechend dorthin fahren.
Die Verkabelung ist entsprechend einfach, da lediglich der MCP3008 ADC angeschlossen werden muss und an diesen die 3 (oder mehr) Sound-Detektoren kommen. Die restliche Navigation findet rein per Software statt. Beides kann im fünften Teil der Reihe nachgelesen werden:
Raspberry Pi Robot der eigenen Stimme folgen lassen (Teil 5)
Per Xbox 360 Controller den Raspberry Pi Roboter steuern
Im sechsten Teil der Reihe habe ich entschlossen eine „erweiterte“ Steuerung zu bauen. Dafür nutze ich einen Xbox 360 Controller, welcher mittels eines Funkadapters per USB mit dem Raspberry Pi vebrunden wird. Danach ist es uns möglich alle Eingaben des Controllers auszulesen und entsprechend zu reagieren. So habe ich den linken Joystick als Steuerelement zum Lenken der Karosserie genutzt. Zusätzlich ist es möglich alle anderen Tasten zu belegen – z.B. indem man andere Modi, wie das automatische Ausweichen von Hindernissen, starten lässt. Was dafür genau zu tun ist, erfährst du hier:
Mit Xbox 360 Controller Raspberry Pi Robot fernsteuern (Teil 6)
Wie du im Video sehen kannst, sind die Motoren recht schnell und man muss dementsprechend schnell reagieren. Daher habe ich den A-Knopf als Bremse definiert – solange dieser gedrückt ist, bewegt sich der Robot nicht.
Weitere denkbare Roboter Feautures
Wie anfangs erwähnt ist das natürlich noch längst nicht alles, was man an einem selbstgebauten Roboter anbringen kann. Vielleicht werde ich den Roboter in der Zukunft noch erweitern – wenn es hierzu Vorschläge gibt, immer her damit 🙂
Folgende Einfälle hatte ich noch, bin aber (bisher) nicht dazu gekommen, diese umzusetzen:
- GPS Navigation: Wer mit dem kleinen auch draußen unterwegs sein will oder zuhause guten GPS Empfang hat, könnte sich eine Steuerung per Satelliten Daten überlegen. In Gebäuden wird die Genauigkeit zum exakten navigieren wohl nicht ausreichen, allerdings könnte im Freien eine GPS Koordinate übermittelt werden, an die dann gefahren wird (in Kombination mit unserem Hindernis-Ausweich Mechanismus). Ein Tutorial zur Einrichtung eines GPS Empgängers findest du übrigens hier.
- Sprachsteuerung: Amazon Echo, Siri, S-Voice, u.a. machen es vor: Die Sprachsteuerung gehört längst nicht mehr der Vergangenheit an. Dass es auch mit einem Raspberry Pi möglich ist auf Sprachbefehle zu reagieren, haben wir bereits gesehen. Auch ein Raspberry Pi Roboter sollte mit einem Mikrofon einfach per Sprache steuerbar sein.
- schwenkbarer Livestream: Nachdem wir mit dem linken Joystick unseres Xbox 360 Controllers die Richtung, in die der Roboter lenken soll, vorgeben, ist der rechte Joystick noch nicht belegt. Wie eine einfache Steuerung eines Servo Motors mit dem Xbox 360 Controller aussieht, ist hier erklärt. Darüber hinaus haben wir in der Vergangenheit auch bereits einen Livestream der Raspberry Pi Kamera auf dem Smartphone mit Hilfe von VNC realisiert. Diese beiden Komponenten zu verbinden ist nicht all zu schwer: Einfach die Kamera auf einem Servo platzieren und diesen per rechten Joystick hin und her bewegen. Der Stream kann dann auf dem Handy angesehen werden.
- Gesichtserkennung: Sofern wir eine Kamera platziert haben, können wir mit Hilfe von OpenCV auch Gesichter und andere Objekte erkennen. Dadurch können wir den Raspberry Pi Roboter automatisch in jene Richtung steuern lassen, in der ein Gesicht oder ein Mensch erkannt wurde. Das Prinzip würde dabei dem der automatischen Hinderniserkennung gleichen – ein Servo mit Kamera rotiert im Halbkreis und bspw. alle 20° wird geschaut, ob etwas erkannt wurde. Falls ja, wird in diese Richtung gefahren, falls nicht wird weiter gesucht.
Weitere Ideen nehme ich natürlich gerne auf – falls du eine Idee hast, hinterlasse doch einen kurzen Kommenar.
Raspberry Pi Roboter Code
Falls du den gesamten Code herunterladen möchtest, kannst du dies auch. Dazu habe ich ein GitHub Repository erstellt, worin die Dateien enthalten sind. Auf deinen Pi kannst du den Code für unseren Roboter ganz einfach laden:
git clone https://github.com/tutRPi/RaspberryPi-Robot cd RaspberryPi-Robot
Darin sind alle Skripte und die komplette Roboter-Klasse enthalten, die wir mit jedem Tutorial Schritt für Schritt erweitert haben.
Wer möchte kann Bilder seines Roboters hochladen und hier verlinken – mich würde interessieren was ihr so gebaut habt.
22 Kommentare
Ich finde diesen Artikel super!!! Das wäre ein tolles Technik Projekt für eine Schulklasse um darzustellen, wie umfangreich „Technik“ sein kann, von allem ist etwas dabei:) Danke für diesen Artikel.
Good article
Auch ich finde den Artikel super und freue mich darauf in eines der Projekte einzusteigen.
Zum Thema weitere Idee:
Ich würde gerne einen Roboter bauen der auf meinem Rasen nach Unkraut sucht (mittels Gesichtserkennung 🙂 und das Kraut dann gezielt mit einem Mittel besprüht :-)))
Gesichtserkennung wird schwer – außer du klebst Pappgesichter aufs Unkraut 😉
Ansich ist der Ansatz aber mittels Image Vision und Machine Learning möglich – wenn auch alles andere als einfach 😛
Hi Felix,
ein Hinweis zu der Liste der Komponenten: („Raspberry Pi Roboter Komponenten“)
Der Link „2-3x Line Follower Module“ enthält einen „Buchstabendreher“ im Suchparameter.
Es müsste heißen „field-keywords=TCRT5000“ statt „field-keywords=TRCT5000“.
So wird leider kein Sensor gefunden.
Im Unterprojekt „Raspberry Pi Robot programmieren: Linien folgen lassen (Teil 2)“ wird zwar auch noch mal auf die line-follower-Sensoren verlinkt, dort ist allerdings direkt „field-keywords=line follower“ angegeben, wodurch die TRCT5000-Sensoren gefunden werden.
Super cooles Projekt, werde es demnächst auch angehen 🙂
Danke für den Hinweis, ich habe es verbessert 🙂
Hallo,
ich hätte eine Frage und zwar wenn ich eine Powerbank anschliese, muss ich diese dann über den Spannungsregler an das BreadBoard anschliesen oder direkt mit micro-USB kabel an die Stromversorgung des Rasberrys.
Die Powerbank sollte nur für den Raspberry Pi dienen. Du könntest zwar auch Strom abzwacken und für die Motoren nutzen, aber das ist ein wenig komplizierter. Dazu müsstest du z.B. ein USB Kabel aufschneiden…
Super Tutorial! Toll beschrieben und ausführlich bebildert! Ich habe als absoluter Raspi Newbie und Python Würstchen einen kleinen Panzer gebaut mit dem XBoxController – und dem Ultraschall Part als Steuerungsoptionen.
Panzerchassis : https://www.amazon.de/gp/product/B077JZ8DFH/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1
Ein i2C Oled Display hat er auch noch spendiert bekommen, da zeigt er den mom. Steuerungsmodus. Ein Bild:
http://www.directupload.net/file/d/5081/6h2sn7lv_jpg.htm
Momentan bau ich einen 2 Achsen Servokameraturm drauf der dann auch mit dem xBox Controller gesteuert werden kann. Dann ist mein Hedgehog Observation Vehicle fertig 🙂
to be continued 🙂
Links auf USB-Kabel mit offenen Enden:
https://smile.amazon.de/DELOCK-Stecker-offene-Kabelenden-Raspberry/dp/B071FPQ5N4/ref=sr_1_1?ie=UTF8&qid=1526118159&sr=8-1&keywords=usb+Kabel+offen
https://smile.amazon.de/Delock-82697-Stecker-Kabelenden-schwarz/dp/B01A9GLG6Q/ref=sr_1_2?ie=UTF8&qid=1526118159&sr=8-2&keywords=usb+Kabel+offen
Bequemer als mit anderen Methoden
Hallo,
wie machst du das mit dem „nur gerade aus fahren“? , meine Motoren drehen etwas unterschiedlich, ich spiele darum viel mit dem PWM rum, könnte mir aber denken, dass ein Drehzahlmesser auch helfen könnte.
hast du damit Erfahrung?
z.B. mit dem Modul https://www.marotronics.de/Dual-Drehzahlsensor-Counting-Modul-fuer-Odometrie-Drehzahlmessung-Arduino-Raspberry-PI
Gruß
Ralf
hallo!
Ganz nette Pojekte, aber – äußerst bedauerlicherweise – nur in Python, soweit ich sehen kann. Äußerst erfreulich wären dagegen auch Projekte in C/C++, schießlich wird bei Raspbian ja auch immer gcc/gpp mitsamt der Geany IDE und wiringPi sowie pigpio mitgliefert !
(Und C ist ja schließlich auch historisch die originale Programmiersprache für UNIX/Linux-OS!)
Das ist vermutlich auch mit einem Raspberry Pi der 1. Generation möglich oder? Habe nämlich noch einen rumliegen
Hilfe, hilfe! We need Help for präsentation. Brauchen eine Zusammenfassung des Projektes in Form einer Präsentation und einer Hausarbeit.
PLEASE HELP AND SUPPORT US. We are just two idiots who dont want to work man 😀
PS: Mei inglisch is not sou gud :/
Your english isn’t that bad actually…
Kann man auch Widerstände (1m) benutzen?
Hallo, top Anleitung, kann ich statt den Raspi 3 auch nen Raspi Zero nehmen oder ändert sich dann was an der Anleitung?
Kannst du verwenden, ist alles kompatibel.
Mein Roboter sollte nach Möglichkeit auch Gegenstände greifen können.
Hi Felix,
super interesantes Projekt!
Habe mir alle Utensilien aus der „Einkaufsliste“ zu Weihnachten schenken lassen un bin nun parallel zu allgemeinen Python-Übungen bei der Umsetzung.
Ich habe allerdings eine Frage an Dich:
Ich habe statt des 2WD-Fahrgestells, die von Dir gezeigte 4WD-Kunstoff-Variante. Würdest Du jeweils die beiden linken und rechten Räder gemeinsam ansteuern? Das würde ja mit einem einzigen L293D IC funktionieren… Oder empfielst Du den Einsatz von zwei L293D ICs, um jedes Rad einzeln anstzeuern zu können?
Vielen Dank schonmal,
Clemens
Hi CLemens,
das geht beides aber ich würde sie eher zusammen ansteuern. Nur müsstest du die Geschwindigkeitswerte dann auch ggf anpassen.
LG, Felix
Hallo,
das ist wirklich ein tolles Tutorial.
Mich würde interessieren, ob es auch möglich ist den ganzen Roboter, also auch die Motoren nur mit einer bzw. zwei Powerbanks mit Strom zu versorgen, also komplett auf Batterien zu verzichten.
LG, Martin