Taula de continguts:
- Subministraments
- Pas 1: adquisició de senyal
- Pas 2: senyal simplificat
- Pas 3: processament del senyal
- Pas 4: Esquemes
- Pas 5: Col·locació dels sensors EMG
- Pas 6: Codi
- Pas 7: Resultats
Vídeo: Control manual de mans amb EMG: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Aquest projecte mostra el control de la mà robòtica (utilitzant la mà open source inMoov) amb 3 dispositius open source uECG que s’utilitzen per mesurar i processar l’activitat muscular (electromiograma, EMG). El nostre equip té una llarga història amb les mans i el seu control, i aquest és un bon pas en una bona direcció:)
Subministraments
3x dispositius uECG 1x Arduino (estic fent servir Nano, però la majoria dels altres funcionarien) 1x mòdul nRF24 (qualsevol genèric ho faria) 1x PCA9685 o servo controlador similar 1x inMoov hand 5x servos grans (vegeu les instruccions inMoov per a tipus compatibles) 1x alimentació 5V capaç de 5A o més actuals
Pas 1: adquisició de senyal
El control es basa en EMG: activitat elèctrica dels músculs. El senyal EMG l’obtenen tres dispositius uECG (ho sé, se suposa que és un monitor ECG, però, ja que es basa en un ADC genèric, pot mesurar qualsevol biosignal, inclòs l’EMG). Per al processament EMG, uECG té un mode especial en què envia dades d'espectre de 32 contenidors i una mitjana de "finestra muscular" (intensitat espectral mitjana entre 75 i 440 Hz). Les imatges de l’espectre semblen patrons de color verd blau que canvien amb el pas del temps. Aquí la freqüència es troba en un eix vertical (a cadascuna de les 3 parcel·les, baixa freqüència a la part inferior, alta a la part superior - de 0 a 488 Hz amb passos de ~ 15 Hz), el temps és horitzontal (dades antigues a l'esquerra en general aquí (aproximadament 10 segons a la pantalla). La intensitat es codifica amb color: blau - baix, verd - mitjà, groc - alt, vermell - fins i tot més alt.
Pas 2: senyal simplificat
Per a un reconeixement gestual fiable, cal un processament adequat d’aquestes imatges espectrals per ordinador. Però per a una simple activació de dits de mà robòtics, n'hi ha prou amb fer servir un valor mitjà en 3 canals; uECG el proporciona convenientment en determinats bytes de paquets perquè l'esbós d'Arduino pugui analitzar-lo. Aquests valors semblen molt més senzills: he adjuntat un gràfic de valors en brut del Plotter en sèrie d’Arduino. Els gràfics vermell, verd i blau són valors bruts de 3 dispositius uECG en diferents grups musculars quan estrenyo els dits polze, anell i mig corresponents. Per als nostres ulls, aquests casos clarament són diferents, però hem de convertir aquests valors en "puntuació del dit" d'alguna manera perquè un programa pugui generar valors als servos manuals. El problema és que els senyals dels grups musculars estan "barrejats": en el primer i tercer cas, la intensitat del senyal blau és aproximadament la mateixa, però el vermell i el verd són diferents. En el segon i tercer cas, els senyals verds són els mateixos, però el blau i el vermell són diferents.
Pas 3: processament del senyal
Per "desmesclar" aquests senyals, he utilitzat una fórmula relativament senzilla:
S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), on S0 - puntuació del canal 0, V0, V1, V2 - valors bruts dels canals 0, 1, 2 i a, b, c, d - coeficients que vaig ajustar manualment (a i c van ser de 0,3 a 2,0, b i d eren 15 i 20, hauríeu de canviar-los per ajustar-los a la ubicació del sensor en particular). Es va calcular la mateixa puntuació per als canals 1 i 2. Després d'això, els gràfics es van separar gairebé perfectament. Per als mateixos gestos (aquesta vegada dit anular, mitjà i després polze), els senyals són nets i es poden traduir fàcilment en moviments servo només comparant-los amb el llindar
Pas 4: Esquemes
L’esquema és bastant senzill, només necessiteu un mòdul nRF24, un controlador PCA9685 o similar I2C PWM i una font d’alimentació de 5 V d’ampli suficient per moure tots aquests servos alhora (de manera que requereix una potència nominal mínima de 5A per a un funcionament estable).
Llista de connexions: nRF24 pin 1 (GND) - Arduino's GNDnRF24 pin 2 (Vcc) - Arduino's 3.3vnRF24 pin 3 (Chip Enable) - Arduino's D9nRF24 pin 4 (SPI: CS) - Arduino's D8nRF24 pin 5 (SPI: SCK) - Arduino's D13nRF24 pin 6 (SPI: MOSI) - Arduino's D11nRF24 pin 7 (SPI: MISO) - Arduino's D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GND - G5P9 Canals PCA 0-4, a la meva notació polze - canal 0, índex - canal 1, etc.
Pas 5: Col·locació dels sensors EMG
Per obtenir lectures raonables, és important col·locar els dispositius uECG, que registren l’activitat muscular, en els llocs adequats. Tot i que aquí hi ha moltes opcions diferents, cadascuna requereix un enfocament de processament de senyal diferent, de manera que amb el meu codi és millor utilitzar una ubicació similar a les meves fotos. Pot ser contraintuïtiu, però el senyal muscular del polze és millor visible al costat oposat del braç, de manera que es col·loca un dels sensors allà, i tots es col·loquen a prop del colze (els músculs tenen la major part del cos en aquesta zona, però voleu comprovar on es troba exactament el vostre; hi ha una gran diferència individual)
Pas 6: Codi
Abans d’executar el programa principal, haureu d’esbrinar els identificadors d’unitat dels vostres dispositius uECG particulars (es fa descomentant la línia 101 i encenent els dispositius un a un, veureu l’identificació del dispositiu actual entre d’altres coses) i empleneu-los a matriu unit_ids (línia 37). A part d'això, voleu jugar amb els coeficients de fórmula (línies 129-131) i comprovar com es veu al traçador en sèrie abans de fixar-lo a la mà robòtica.
Pas 7: Resultats
Amb alguns experiments que van trigar unes 2 hores, vaig poder fer un funcionament bastant fiable (el vídeo mostra un cas típic). No es comporta perfectament i amb aquest processament només pot reconèixer els dits oberts i tancats (i ni tan sols cadascun dels 5, només detecta 3 grups musculars: polze, índex i mig junts, anell i dits petits junts). Però la "IA" que analitza el senyal pren aquí tres línies de codi i utilitza un valor únic de cada canal. Crec que es podria fer molt més analitzant imatges espectrals de 32 contenidors a l'ordinador o al telèfon intel·ligent. A més, aquesta versió només utilitza 3 dispositius uECG (canals EMG). Amb més canals hauria de ser possible reconèixer patrons realment complexos, però bé, aquest és el punt del projecte, proporcionar un punt de partida a qualsevol persona interessada:) El control manual no és definitivament l’única aplicació d’aquest sistema.
Recomanat:
Panell manual MIDI amb 19 camps de tons al costat superior i inferior : 15 passos (amb imatges)
Panell manual MIDI amb 19 camps de tons al costat superior i inferior …: Introducció Aquest és un tutorial del meu panell MIDI personalitzat amb 19 camps de tons sensibles al volum, capacitat Plug'n Play USB i molts paràmetres fàcils d'utilitzar per ajustar els coixinets per a les vostres necessitats individuals. No és una modificació guanyadora de premis de disseny
Control de llums mans lliures: 10 passos
Control de llums de mans lliures: com a la pel·lícula "Missió impossible" diu " Els temps desesperats demanen mesures desesperades " el meu germà que és a la classe 10è va tenir una idea de controlar els llums de la cuina mitjançant el telèfon en lloc d’utilitzar interruptors i el motiu
Control de persianes amb ESP8266, integració de Google Home i Openhab i control web: 5 passos (amb imatges)
Control de persianes amb ESP8266, integració de Google Home i Openhab i control web: en aquest instructiu us mostro com he afegit automatització a les meves persianes. Volia poder afegir i eliminar l’automatització, de manera que tota la instal·lació és fixa. Les parts principals són: Motor pas a pas Controlador pas a pas controlat per ESP-01 Engranatge i muntatge
Atura les mans i els peus sudats amb Sweat Fighter !: 7 passos (amb imatges)
Atura les mans i els peus sudats amb Sweat Fighter. Actualitzaré el codi per reduir aquest problema, però de moment hauríeu de deixar de construir-ho. La hiperhidrosi és una condició que provoca un excés
Ultimate Electronics Helper -- Alimentació variable de banc amb mans auxiliars: 12 passos (amb imatges)
Ultimate Electronics Helper || Alimentador de banc variable amb mans auxiliars: quan es treballa amb electrònica, sempre es necessiten dues eines. Avui crearem aquests dos elements essencials. I també farem un pas més i fusionarem aquests dos conjunts en el millor ajudant electrònic! Estic parlant, per descomptat, de