Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Signalerfassung
- Schritt 2: Vereinfachtes Signal
- Schritt 3: Signalverarbeitung
- Schritt 4: Schaltpläne
- Schritt 5: Platzierung der EMG-Sensoren
- Schritt 6: Code
- Schritt 7: Ergebnisse
Video: Roboterhandsteuerung mit EMG - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Dieses Projekt zeigt die Steuerung der Roboterhand (mit OpenSource-Hand inMoov) mit 3 OpenSource-uECG-Geräten zur Messung und Verarbeitung der Muskelaktivität (Elektromyogramm, EMG). Unser Team hat eine lange Geschichte mit Händen und ihrer Kontrolle, und dies ist ein guter Schritt in die richtige Richtung:)
Lieferungen
3x uECG-Geräte1x Arduino (ich verwende Nano, aber die meisten anderen würden funktionieren)1x nRF24-Modul (jedes generisches würde es tun)1x PCA9685 oder ähnlicher Servotreiber1x inMoov-Hand5x große Servos (siehe inMoov-Anweisungen für kompatible Typen)1x 5V-Netzteil fähig zu 5A oder mehr Strom
Schritt 1: Signalerfassung
Die Kontrolle basiert auf EMG - der elektrischen Aktivität der Muskeln. Das EMG-Signal wird von drei uECG-Geräten erhalten (ich weiß, es soll ein EKG-Monitor sein, aber da er auf einem generischen ADC basiert, kann er alle Biosignale messen - einschließlich EMG). Für die EMG-Verarbeitung verfügt uECG über einen speziellen Modus, in dem es 32-Bin-Spektrumdaten und den "Muskelfenster"-Durchschnitt (durchschnittliche spektrale Intensität zwischen 75 und 440 Hz) aussendet. Spektrumbilder sehen aus wie blaugrüne Muster, die sich im Laufe der Zeit ändern. Hier ist die Frequenz auf einer vertikalen Achse (auf jedem der 3 Diagramme, niedrige Frequenz unten, hohe oben - von 0 bis 488 Hz mit ~15 Hz-Schritten), die Zeit ist auf einer horizontalen (alte Daten links insgesamt hier.) ca. 10 Sekunden auf dem Bildschirm). Die Intensität wird mit Farbe kodiert: blau - niedrig, grün - mittel, gelb - hoch, rot - noch höher.
Schritt 2: Vereinfachtes Signal
Für eine zuverlässige Gestenerkennung ist eine ordnungsgemäße PC-Verarbeitung dieser Spektralbilder erforderlich. Für die einfache Aktivierung von Roboterhandfingern reicht es jedoch aus, nur den Durchschnittswert auf 3 Kanälen zu verwenden - uECG stellt ihn bequem bei bestimmten Paketbytes bereit, damit Arduino Sketch ihn analysieren kann. Diese Werte sehen viel einfacher aus - ich habe ein Diagramm mit Rohwerten von Arduinos Serial Plotter angehängt. Rote, grüne, blaue Diagramme sind Rohwerte von 3 uEKG-Geräten an verschiedenen Muskelgruppen, wenn ich Daumen, Ring- und Mittelfinger entsprechend drücke. Für unser Auge sind diese Fälle eindeutig anders, aber wir müssen diese Werte irgendwie in "Finger-Score" umwandeln, damit ein Programm Werte an Handservos ausgeben kann. Das Problem ist, dass Signale von Muskelgruppen "gemischt" sind: Im 1. und 3. Fall ist die blaue Signalintensität ungefähr gleich - aber rot und grün sind unterschiedlich. Im 2. und 3. Fall sind grüne Signale gleich - aber blaue und rote sind unterschiedlich.
Schritt 3: Signalverarbeitung
Um diese Signale zu "entmischen", habe ich eine relativ einfache Formel verwendet:
S0=V0^2 / ((V1 *a0 +b0)(V2 * c0+d0)), wobei S0 - Wert für Kanal 0, V0, V1, V2 - Rohwerte für Kanal 0, 1, 2 und a, b, c, d - Koeffizienten, die ich manuell angepasst habe (a und c waren von 0,3 bis 2,0, b und d waren 15 und 20, Sie müssten sie sowieso ändern, um sie an Ihre spezielle Sensorposition anzupassen). Für Kanal 1 und 2 wurde die gleiche Punktzahl berechnet. Danach wurden die Charts fast perfekt getrennt. Für die gleichen Gesten (diesmal Ringfinger, Mittelfinger und dann Daumen) sind die Signale klar und können einfach durch Vergleich mit dem Schwellenwert in Servobewegungen übersetzt werden
Schritt 4: Schaltpläne
Der Schaltplan ist recht einfach, Sie benötigen nur ein nRF24-Modul, einen PCA9685 oder einen ähnlichen I2C-PWM-Controller und eine 5-V-Hochleistungsversorgung, die ausreichen würde, um alle diese Servos auf einmal zu bewegen (also mindestens 5A Nennleistung für einen stabilen Betrieb erforderlich).
Liste der Anschlüsse: nRF24 Pin 1 (GND) - Arduinos GNDnRF24 Pin 2 (Vcc) - Arduinos 3.3vnRF24 Pin 3 (Chip Enable) - Arduinos D9nRF24 Pin 4 (SPI: CS) - Arduinos D8nRF24 Pin 5 (SPI: SCK) - Arduinos D13nRF24 Pin 6 (SPI:MOSI) - Arduinos D11nRF24 Pin 7 (SPI:MISO) - Arduinos D12PCA9685 SDA - Arduinos A4PCA9685 SCL - Arduinos A5PCA9685 Vcc - Arduinos 5vPCA9685 GND - Arduinos GNDPCA9685 V+ - 96 Ampere zu Servo 5VPCA PCA Kanäle 0-4, in meiner Notation Daumen - Kanal 0, Zeigefinger - Kanal 1 usw.
Schritt 5: Platzierung der EMG-Sensoren
Um vernünftige Messwerte zu erhalten, ist es wichtig, uEKG-Geräte, die die Muskelaktivität aufzeichnen, an den richtigen Stellen zu platzieren. Obwohl hier viele verschiedene Optionen möglich sind, erfordert jede einen anderen Signalverarbeitungsansatz - daher ist es bei meinem Code am besten, eine ähnliche Platzierung wie auf meinen Fotos zu verwenden. Es mag nicht intuitiv sein, aber das Daumenmuskelsignal ist auf der gegenüberliegenden Seite des Arms besser sichtbar, also wird einer der Sensoren dort platziert, und alle werden in der Nähe des Ellenbogens platziert (Muskeln haben den größten Teil ihres Körpers in diesem Bereich, aber Sie möchten überprüfen, wo genau sich Ihre befinden - es gibt einen ziemlich großen individuellen Unterschied)
Schritt 6: Code
Bevor Sie das Hauptprogramm ausführen, müssen Sie die Geräte-IDs Ihrer jeweiligen uECG-Geräte herausfinden (dies geschieht, indem Sie die Zeile 101 auskommentieren und die Geräte nacheinander einschalten, Sie sehen unter anderem die ID des aktuellen Geräts) und diese in unit_ids-Array (Zeile 37). Ansonsten möchten Sie mit Formelkoeffizienten (Zeilen 129-131) spielen und prüfen, wie es auf einem seriellen Plotter aussieht, bevor Sie ihn an der Roboterhand befestigen.
Schritt 7: Ergebnisse
Mit einigen Experimenten, die etwa 2 Stunden dauerten, konnte ich einen recht zuverlässigen Betrieb erzielen (Video zeigt einen typischen Fall). Es verhält sich nicht perfekt und kann bei dieser Verarbeitung nur offene und geschlossene Finger erkennen (und nicht einmal jede der 5, es erkennt nur 3 Muskelgruppen: Daumen, Zeige- und Mittelfinger zusammen, Ring- und kleiner Finger zusammen). Aber "AI", das das Signal analysiert, benötigt hier 3 Codezeilen und verwendet einen einzelnen Wert von jedem Kanal. Ich glaube, dass durch die Analyse von 32-bin-Spektralbildern auf einem PC oder Smartphone viel mehr erreicht werden könnte. Außerdem verwendet diese Version nur 3 uECG-Geräte (EMG-Kanäle). Mit mehr Kanälen sollte es möglich sein, wirklich komplexe Muster zu erkennen - aber gut, das ist der Sinn des Projekts, um allen Interessierten einen Ansatzpunkt zu bieten:) Handsteuerung ist definitiv nicht die einzige Anwendung für ein solches System.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
Beginnen Sie mit Light Painting (kein Photoshop): 5 Schritte (mit Bildern)
Beginnend mit Light Painting (kein Photoshop): Ich habe vor kurzem eine neue Kamera gekauft und einige ihrer Funktionen untersucht, als ich im Internet auf Light Painting oder Langzeitbelichtung gestoßen bin. Die meisten von uns werden die Grundform des Lightpaintings mit einem Foto in einer Stadt mit einer Straße gesehen haben