KITtyBot: DIY Vierbeiner-Roboter mit Arduino Pro Mini, 12 Servos, IR-Fernbedienung & LiPo-Power
Komponenten und Zubehör
| SparkFun Arduino Pro Mini 328 - 5 V/16 MHz | × | 1 |
| Servos Tower Pro MG996R (oder SG-90 / 9 g baugleich) | × | 12 |
| Adafruit UBEC DC/DC Step-Down (Buck) Converter 5 V / 3 A | × | 1 |
| Adafruit Mini Fernbedienung (oder beliebige NEC-kompatible IR-Fernbedienung) | × | 1 |
| Adafruit IR-Empfänger TSOP38238 | × | 1 |
| Widerstand 1 kΩ | × | 1 |
| Widerstand 2,2 kΩ | × | 1 |
| 7,4 V / 500 mAh LiPo-Akku (R/C-Hobby-Typ) | × | 1 |
Benötigte Werkzeuge
- 3D-Drucker (für Gehäuseteile)
- Lötkolben (bei PCB-Version; Steckplatine geht auch lötfrei)
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Einführung
Ziel: Ein laufender Vierbeiner im „Säuger-Stil“ (nicht Spinne/Insekt) – inspiriert von Boston Dynamics. Herausforderung: Hoher Schwerpunkt, Füße unter dem Körper → kippt leicht. Lösung: Inverse Kinematik (IK) für präzise Fußpositionierung, statisch stabile Gänge (immer 3 Beine am Boden, Schwerpunkt im Dreieck der Stützbeine).
Budget: Günstig (Arduino Pro Mini, Mikro-Servos). Perfektion nicht erwartbar, aber funktionsfähiges Gehen erreichbar.
Software-Architektur
- IK-Gleichungen: Berechnen Gelenkwinkel (α, β, γ) aus gewünschter Fußposition (x, y, z).
- Körperbewegungs-Funktion: Bewegt alle 4 Füße entgegengesetzt zur Körperverschiebung.
- Fußschritt-Funktion: Heben → verschieben → setzen.
- Gang-Muster (Gaits): Vorwärts, Rückwärts, Links, Rechts – sequenzielle Kombination von Körper- und Fußbewegungen.
- Synchronisierte Servobewegung: Mehrere Servos bewegen sich in gleicher Zeit auf Zielposition (weiche Bewegung).
- LiPo-Überwachung: Spannungsteiler (2,2 kΩ / 1 kΩ) an A0 → bei < 7,0 V Notstopp (Tiefentladeschutz).
Roboter bauen (mechanisch)
- 3D-Teile drucken (Dateien im Repository). Vorab Bilder studieren.
- Hüftgelenk: Zwei Servos perpendicular (90°) – Doppelseitiges Klebeband (reparierbar) oder Kleben. Vorne-rechts & hinten-links identisch, die anderen beiden gespiegelt.
- Servos zentrieren: Vor Montage alle 12 Servos an PCB/Steckplatine anschließen, Code laden → Arduino-Start zentriert alle auf 90° (Signal). Feinjustage später im Code.
- Oberschenkel (Thigh): Servohörner in Aussparungen kleben (Heißkleber funktioniert gut). An Hüfte in ~60° Winkel montieren, Schraube am Spline fixieren.
- Unterschenkel: Servo direkt an Beinteil verschrauben (mitgelieferte Schrauben).
- Beine an Körper: „Stoßstangen“ (Bumper) vorne/hinten mit Servohörnern. Oberschenkel-Servo-Träger in Körperlöcher schieben, Bumper draufschrauben. Beine ~12° nach außen (20 mm Zehenausstand).
- Unterschenkel anbringen: Entgegen Oberschenkel-Winkel, sodass Fußspitze unter Hüftgelenk steht.
Elektronik anschließen
Zwei Optionen:
Steckplatine (Halbformat)
Pro Mini, Servo-Anschlüsse (lange Pin-Header, in 3er-Stücke geschnitten), IR-Empfänger, Spannungsteiler für LiPo-Messung. Kurze Jumper-Kabel für 5 V/GND zu Servos! UBEC-Ausgang (Servostecker) auf obere Stromschiene. Steckplatine mit Kleberückseite auf Körpermitte kleben (Schwerpunkt!). Ecke mit D3-D5 vorne-links.
PCB-Version (empfohlen)
Fritzing-Datei für PCB-Fertigung (z. B. über Fritzing Service oder Export für Hersteller). Breitere Kupferbahnen für Servo-Stromversorgung. Passgenaue Montage auf Körper (Klett/Doppelseitig). Erweiterungs-Pins für zukünftige Sensoren.
Feinjustage (Kalifornierung)
Array servodeg0[12] im Code anpassen (Reihenfolge: α,β,γ je Bein: vorne-links, hinten-links, vorne-rechts, hinten-rechts). Startwerte alle 90. Nach Start messen/winkel prüfen, Differenzen in Array eintragen. Beispiel finales Array:
const float servodeg0[12] = {80, 95, 100, 100, 110, 90, 100, 115, 100, 80, 80, 100};
Array servodir[12] definiert Drehrichtung (+1 = gegen Uhrzeigersinn). Bei anderen Servos Vorzeichen ggf. invertieren.
Weitere Ideen
- Tanz-Bewegungen auf freie Fernbedienungstasten
- Analogsteuerung (Joystick) + Autonomes Verhalten (Ultraschall-Hindernisvermeidung)
- Smartphone-Steuerung via Blynk / ESP8266
- Gyro/Kompass für Kurskorrektur
Der Code ist parametrisiert (Beinlängen, Körperbreite/Länge, Zehenausstand) – anpassbar für andere Größen/Layouts.
Code
KITtyBot2 Code (Arduino)
Vollständiger Sketch (zu lang für hier) – nutzt IRLib2 (NEC-Protokoll), Servo.h. Enthält: IK-Berechnung, Gang-Funktionen (forwardcreep(), reversecreep(), leftturn(), rightturn()), synchronisierte Servobewegung (servomove()), LiPo-Überwachung, IR-Dekodierung.
Wichtige Konstanten: jointlength=50, width=120, leng=120, distag=12, toeout0=20, steplength=40, phi=20° (Drehwinkel).
Custom Parts (3D-Druck)
- Körper (trägt PCB & Akku)
- 2× Stoßstange (Bumper) vorne/hinten
- 4× Hüft-Träger
- 4× Oberschenkel
- 4× Unterschenkel/Fuß
- Assembly-Datei (nicht zum Drucken)
Schaltpläne
kittybotmini_XKZYltyQVJ.fzz (Fritzing – für PCB-Fertigung nutzbar)
Herstellungsprozess
- Adafruit 10DOF IMU Daten von Raspberry Pi 2 an Azure Event Hubs senden (Windows 10 IoT Core)
- Stilvolle Wanduhr mit Adafruit 60-LED Neopixel-Ring & Arduino
- UnifiedWater v1 – Komplettes Arduino Wasserqualitäts-Sensorkit
- Iron Man Helm & Arc Reactor selbst bauen – Schritt-für-Schritt mit Arduino & 3D-Druck
- Portables Abstimmungssystem mit GSM-Anbindung (Mobile Vote Box)
- Arduino 101 BLE + Blynk: DIY Bluetooth-gesteuerter Panzer-Roboter
- Smart Matchmaking-Sonnenbrillen mit Arduino 101 und tinyTILE BLE
- DIY Whac-A-Mole Arcade-Spiel (Tasten-Edition) – Arduino Mega Projekt
- Modern Jukebox: Raspberry Pi & Arduino LED-Musikplayer im Retro-Look
- DIY Arduino Smartwatch: Eigene Apple-Watch-Alternative bauen