Оглавление:

Роботизированное ручное управление с помощью ЭМГ: 7 шагов
Роботизированное ручное управление с помощью ЭМГ: 7 шагов

Видео: Роботизированное ручное управление с помощью ЭМГ: 7 шагов

Видео: Роботизированное ручное управление с помощью ЭМГ: 7 шагов
Видео: 32 Вещи с AliExpress, От Которых ТЫ ОФИГЕЕШЬ Безумные Вещи с Алиэкспресс 2024, Ноябрь
Anonim
Image
Image
Получение сигнала
Получение сигнала

В этом проекте показано управление роботизированной рукой (с использованием руки с открытым исходным кодом в 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 аппарата УЭКГ (каналы ЭМГ). С большим количеством каналов должно быть возможно распознавать действительно сложные шаблоны - но что ж, в этом и заключается суть проекта, предоставить некоторую отправную точку для всех, кто интересуется:) Ручное управление определенно не единственное приложение для такой системы.

Рекомендуемые: