WARUM ELASTISCHE ROBOTERHÄNDE?
Entwickelt für das Projekt „Soft!-robotic Hands“ (SoSe 2026) zur Erforschung passiver Nachgiebigkeit (Compliance) und feinfühliger Greifstrategien.
CURRENT-BASED MODE
Klassische Industrieroboter sind starr. Die RobotHand nutzt den Current-Based Position Mode der Dynamixel XL330 Servos.
Wird ein mechanischer Widerstand erreicht, federt der Finger nachgiebig ein. Die maximale Kraft wird hardwareseitig über das Stromlimit (z. B. 600 mA) begrenzt.
AUTOMATISCHER SOFT-GRIP
Die Software erkennt Berührungen in Echtzeit über den Stromanstieg an den einzelnen Fingersehnen.
Sobald ein Finger Kontakt mit einem Gegenstand hat, friert der Regler die Zielposition ein – perfekt zum Greifen empfindlicher Gegenstände wie Früchte oder Werkstücke.
3 BETRIEBSMODI
- 1. Joint Mode: Präzise Winkelregelung (0–360°).
- 2. Wheel Mode: Endlose Drehungen mit kontinuierlicher Geschwindigkeitsregelung.
- 3. Current-Position: Winkelregelung mit aktiver Drehmomentbegrenzung.
AUFBAU & PROTOTYP
3D-gedruckte Fingerglieder, Sehnenzug-Mechanismus (Tendon-driven) und digitale Dynamixel-Bus-Kommunikation.
DYNAMIXEL XL330-M288 SERVO-SPEZIFIKATIONEN
| Prozessor / MCU | ARM Cortex-M3 (32-Bit Microcontroller) |
| Encoder-Auflösung | Contactless Magnetic Absolute Encoder (4096 Schritte / 360°) |
| Protokoll | Dynamixel Protocol 2.0 (Half-Duplex Asynchron UART / TTL) |
| Betriebsspannung | 3.7 V – 6.0 V (Nominal: 5.0 V VCC) |
| Feedback & Telemetrie | Position, Geschwindigkeit, Strom (mA), Spannung (V), Temperatur (°C) |
| Interface / Adapter | Robotis U2D2 / USB-TTL Konverter am Raspberry Pi / PC |
Die Finger werden über reißfeste Sehnenzüge (Dyneema-Schnüre) bewegt, die direkt auf die Servohörner der Dynamixel-Motoren gewickelt sind. Eine Rückstellfeder sorgt für die elastische Öffnung.
TKINTER STEUERUNG IM LABOR
🔍 VERGRÖSSERN
Die eigens entwickelte Python/Tkinter-Bedienoberfläche im Praxiseinsatz am Roboterarm-Prüfstand zur direkten Kontrolle von Position, Geschwindigkeit und Stromlimits.
FOTO-DOKUMENTATION DES PROTOTYPS
🔍 VERGRÖSSERN
🔍 VERGRÖSSERN
DIGITALER ZWILLING (SOLIDWORKS)
3D-Modellierung, Baugruppen-Hierarchie und Konstruktion der elastischen Roboterhand in SolidWorks.
🔍 VERGRÖSSERN
🔍 VERGRÖSSERN
🔍 VERGRÖSSERN
🛡️ HARDWARE-SCHUTZ & SAFETY FEATURES
Sofortiges Abschalten des Drehmoments aller Servos per GUI-Button oder Schnelltaste Esc.
Visuelle Warnung bei Überhitzung (> 55 °C) und Ein-Klick-Motor-Reboot bei Überlastungsabschaltung.
Selbstheilender Lock-Manager (löst blockierte COM-Ports nach ~1s automatisch auf) verhindert Thread-Hänger.
INTELLIGENTE REKALIBRIERUNG
So lernt die Software die exakten Endpunkte jedes Fingers an:
Finger in die maximal geöffnete Position bringen und in der GUI "Set Zero" anklicken.
Finger in die geschlossene Greifposition führen und "Set Limit" anklicken.
Klick auf das Disketten-Symbol speichert die Kalibrierung dauerhaft in der calibration.json.
Wird ein Punkt nachjustiert, berechnet die Software den Offset automatisch und passt alle Posen & Sequenzen an!
QUICK START & PYTHON CODE
In 2 Minuten einsatzbereit auf Windows, Linux und Raspberry Pi OS.
1. VIRTUAL ENVIRONMENT & SETUP
# 1. Repository klonen
git clone https://github.com/NoNameTechnology/RobotHand.git
cd RobotHand
# 2. Virtuelle Python-Umgebung erstellen & aktivieren
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/Mac: source .venv/bin/activate
# 3. Abhängigkeiten installieren
pip install -r requirements.txt
# 4. GUI-Controller starten
python motor_control.py
DYNAMIXEL SDK EINBINDUNG
Beispielhafter Python-Code zur Aktivierung des Current-Based Position Mode (Operating Mode 5) über das Dynamixel Protocol 2.0:
from dynamixel_sdk import *
# Dynamixel Control Table Adressen (XL330)
ADDR_OPERATING_MODE = 11 # 5 = Current-Based Position
ADDR_TORQUE_ENABLE = 64
ADDR_GOAL_CURRENT = 102 # Stromlimit (z.B. 600mA)
ADDR_GOAL_POSITION = 116 # 0 bis 4095
# Port & PacketHandler initialisieren
portHandler = PortHandler('/dev/ttyUSB0')
packetHandler = PacketHandler(2.0)
portHandler.openPort()
portHandler.setBaudRate(57600)
# Motor in Current-Based Position Mode versetzen
packetHandler.write1ByteTxRx(portHandler, 1, ADDR_TORQUE_ENABLE, 0)
packetHandler.write1ByteTxRx(portHandler, 1, ADDR_OPERATING_MODE, 5)
packetHandler.write1ByteTxRx(portHandler, 1, ADDR_TORQUE_ENABLE, 1)
# Nachgiebig greifen mit 400 mA Strombegrenzung
packetHandler.write2ByteTxRx(portHandler, 1, ADDR_GOAL_CURRENT, 400)
packetHandler.write4ByteTxRx(portHandler, 1, ADDR_GOAL_POSITION, 2048)
PROTOTYP IN AKTION
Videoaufnahmen der Sehnen-gesteuerten Roboterhand beim Greif- und Bewegungstest.