Taula de continguts:

Control manual de mans amb EMG: 7 passos
Control manual de mans amb EMG: 7 passos

Vídeo: Control manual de mans amb EMG: 7 passos

Vídeo: Control manual de mans amb EMG: 7 passos
Vídeo: Музыкальный Hi-Fi центр Technics SC-EH60 (стереосистема). Японское качество! Лучшая акустика 90-х. 2024, Juliol
Anonim
Image
Image
Adquisició de senyals
Adquisició de senyals

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

Senyal simplificat
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

Processament de senyals
Processament de senyals

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

Esquemes
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

Col·locació de sensors EMG
Col·locació de sensors EMG
Col·locació de sensors EMG
Col·locació de 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: