Sommario:
- Forniture
- Passaggio 1: acquisizione del segnale
- Passaggio 2: segnale semplificato
- Passaggio 3: elaborazione del segnale
- Fase 4: Schemi
- Passaggio 5: posizionamento dei sensori EMG
- Passaggio 6: codice
- Passaggio 7: risultati
Video: Controllo manuale robotico con EMG: 7 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Questo progetto mostra il controllo della mano robotica (usando la mano opensource inMoov) con 3 dispositivi uECG opensource utilizzati per misurare ed elaborare l'attività muscolare (elettromiogramma, EMG). Il nostro team ha una lunga storia con le mani e il loro controllo, e questo è un buon passo nella giusta direzione:)
Forniture
3x dispositivi uECG1x Arduino (sto usando Nano ma la maggior parte degli altri funzionerebbe)1x modulo nRF24 (qualsiasi generico andrebbe bene)1x PCA9685 o servo driver simile1x inMoov hand5x grandi servi (vedere le istruzioni inMoov per i tipi compatibili)1x alimentatore 5V in grado di 5A o più di corrente
Passaggio 1: acquisizione del segnale
Il controllo si basa sull'EMG - attività elettrica dei muscoli. Il segnale EMG è ottenuto da tre dispositivi uECG (lo so, dovrebbe essere un monitor ECG, ma poiché si basa su un ADC generico, può misurare qualsiasi segnale biologico, incluso l'EMG). Per l'elaborazione EMG, uECG ha una modalità speciale in cui invia i dati dello spettro a 32 bin e la media della "finestra muscolare" (intensità spettrale media tra 75 e 440 Hz). Le immagini dello spettro sembrano modelli blu-verdi che cambiano nel tempo. Qui la frequenza è su un asse verticale (su ciascuno dei 3 grafici, bassa frequenza in basso, alta in alto - da 0 a 488 Hz con incrementi di ~15 Hz), il tempo è orizzontale (vecchi dati a sinistra in generale qui è di circa 10 secondi sullo schermo). L'intensità è codificata con il colore: blu - basso, verde - medio, giallo - alto, rosso - ancora più alto.
Passaggio 2: segnale semplificato
Per un riconoscimento affidabile dei gesti, è necessaria una corretta elaborazione da PC di queste immagini spettrali. Ma per una semplice attivazione delle dita della mano robotica, è sufficiente utilizzare solo il valore medio su 3 canali: uECG lo fornisce convenientemente a determinati byte di pacchetto in modo che lo schizzo Arduino possa analizzarlo. Questi valori sembrano molto più semplici: ho allegato un grafico di valori grezzi dal plotter seriale di Arduino. I grafici rosso, verde e blu sono valori grezzi di 3 dispositivi uECG su diversi gruppi muscolari quando premo il pollice, l'anulare e il medio di conseguenza. Per i nostri occhi questi casi sono chiaramente diversi, ma dobbiamo trasformare quei valori in "punteggio delle dita" in qualche modo in modo che un programma possa inviare valori ai servi manuali. Il problema è che i segnali dei gruppi muscolari sono "misti": nel primo e nel terzo caso l'intensità del segnale blu è più o meno la stessa, ma il rosso e il verde sono diversi. Nel 2° e 3° caso i segnali verdi sono gli stessi, ma il blu e il rosso sono diversi.
Passaggio 3: elaborazione del segnale
Per "scomporre" questi segnali, ho usato una formula relativamente semplice:
S0=V0^2 / ((V1 *a0 +b0)(V2 * c0+d0)), dove S0 - punteggio per il canale 0, V0, V1, V2 - valori grezzi per i canali 0, 1, 2 e a, b, c, d - coefficienti che ho regolato manualmente (a e c erano da 0,3 a 2,0, b e d erano 15 e 20, avresti comunque bisogno di cambiarli per adattarli al tuo particolare posizionamento del sensore). Lo stesso punteggio è stato calcolato per i canali 1 e 2. Successivamente, i grafici sono diventati quasi perfettamente separati. Per gli stessi gesti (questa volta anulare, medio e poi pollice) i segnali sono chiari e possono essere facilmente tradotti in movimenti del servo semplicemente confrontando con la soglia
Fase 4: Schemi
Lo schema è abbastanza semplice, è necessario solo il modulo nRF24, PCA9685 o un controller PWM I2C simile e un alimentatore da 5 V ad alto amplificatore che sarebbe sufficiente per spostare tutti questi servi contemporaneamente (quindi richiede una potenza nominale di almeno 5 A per un funzionamento stabile).
Elenco delle connessioni: nRF24 pin 1 (GND) - Arduino GNDnRF24 pin 2 (Vcc) - Arduino 3.3vnRF24 pin 3 (Chip Enable) - Arduino D9nRF24 pin 4 (SPI:CS) - Arduino D8nRF24 pin 5 (SPI: SCK) - Arduino D13nRF24 pin 6 (SPI:MOSI) - D11nRF24 pin 7 (SPI:MISO) di Arduino - D12PCA9685 SDA di Arduino - A4PCA9685 SCL di Arduino - A5PCA9685 Vcc di Arduino - 5vPCA9685 GND di Arduino - GNDPCA9685 V+ di Arduino GNDPCA9685 - amplificatore alto 5NDDFinger: servoamplificatore 5 Canali PCA 0-4, nella mia notazione pollice - canale 0, indice - canale 1 ecc.
Passaggio 5: posizionamento dei sensori EMG
Per ottenere letture ragionevoli, è importante posizionare i dispositivi uECG, che registrano l'attività muscolare, nei posti giusti. Sebbene qui siano possibili molte opzioni diverse, ognuna richiede un approccio di elaborazione del segnale diverso, quindi con il mio codice è meglio utilizzare un posizionamento simile alle mie foto. Potrebbe essere controintuitivo, ma il segnale del muscolo del pollice è meglio visibile sul lato opposto del braccio, quindi uno dei sensori è posizionato lì e tutti sono posizionati vicino al gomito (i muscoli hanno la maggior parte del loro corpo in quell'area, ma vuoi controllare dove si trovano esattamente i tuoi - c'è una grande differenza individuale)
Passaggio 6: codice
Prima di eseguire il programma principale, dovrai scoprire gli ID unità dei tuoi particolari dispositivi uECG (è fatto decommentando la riga 101 e accendendo i dispositivi uno per uno, vedrai l'ID del dispositivo corrente tra le altre cose) e inserirli in array_id_unità (riga 37). Oltre a questo, vuoi giocare con i coefficienti della formula (righe 129-131) e controllare come appare sul plotter seriale prima di collegarlo alla mano robotica.
Passaggio 7: risultati
Con alcuni esperimenti che hanno richiesto circa 2 ore, sono stato in grado di ottenere un funzionamento abbastanza affidabile (il video mostra un caso tipico). Si comporta non perfettamente e con questa elaborazione riesce a riconoscere solo le dita aperte e chiuse (e nemmeno ognuna delle 5, rileva solo 3 gruppi muscolari: pollice, indice e medio insieme, anulare e mignolo insieme). Ma "AI" che analizza il segnale richiede 3 righe di codice qui e utilizza un singolo valore da ciascun canale. Credo che si possa fare molto di più analizzando le immagini spettrali a 32 bin su PC o smartphone. Inoltre, questa versione utilizza solo 3 dispositivi uECG (canali EMG). Con più canali dovrebbe essere possibile riconoscere schemi davvero complessi - ma beh, questo è il punto del progetto, fornire un punto di partenza per chiunque sia interessato:) Il controllo manuale non è sicuramente l'unica applicazione per tale sistema.
Consigliato:
Controllo del braccio robotico con TLV493D, joystick e Arduino: 3 passaggi
Controllo del braccio robotico con TLV493D, Joystick e Arduino: un controller alternativo per il tuo robot con un sensore TLV493D, un sensore magnetico con 3 gradi di libertà (x,y,z) con questi puoi controllare i tuoi nuovi progetti con la comunicazione I2C sul tuo microcontrollori e scheda elettronica che Bast P
Arduino Piano con manuale e 7 brani preimpostati: 7 passaggi
Pianoforte Arduino con manuale e 7 brani preimpostati: l'interfaccia della tastiera del pianoforte Arduino con LCD ha 2 modalità. La modalità manuale e amp; La modalità preset. Ho usato il pulsante 7 per un semplice pianoforte a 7 tasti e il pulsante 1 per la modalità di configurazione per passare a 7 brani preimpostati
Manuale di Warzone Tower Defense con Arduino Design: 5 passaggi
Manuale di Warzone Tower Defense con Arduino Design: IntroduzioneSiamo del gruppo YOJIO (studi in JI solo una volta, quindi fai tesoro.) L'istituto congiunto UM-SJTU si trova nel campus della Shanghai Jiao Tong University, Minhang, Shanghai. VG100 è il corso fondamentale di ingegneria per matricole
Controllo del braccio robotico con Zio utilizzando il controller PS2: 4 passaggi
Controlla il braccio robotico con Zio utilizzando il controller PS2: questo post sul blog fa parte della serie Zio Robotics. Introduzione Questa è la puntata finale del post "Controlla un braccio robotico con Zio". In questo tutorial, aggiungeremo un'altra parte al nostro braccio robotico. I tutorial precedenti non includono una base per il
Robot Arduino a controllo vocale + videocamera Wi-Fi + pinza + APP e utilizzo manuale e modalità di prevenzione degli ostacoli (KureBas Ver 2.0): 4 passaggi
Robot Arduino a controllo vocale + videocamera Wi-Fi + pinza + APP e utilizzo manuale e modalità di prevenzione degli ostacoli (KureBas Ver 2.0): KUREBAS V2.0 è tornato È davvero impressionante con nuove funzionalità. Ha una pinza, una telecamera Wifi e una nuova applicazione che ha prodotto per lui