Оглавление:
- Запасы
- Шаг 1: получение сигнала
- Шаг 2: упрощенный сигнал
- Шаг 3: обработка сигнала
- Шаг 4: Схема
- Шаг 5: Размещение датчиков ЭМГ
- Шаг 6: Код
- Шаг 7: Результаты
Видео: Роботизированное ручное управление с помощью ЭМГ: 7 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом проекте показано управление роботизированной рукой (с использованием руки с открытым исходным кодом в Moov) с помощью трех устройств УЭКГ с открытым исходным кодом, используемых для измерения и обработки мышечной активности (электромиограмма, ЭМГ). У нашей команды долгая история с руками и их контролем, и это хороший шаг в правильном направлении:)
Запасы
3 устройства uECG 1 x Arduino (я использую Nano, но большинство других подойдут) 1x модуль nRF24 (подойдет любой общий) 1x PCA9685 или аналогичный сервопривод 1x inMoov hand 5x больших сервоприводов (см. Инструкции inMoov для совместимых типов) 1x источник питания 5 В, способный Ток 5А или более
Шаг 1: получение сигнала
Управление основано на ЭМГ - электрической активности мышц. Сигнал ЭМГ получается с помощью трех устройств УЭКГ (я знаю, что это должен быть монитор ЭКГ, но, поскольку он основан на общем АЦП, он может измерять любые биосигналы, включая ЭМГ). Для обработки ЭМГ у ЭКГ есть специальный режим, в котором он отправляет данные спектра с 32 ячейками и среднее значение «мышечного окна» (средняя спектральная интенсивность между 75 и 440 Гц). Спектральные изображения выглядят как сине-зеленые узоры, которые меняются со временем. Здесь частота находится по вертикальной оси (на каждом из 3 графиков, низкая частота внизу, высокая вверху - от 0 до 488 Гц с шагом ~ 15 Гц), время по горизонтали (здесь старые данные слева в целом на экране около 10 секунд). Интенсивность кодируется цветом: синий - низкий, зеленый - средний, желтый - высокий, красный - еще более высокий.
Шаг 2: упрощенный сигнал
Для надежного распознавания жестов требуется правильная обработка этих спектральных изображений на ПК. Но для простой активации пальцев руки робота достаточно просто использовать усредненное значение по 3 каналам - uECG удобно предоставляет его в определенных байтах пакета, чтобы скетч Arduino мог его проанализировать. Эти значения выглядят намного проще - я приложил таблицу исходных значений из последовательного плоттера Arduino. Красные, зеленые и синие диаграммы - это необработанные значения с трех аппаратов ЭКГ для разных групп мышц, когда я сжимаю соответственно большой, безымянный и средний пальцы. Для нашего глаза эти случаи явно различны, но нам нужно каким-то образом превратить эти значения в «оценку пальца», чтобы программа могла выводить значения на ручные сервоприводы. Проблема в том, что сигналы от групп мышц «смешанные»: в 1-м и 3-м случаях интенсивность синего сигнала примерно одинакова, а красный и зеленый - разные. Во 2-м и 3-м случаях зеленые сигналы одинаковы, но синий и красный разные.
Шаг 3: обработка сигнала
Чтобы «разделить» эти сигналы, я использовал относительно простую формулу:
S0 = V0 ^ 2 / ((V1 * a0 + b0) (V2 * c0 + d0)), где S0 - оценка для канала 0, V0, V1, V2 - исходные значения для каналов 0, 1, 2 и a, b, c, d - коэффициенты, которые я скорректировал вручную (a и c были от 0,3 до 2,0, b и d были 15 и 20, вам все равно нужно будет изменить их, чтобы отрегулировать положение вашего конкретного датчика). Одинаковая оценка была рассчитана для каналов 1 и 2. После этого графики стали почти идеально разделенными. Для одних и тех же жестов (на этот раз безымянный палец, средний, а затем большой палец) сигналы четкие и могут быть легко преобразованы в движения сервопривода, просто сравнив с порогом.
Шаг 4: Схема
Схема довольно проста, вам нужен только модуль nRF24, PCA9685 или аналогичный контроллер I2C PWM и источник питания с высоким усилителем 5 В, которого было бы достаточно для перемещения всех этих сервоприводов одновременно (поэтому для стабильной работы требуется номинальная мощность не менее 5 А).
Список подключений: nRF24 контакт 1 (GND) - Arduino GNDnRF24 контакт 2 (Vcc) - Arduino 3.3vnRF24 контакт 3 (Chip Enable) - Arduino D9nRF24 контакт 4 (SPI: CS) - Arduino D8nRF24 контакт 5 (SPI: SCK) - Arduino D13nRF24, контакт 6 (SPI: MOSI) - Arduino D11nRF24, контакт 7 (SPI: MISO) - Arduino D12PCA9685 SDA - Arduino's A4PCA9685 SCL - Arduino's A5PCA9685 Vcc - Arduino's 5vPCA9685 GNDPC - High: amp: 5vPCA9685 GNDPC - Arduino - high: amp: amp 5vPCA9685 GNDPC - Arduino: high: amp: 5vPCA9685 GNDPC - Arduino PCA каналы 0-4, в моих обозначениях большой палец - канал 0, указательный палец - канал 1 и т. Д.
Шаг 5: Размещение датчиков ЭМГ
Чтобы получить разумные показания, важно размещать устройства ЭКГ, которые регистрируют мышечную активность, в нужных местах. Хотя здесь возможно множество различных вариантов, каждый требует разного подхода к обработке сигнала, поэтому с моим кодом лучше всего использовать размещение, подобное моим фотографиям. Это может показаться нелогичным, но сигнал мышцы большого пальца лучше виден на противоположной стороне руки., поэтому один из датчиков размещен там, и все они расположены близко к локтю (мышцы имеют большую часть своего тела в этой области, но вы хотите проверить, где именно находится ваш - есть довольно большая индивидуальная разница)
Шаг 6: Код
Перед запуском основной программы вам нужно будет узнать идентификаторы устройств ваших конкретных устройств УЭКГ (это делается раскомментированием строки 101 и включением устройств одно за другим, среди прочего вы увидите идентификатор текущего устройства) и заполните их в Массив unit_ids (строка 37). Помимо этого, вы хотите поиграть с коэффициентами формулы (строки 129–131) и проверить, как это выглядит на последовательном плоттере, прежде чем прикреплять его к руке робота.
Шаг 7: Результаты
Проведя несколько экспериментов, которые длились около 2 часов, я смог получить достаточно надежную работу (видео показывает типичный случай). Он ведет себя не идеально и с этой обработкой может распознавать только открытые и закрытые пальцы (и даже не каждую из 5, он обнаруживает только 3 группы мышц: большой, указательный и средний вместе, безымянный и мизинец вместе). Но «AI», который анализирует сигнал, берет здесь 3 строки кода и использует одно значение из каждого канала. Я считаю, что можно сделать гораздо больше, анализируя 32-бинарные спектральные изображения на ПК или смартфоне. Также в этой версии используются всего 3 аппарата УЭКГ (каналы ЭМГ). С большим количеством каналов должно быть возможно распознавать действительно сложные шаблоны - но что ж, в этом и заключается суть проекта, предоставить некоторую отправную точку для всех, кто интересуется:) Ручное управление определенно не единственное приложение для такой системы.
Рекомендуемые:
ДВИГАТЕЛЬ ПОСТОЯННОГО ТОКА Управление жестами рук и управление скоростью и направлением с помощью Arduino: 8 шагов
ДВИГАТЕЛЬ ПОСТОЯННОГО ТОКА Управление жестами рук, скорость и направление с помощью Arduino: в этом руководстве мы узнаем, как управлять двигателем постоянного тока с помощью жестов рук с помощью Arduino и Visuino. Посмотрите видео! Также ознакомьтесь с этим: Учебное пособие по жестам руки
Управление яркостью Управление светодиодами на основе ШИМ с помощью кнопок, Raspberry Pi и Scratch: 8 шагов (с изображениями)
Управление яркостью Управление светодиодами на основе ШИМ с помощью кнопок, Raspberry Pi и Scratch: я пытался найти способ объяснить своим ученикам, как работает ШИМ, поэтому я поставил себе задачу попытаться управлять яркостью светодиода с помощью 2 кнопок - одна кнопка увеличивает яркость светодиода, а другая - затемняет. Чтобы запрограммировать
Интернет вещей: управление объективом HoloLens с помощью бровей (ЭМГ): 5 шагов
Интернет вещей: управление объективом HoloLens с помощью бровей (EMG): этот проект был частью проекта NASA SUITS Университета Колорадо в Боулдере, который был представлен и протестирован в НАСА в апреле 2019 года. В этом году в проекте я руководил аппаратным обеспечением. разработка, и это был один из моих вкладов
Роботизированное устройство поколения 2 (физиотерапия): 7 шагов (с изображениями)
Роботизированное устройство поколения 2 (физиотерапия): краткое изложение: цель поколения 2 - помочь двигать запястье пациента, которое было повреждено в результате несчастного случая, путем вытягивания руки внутрь и наружу. Изначально Gen 2 создавался для конкурса AT&T 2017 Developer Summit, затем я решил сделать
Роботизированное сердце - вы можете сделать продукт !: 7 шагов (с картинками)
Сердце робота - вы можете сделать продукт !: Когда вы покупаете электронику, она редко бывает в виде голой печатной платы. По разным причинам печатная плата находится в корпусе. Итак, в этом руководстве я покажу, как вы можете взять идею и превратить ее в продукт (иш)! Пайка SMD может показаться сложной задачей, но я обещаю вам