paulrozhkin / arm_prosthesis_raspberry

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HandControl

Контроллер управления протезом руки человека

Description

Проект содержит программное обеспечение для Raspberry Pi Zero W, реализующие логику бионического протеза руки человека. Краткое описание функциональных возможностей:

  • Исполнение жестов протеза
  • Взаимодействие с внешними системами по Bluetooth (передача данных в protobuf структурах через самописный протокол)
  • Обработка показаний миоэлектрических датчиков и выделение паттернов жестов. Количество распознаваемых паттернов 2.
  • Передача управляющих команд для установки положения линейных двигателей по интерфейсу SPI на контроллер линейных приводов

Схема контроллера доступна в репозитории RaspberryProsthesisCircuit

Linked Repositories


Architecture

Программное обеспечение контроллера представлено в виде уровневой архитектуры. За счет того, что в проекте используется Raspberry Pi Zero W с операционной системой Raspberry Pi Os, то в разработке уровеня драйверов и оборудования нет необходимости. Исключением является внешнее АЦП для которого используется пакет Adafruit_ADS1x15. На уровне HAL имеются различные сервисы для более удобной и абстрактной работы с оборудования, там происходит преобразование данных из бинарного формата в доменные объекты.

Architecture

Уровень программного обеспечения представлен в виде сети процессов Кана. Каждая функция протеза является отдельным потоком, взаимодействие с которым происходит с помощью очередей Python Queue. Так, имеются потоки для исполнения жестов, обработки команд, телеметрии. Наиболее интересным потоком является поток распознавания миоэлектрических паттернов P5.

DFD

Распознавание миоэлектрических паттернов осуществляется следующим образом: происходит считывания ЭМГ показаний с частотой 100-130Гц с одноканального электрода. В потоке ЭМГ данный происходит выделение сигнала паттерна за счет расчета среднего по окну из 5 элементов с пороговым значением 400. Над полученным сигналом проводится сегментирования на 10 сегментов и пока каждому сегменту происходит извлечение MAV (mean absolute value) признаков. Полученные признаки передаются в обученную KNN сеть с 10 входами и 2 выходами. KNN сеть обучена для двух паттернов: медленного и резкого сгибания мышц руки. В результате точность для двух паттернов достигает свыше 95%, а среднее время распознавания – 16мс, что позволяет использовать алгоритм в реальном времени.


License

License

About

License:MIT License


Languages

Language:Python 99.6%Language:PowerShell 0.4%