- Kontext
- Gruppenprojekt, FHNW
- Zeitraum
- 04.2026 – 06.2026
- Umfang
- Hardware und Software vollständig selbst entwickelt
- Technologien
- ESP32, Schrittmotoren, Waveshare-Servos, Python, YAML
Ausgangslage
Im Rahmen des Moduls «Mechatronische Systeme Labor» an der FHNW bestand die Aufgabe darin, Zylinder gezielt umzuplatzieren sowie Würfel zu drehen und an definierten Positionen abzulegen. Zur Lösung dieser Aufgabe entwickelten und realisierten wir einen eigenen Roboterarm. Dabei umfasste die Entwicklung den gesamten Prozess, von der mechanischen Konstruktion über die Elektronik bis hin zur Software. Mit Ausnahme der zugekauften Antriebe und Normteile wurden sämtliche Komponenten eigenständig entwickelt und gefertigt.
Anforderungen
- Zylinder umplatzieren: An vorgegebenen Positionen aufnehmen und an anderer Stelle ablegen
- Würfel drehen und platzieren: Aufnehmen, in die gewünschte Lage drehen und ablegen
- Einfache Programmierung: Programme sollen einfach aufsetzbar sein
Systemaufbau
Der Roboterarm besteht aus einer rotierenden Säule, die zusätzlich eine vertikale Hubbewegung ermöglicht, sowie zwei Armgliedern, die den Greifer innerhalb der horizontalen Ebene positionieren. Zwei Achsen werden von Schrittmotoren angetrieben, die restlichen Achsen und der Greifer von Waveshare-Servomotoren.
- Achse 1 (Drehung der Säule): Schrittmotor, der die gesamte Säule mit dem Arm dreht.
- Achse 2 (Z-Achse): Schrittmotor mit Gewindespindel, die den Arm auf Führungsstangen in der Höhe verfährt.
- Achsen 3 und 4 (Armglieder): Zwei Waveshare-Servos, die die beiden Armglieder bewegen und den Greifer in der Ebene positionieren.
- Greifer: Von einem weiteren Waveshare-Servo angetrieben, Öffnungsweite stufenlos einstellbar.
- Schrittmotoransteuerung: Ein ESP32 erzeugt die Schrittimpulse für beide Schrittmotoren mit Beschleunigungsrampen und fährt die Achsen beim Start gegen Referenzschalter.
- Gehäuse und Mechanik: Säule, Armglieder, Greifer, Halterungen und Steuerbox sind selbst konstruiert und 3D-gedruckt.
Software
Die Steuerung läuft in Python auf einem PC. Der ESP32 bildet die Schnittstelle zu den Schrittmotoren, die Waveshare-Servos werden direkt über deren serielles Bus-Protokoll angesprochen und die Logik darüber vereint beides zu einem Roboter.
- Firmware: Der ESP32 nimmt über die serielle Schnittstelle Befehle im JSON-Format entgegen und meldet Position und Status zurück. Ein Timer-Interrupt sorgt dabei für gleichmässige Schrittimpulse.
- Kinematik: Die Software rechnet die gewünschte Position des Greifers in die Winkel und Wege der einzelnen Achsen um und umgekehrt.
- Bewegungsarten: Gelenkbewegungen (moveJ) fahren auf dem schnellsten Weg zum Ziel. Lineare Bewegungen (moveL) fahren auf einer geraden Linie.
- Programmierung: Abläufe werden als einfache YAML-Dateien geschrieben, mit Bewegungen, Greiferbefehlen und Wartezeiten. Eine grafische Oberfläche listet alle Programme auf und startet sie auf Knopfdruck.