Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Komponenten und Materialien

Arduino UNO (Roboterarm) 1
Arduino Nano R3 (Handschuh) 1
JLCPCB Custom PCB (optional) 1
Servomotoren MG996R 6
5 V Batteriepack (2200 mAh RC-Akku) 1
PCA9685 8-Kanal Servotreiber (I²C) 1
HC-05 Bluetooth-Modul 2 (Master/Slave)
A4988 Schrittmotortreiber 1
NEMA-17 Schrittmotor (Basisrotation) 1
Steckbrett 1
IMU MPU6050 (6 DoF) 1
Flex-Sensor 1 (bzw. 3 für Finger)

Benötigte Werkzeuge

Projektübersicht

MARK 1 – Ein 6-achsiger Roboterarm, der per Handgesten (Dataglove) gesteuert wird. Inspiriert von Filmen wie „Pacific Rim“ und „Avatar“. Der Arm kann vorprogrammierte Abläufe ausführen oder drahtlos per Bluetooth aus bis zu 10 m Entfernung gesteuert werden. Maximale Traglast: 1 kg (empfohlen 600 g).

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck
DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Funktionsprinzip

Der Dataglove (Handschuh) erfasst Fingerbeugung (Flex-Sensoren) und Handgelenksrotation (MPU6050 Beschleunigungs-/Gyroskop). Die Daten werden per Bluetooth (HC-05, 4800 Baud) an den Roboterarm gesendet. Dort steuert ein PCA9685 Servotreiber (I²C) die sechs MG996R-Servos; die Basisrotation erfolgt über einen NEMA-17 Schrittmotor mit A4988-Treiber.

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Sensoren im Handschuh

Die Sensorwerte werden kalibriert (oberes/unteres Limit) und auf diskrete Befehle (Buchstaben) gemappt, die per Serial an das Bluetooth-Modul gesendet werden.

Mechanischer Aufbau

Roboterarm (3D-Druck)

Basiert auf Thingiverse-Designs (Wonder Tiger):

Druckzeit ca. 40 h. Kostengünstiger als Fertigbausätze. Alternative Designs auf Thingiverse verfügbar.

Dataglove

3D-gedrucktes Exoskelett (Roman 13) oder simpler Handwerkerhandschuh. Für große Hände bei 105 % skalieren.

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Elektronik & Verkabelung

Servotreiber PCA9685

Externe 5 V/2,2 Ah Stromversorgung für Servos (Arduino kann nicht genug Strom liefern). I²C-Adresse 0x40. Verkabelung: SDA/SCL an Arduino (UNO: A4/A5), V+/GND an Akku.

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

NEMA-17 Schrittmotor für Basis

MG996R zu schwach für Basisdrehung unter Last. NEMA-17 + A4988 bietet hohes Drehmoment und Präzision. Step/Dir-Pins an Arduino.

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Gesamtverkabelung Roboterarm

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Bluetooth-Konfiguration (HC-05)

Modul Rolle Einstellung
Handschuh HC-05 Master AT+ROLE=1, AT+BIND=, Baud 4800
Arm HC-05 Slave AT+ROLE=0, Baud 4800

Programmierung – Roboterarm (Auszug)

#include "HCPCA9685.h"
#define I2CAdd 0x40
HCPCA9685 HCPCA9685(I2CAdd);

// Servo-Positionen & Limits
const int servo_joint_L_parking_pos = 60;
int servo_joint_L_pos_increment = 20;
int servo_joint_L_parking_pos_i = servo_joint_L_parking_pos;
int servo_joint_L_min_pos = 10;
int servo_joint_L_max_pos = 180;

// ... weitere Servos analog ...

void setup() {
  Serial.begin(4800); // Bluetooth Baudrate
  HCPCA9685.Init(SERVO_MODE);
  // Startpositionen einfahren
}

void loop() {
  if (Serial.available() > 0) {
    char state = Serial.read();
    // Beispiel: Basisdrehung links
    if (state == 'S') { baseRotateLeft(); delay(5); }
    // Greifer öffnen/schließen
    if (state == 'f') { // Greifer runter
      if (servo_joint_3_parking_pos_i < servo_joint_3_max_pos) {
        HCPCA9685.Servo(4, servo_joint_3_parking_pos_i);
        servo_joint_3_parking_pos_i += servo_joint_3_pos_increment;
      }
    }
    // ... weitere Befehle 'F', 'L', 'R', 'P', etc.
  }
}

void baseRotateLeft() {
  digitalWrite(stepPin, LOW);
  delayMicroseconds(stepDelay);
}

Wichtig: Hard-Stops bei Min/Max-Winkeln verhindern Getriebeschaden.

Programmierung – Dataglove (Auszug)


// Sensor-Pins
int pinkie_Data = A1;
int finger_Data = A2;
int thumb_Data = A3;
const int MPU1 = 0x68, MPU2 = 0x69; // I²C-Adressen zweier MPU6050

int response_time = 1000;
bool calibrated = false;
int thumb_high, thumb_low, finger_high, finger_low, pinkie_high, pinkie_low;

void loop() {
  // Rohwerte lesen
  int pinkie = analogRead(pinkie_Data);
  int finger = analogRead(finger_Data);
  int thumb = analogRead(thumb_Data);
  GetMpuValue1(MPU1);
  GetMpuValue2(MPU2);

  // Einmalige Kalibrierung nach Reset
  if (!calibrated) {
    delay(1000);
    thumb_high = thumb * 1.15; thumb_low = thumb * 0.9;
    finger_high = finger * 1.03; finger_low = finger * 0.8;
    pinkie_high = pinkie * 1.06; pinkie_low = pinkie * 0.8;
    calibrated = true;
  }

  // Gesten-Erkennung & Senden
  if (finger >= finger_high) { Serial.print("F"); delay(response_time); }
  if (finger <= finger_low)  { Serial.print("f"); delay(response_time); }
  // ... analog für thumb, pinkie, MPU-Werte
}

Ergebnis & Ausblick

DIY Roboterarm mit Gestensteuerung (Hand-Tracking) – Arduino & 3D-Druck

Der Arm kann Objekte präzise greifen und bewegen. Die Gestensteuerung funktioniert zuverlässig für grundlegende Aktionen. Präzision und Geschmeidigkeit lassen sich durch feinere Kalibrierung, PID-Regelung der Servos und zusätzliche Sensoren (Kraftsensoren am Greifer) verbessern.

Der Code ist Open Source auf GitHub: EbenKouao/arduino-robotic-arm. Beiträge und Weiterentwicklungen sind willkommen!

3D-Druck-Dateien (Thingiverse)

Herstellungsprozess

  1. Bluetooth-gesteuerter Raspberry Pi Roboter mit Audio-Feedback bauen
  2. DIY Hausaufgaben-Schreibmaschine zu Hause bauen
  3. Android-gesteuertes Roboterfahrzeug mit Raspberry Pi Motor Shield
  4. Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
  5. Autonomer Linienfolger-Roboter mit Arduino UNO
  6. Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
  7. Sprachgesteuerter Roboter mit Arduino Nano bauen
  8. Ethernet-gesteuerter Roboterarm: Fernsteuerung leicht gemacht
  9. MobBob: Eigenen Arduino-Roboter bauen, per Android-Smartphone steuern
  10. Smartes Indoor-Navigations-Roboter-Kit für Arduino-Projekte