Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte
Komponenten und Zubehör
| Smart Motor Robot Car Battery Box Chassis Kit DIY Speed Encoder für Arduino | × | 1 |
| oblu – ein Open-Source-IMU für Indoor-Fußgänger-Navigation | × | 1 |
| Lötfreies Breadboard (Halbgröße) | × | 1 |
| Male/Female Jumper Wires | × | 1 |
| Kondensator 1000 µF | × | 2 |
| Texas Instruments Dual H-Bridge Motortreiber L293D | × | 1 |
| Arduino Mega 2560 | × | 1 |
| AA 2800 Ni-MH Wiederaufladbar | × | 1 |
Benötigte Werkzeuge und Maschinen
- Lötkolben (allgemein)
Apps und Online-Dienste
- Arduino IDE
- Xoblu (Android-App für Echtzeit-Positionstracking)
Über dieses Projekt
Unsere Geschichte
Das Projekt zeigt, wie ein Roboter einen vordefinierten Pfad mit hoher Präzision abfährt – ganz ohne GPS, WLAN, Bluetooth zur Positionierung, ohne Karten oder Gebäudegrundrisse. Der tatsächlich gefahrene Pfad wird in Echtzeit maßstabsgetreu gezeichnet. Bluetooth dient lediglich als kabellose Übertragung der Positionsdaten.



Die Hintergrundgeschichte
Wir suchten eine robuste Lösung für die Indoor-Navigation unseres Arduino-Roboters. Der Open-Source-IMU „oblu“ erschien aufgrund niedriger Kosten und Offenheit vielversprechend. Allerdings ist die Open-Source-Firmware von oblu für fußmontierte Pedestrian Dead Reckoning (PDR) optimiert – also für menschliches Gehen. Die Android-App Xoblu ermöglicht kostenloses Echtzeit-Tracking. Die Herausforderung: Wie lässt sich der auf menschlichem Gang basierende Algorithmus für einen Roboter nutzen?
Oblu berechnet Verschiebung zwischen zwei Schritten und Richtungsänderung. Beim Aufsetzen des Fußes ist die Geschwindigkeit null – ein „Schritt“ wird erkannt, interne Fehler werden korrigiert. Genau das macht die Tracking-Leistung so gut. Die Idee: Was, wenn der Roboter genauso „geht“ – bewegt sich, stoppt, bewegt sich, stoppt…?
Wir entschieden uns für oblu und bauten Roboter und Tracking-System schnell zusammen. Der Rest ist im Video zu sehen.
Funktionsweise
Der Roboter fährt einen vorprogrammierten Pfad und sendet seine tatsächliche Bewegung per Bluetooth an ein Smartphone für Echtzeit-Tracking.
Arduino kennt den Pfad; oblu liefert Bewegungsdaten in regelmäßigen Abständen. Basierend darauf steuert Arduino die Räder, damit der Roboter dem Pfad folgt.
Der Pfad besteht aus Geradenstücken, definiert durch Länge und Orientierung zum vorherigen Stück. Die Bewegung ist diskret: Der Roboter fährt in „Schritten“ (Strides). Am Ende jedes Schritts sendet oblu Schrittlänge und Abweichung (Orientierungsänderung) an Arduino. Arduino korrigiert die Ausrichtung bei Abweichung vom vorgegebenen Geradenstück.
Der Roboter soll immer geradeaus fahren. Unebenheiten, Massenunwuchten, Motorasymmetrien oder das freilaufende Vorderrad verursachen Abweichungen. Ein Schritt – Korrektur – weiterfahren. Fährt er das Segment länger als programmiert, fährt er rückwärts.
Die nächste Schrittlänge hängt von der Reststrecke des aktuellen Geradenstücks ab: große Schritte bei großer Reststrecke, kleine Schritte nahe am Ziel.
Oblu sendet Daten gleichzeitig an Arduino und Smartphone (Bluetooth). Die Android-App Xoblu berechnet den Pfad aus den Bewegungsdaten für Echtzeit-Tracking.
Zusammenfassend: Oblu erfasst Bewegung, kommuniziert Bewegungsdaten an Arduino und Telefon. Arduino steuert basierend auf programmiertem Pfad und Bewegungsdaten die Räder. Die Bewegung wird NICHT ferngesteuert (außer Start/Stopp).
Pfadmodellierung
Der Roboter lässt sich am besten steuern, wenn er nur Geradenstücke fährt. Daher wird der Pfad zunächst als Menge von Geraden modelliert. Die Bilder zeigen Beispielpfade und ihre Darstellung als Verschiebung und Orientierung – so wird der Pfad in Arduino programmiert.


Jeder aus Geradenstücken bestehende Pfad kann so definiert und in Arduino programmiert werden.
Schaltungsaufbau
Siehe Hardware-Abschnitt für elektrische Verbindungen zwischen Arduino, oblu, Motortreiber und Batteriepack.
Kommunikationsprotokoll
- Schritt 1: Xoblu sendet START-Befehl an oblu.
- Schritt 2: oblu bestätigt mit ACK an Xoblu.
- Schritt 3: oblu sendet DATEN-Paket mit Verschiebung und Orientierung für jeden Schritt an Xoblu (Schritt = Erkennung von Nullbewegung/Stillstand).
- Schritt 4: Xoblu bestätigt letztes DATEN-Paket mit ACK an oblu. (Schritte 3 und 4 wiederholen sich, bis Xoblu STOP sendet. Bei STOP führt oblu Schritt 5 aus.)
- Schritt 5: STOP – (i) Verarbeitung in oblu stoppen (ii) Alle Ausgaben in oblu stoppen.
Details zu START, ACK, DATA, STOP siehe oblu Application Note.
Funktionsweise des oblu IMU (optional)
Referenzen zu oblu-Übersicht und Grundprinzip fußmontierter PDR-Sensoren:
- Der verfügbare Quellcode ist für fußmontierte Navigation optimiert. Video zum Grundprinzip.
- Einfache Artikel zu fußmontierten PDR-Sensoren: „Track my steps“, „Continue tracking my steps“.
- Dokument zu Pedestrian Dead Reckoning mit Fußsensoren.
- Video-Übersicht zu oblu.
Feedback, Vorschläge und Kommentare sind willkommen!
Code
Arduino-basierter Roboter
Der Roboter fährt einen vorprogrammierten Pfad und sendet aktuelle Koordinaten an das Telefon für Echtzeit-Tracking.
Schaltpläne
Herstellungsprozess
- Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
- Simple Pi Robot: 2-WD Autonomer Rover mit Raspberry Pi bauen
- Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
- Joy Robot: Arduino-ESP8266 Roboter für Kinderkliniken
- Autonomer Linienfolger-Roboter mit Arduino UNO
- Sprachgesteuerter Roboter mit Arduino Nano bauen
- PiBot: Arduino-gesteuerter Klavierroboter für präzise Musikwiedergabe
- Umfassendes Arduino-Trainingskit mit Mega 2560, Sensoren, Motoren & Custom PCB
- Autonomer Hausassistent-Roboter bauen: Komplette Teileliste & Setup-Anleitung
- Smartes Temperatur-Monitoring für Schulen – Arduino, Raspberry Pi, Sigfox & ThingSpeak