Съдържание:

Роботизирано ръчно управление с ЕМГ: 7 стъпки
Роботизирано ръчно управление с ЕМГ: 7 стъпки

Видео: Роботизирано ръчно управление с ЕМГ: 7 стъпки

Видео: Роботизирано ръчно управление с ЕМГ: 7 стъпки
Видео: ВОЗНИКАЮЩИЕ УГРОЗЫ - Слушания в Сенате США по AARO / НЛО / UAP 2024, Юли
Anonim
Image
Image
Придобиване на сигнал
Придобиване на сигнал

Този проект показва управление на роботизирана ръка (използвайки отворена ръка inMoov) с 3 UECG устройства с отворен код, използвани за измерване и обработка на мускулна активност (електромиограма, ЕМГ). Нашият екип има дълга история с ръце и техен контрол и това е добра стъпка в правилната посока:)

Консумативи

3x uECG устройства 1x Arduino (използвам Nano, но повечето други биха работили) 1x nRF24 модул (всеки генеричен такъв би направил) 1x PCA9685 или подобен серво драйвер 1x inMoov ръчно 5x големи сервоустройства (вижте inMoov инструкции за съвместими типове) 1x 5V захранване, способно да 5А или повече ток

Стъпка 1: Придобиване на сигнал

Контролът се основава на ЕМГ - електрическа активност на мускулите. ЕМГ сигналът се получава от три uECG устройства (знам, че трябва да е ЕКГ монитор, но тъй като се основава на генеричен ADC, той може да измерва всякакви биосигнали - включително ЕМГ). За обработка на ЕМГ uECG има специален режим, в който изпраща 32-битови спектърни данни и среден "прозорец на мускулите" (среден спектрален интензитет между 75 и 440 Hz). Изображенията на спектъра изглеждат като синьо-зелени шарки, които се променят с течение на времето. Тук честотата е по вертикална ос (на всяка от 3 графики, ниска честота в долната част, висока отгоре - от 0 до 488 Hz със стъпки ~ 15 Hz), времето е хоризонтално (старите данни вляво като цяло тук е около 10 секунди на екрана). Интензитетът е кодиран с цвят: син - нисък, зелен - среден, жълт - висок, червен - още по -висок.

Стъпка 2: Опростен сигнал

Опростен сигнал
Опростен сигнал

За надеждно разпознаване на жестове е необходима подходяща компютърна обработка на тези спектрални изображения. Но за просто активиране на роботизирани пръсти на ръцете, достатъчно е просто да използвате усреднена стойност на 3 канала - uECG удобно го предоставя в определени байтове на пакета, така че скицата на Arduino може да го анализира. Тези стойности изглеждат много по -прости - прикачих диаграма на суровите стойности от серийния плотер на Arduino. Червените, зелените, сините диаграми са сурови стойности от 3 уЕКГ устройства на различни мускулни групи, когато стискам съответно палеца, безименния и средния пръст. За нашето око тези случаи очевидно са различни, но трябва по някакъв начин да превърнем тези стойности в „оценка на пръста“, така че дадена програма да може да извежда стойности към ръчни сервомотори. Проблемът е, че сигналите от мускулните групи са "смесени": в първия и третия случай интензивността на синия сигнал е приблизително еднаква - но червеното и зеленото са различни. Във втория и третия случай зелените сигнали са еднакви - но сините и червените са различни.

Стъпка 3: Обработка на сигнала

Обработка на сигнала
Обработка на сигнала

За да "демиксирам" тези сигнали, използвах сравнително проста формула:

S0 = V0^2 / ((V1 * a0 +b0) (V2 * c0 +d0)), където S0 - оценка за канал 0, V0, V1, V2 - необработени стойности за канали 0, 1, 2 и а, b, c, d - коефициентите, които коригирах ръчно (a и c бяха от 0,3 до 2,0, b и d бяха 15 и 20, така или иначе ще трябва да ги промените, за да се настроят за вашето конкретно разположение на сензора). Същият резултат беше изчислен за канали 1 и 2. След това диаграмите станаха почти перфектно разделени. За същите жестове (този път безименният, средният и след това палецът) сигналите са ясни и могат лесно да бъдат преведени в серво движения само чрез сравняване с прага

Стъпка 4: Схеми

Схеми
Схеми

Схемите са доста прости, имате нужда само от модул nRF24, PCA9685 или подобен I2C PWM контролер и захранване с висок усилвател 5V, което би било достатъчно, за да преместите всички тези сервоустройства наведнъж (така че изисква поне 5А номинална мощност за стабилна работа).

Списък на връзките: nRF24 пин 1 (GND) - Arduino's GNDnRF24 пин 2 (Vcc) - 3.3vnRF24 пин 3 на Arduino (Chip Enable) - D9nRF24 пин 4 на Arduino (SPI: CS) - D8nRF24 пин на Arduino 5 (SPI: SCK) - Arduino D13nRF24 пин 6 (SPI: MOSI) - D11nRF24 пин 7 на Arduino (SPI: MISO) - D12PCA9685 SDA на Arduino - A4PCA9685 SCL на Arduino - A5PCA9685 Vcc на Arduino - 5vPCA9685 на Arduino - GND GNDV96 GND - GNDV96 GNDV96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND - GNDP96 GND GNS PCA канали 0-4, в нотацията ми палец - канал 0, показалец - канал 1 и т.н.

Стъпка 5: Поставяне на EMG сензори

Поставяне на ЕМГ сензори
Поставяне на ЕМГ сензори
Поставяне на ЕМГ сензори
Поставяне на ЕМГ сензори

За да получите разумни показания, важно е да поставите uECG устройства, които записват мускулната активност, на правилните места. Въпреки че тук са възможни много различни опции, всеки изисква различен подход за обработка на сигнала - така че с моя код е най -добре да използвам разположение, подобно на моите снимки. Може да е контраинтуитивно, но мускулният сигнал на палеца е по -добре видим от противоположната страна на ръката, така че един от сензорите е поставен там и всички те са поставени близо до лакътя (мускулите имат по -голямата част от тялото си в тази област, но искате да проверите къде точно се намират вашите - има доста голяма индивидуална разлика)

Стъпка 6: Код

Преди да стартирате основната програма, ще трябва да разберете идентификационните номера на единиците на вашите конкретни устройства UECG (това се прави чрез декомментиране на ред 101 и включване на устройства едно по едно, наред с други неща ще видите ID на текущото устройство) и ги попълнете в unit_ids масив (ред 37). Освен това искате да играете с коефициенти на формула (редове 129-131) и да проверите как изглежда на серийния плотер, преди да го прикрепите към роботизираната ръка.

Стъпка 7: Резултати

С някои експерименти, които отнеха около 2 часа, успях да получа доста надеждна работа (видеото показва типичен случай). Той се държи не перфектно и с тази обработка може да разпознае само отворени и затворени пръсти (и дори не всяка от 5 -те, той открива само 3 мускулни групи: палец, показалец и средна заедно, безименни и малки пръсти заедно). Но "AI", който анализира сигнала, взема 3 реда код тук и използва една стойност от всеки канал. Вярвам, че може да се направи много повече чрез анализиране на 32-битови спектрални изображения на компютър или смартфон. Също така тази версия използва само 3 uECG устройства (EMG канали). С повече канали би трябвало да е възможно да се разпознаят наистина сложни модели - но добре, това е смисълът на проекта, за да осигури някаква отправна точка за всеки, който се интересува:) Ръчният контрол определено не е единственото приложение за такава система.

Препоръчано: