shayanalibhatti/Finger-Movement-Classification-via-Machine-Learning-using-EMG-Armband-for-3D-Printed-Robotic-Hand

机器人 3/5 🧩 软硬件结合 已发布
shayanalibhatti 112 Stars 未知 BOM 完整度: 0/5 教程完整度: 0/5
shayanalibhatti/Finger-Movement-Classification-via-Machine-Learning-using-EMG-Armband-for-3D-Printed-Robotic-Hand

项目简介

This repository shows how to classify EMG data coming from Myo Armband using neural networks and interface a 3d printed


这是一个将肌电信号(EMG)与机器学习相结合,用于控制3D打印机械手的开源项目。其核心功能是通过Myo手势控制臂环采集前臂的8通道表面肌电信号,利用神经网络对5种或12种手指动作进行分类,并将识别结果通过蓝牙发送给Arduino驱动的3D打印机械手,实现实时模仿。项目主要特点在于提供了一套“快速且计算成本低”的解决方案:采用单隐层神经网络(8个神经元,ReLU激活函数),对原始EMG信号取绝对值后进行窗口大小为50的滑动平均作为特征,训练过程仅需5秒静态数据采集,避免了传统方法中冗长的训练流程。技术栈方面,Python端依赖Niklas Rosenstein的Myo-Python库进行数据读取,使用Keras构建和训练神经网络;硬件端涉及Myo臂环、Arduino Uno、HC-05蓝牙模块、Futaba S3114舵机及舵机驱动板。该项目解决了两个关键问题:一是EMG信号随机性强、难以区分细微手指动作的难题;二是为低成本假肢或机器人控制提供了一种无需昂贵设备、可快速部署的轻量级分类方案。适用场景包括:智能假肢的原型开发、人机交互教学演示、以及需要手势控制的低成本机器人项目。需要注意的是,由于训练和验证时要求手臂保持静止,该方法更适合静态或准静态环境下的手势识别。项目附带了完整的硬件设计文件(3D打印手部模型)、Python训练代码和Arduino控制代码,并提供了论文链接供学术引用。

标签

项目特点

**快速训练**:只需5秒静态数据采集即可完成模型训练,无需长时间重复动作。
**低成本计算**:采用单隐层神经网络(8个神经元,ReLU激活函数),对原始EMG信号取绝对值后做窗口大小为50的滑动平均作为特征,计算量小。
**实时控制**:通过蓝牙将识别结果发送给Arduino驱动的3D打印机械手,实现实时手势模仿。
**多手势识别**:支持5种或12种手指动作分类,覆盖常见手势需求。
**开源可复现**:提供完整的Python端数据采集、训练、推理代码,以及Arduino端控制代码和3D打印模型文件。
**硬件兼容性好**:基于Myo臂环(8通道EMG传感器)和Arduino开发板,3D打印手部模型可自行打印组装。

技术规格

EMG传感器 Myo手势控制臂环,8通道表面肌电信号
采样率 200 Hz(Myo臂环默认)
特征提取 原始信号取绝对值 + 窗口大小为50的滑动平均
神经网络结构 单隐层,8个神经元,ReLU激活函数
输出类别 5种或12种手指动作
训练数据采集时间 5秒静态数据
通信方式 蓝牙(Myo臂环→PC/Arduino)
控制板 Arduino(具体型号未指定,推荐Arduino Uno或兼容板)
机械手 3D打印手指结构,由Arduino驱动舵机控制
软件依赖 Python 3.x,Myo-Python库,TensorFlow/Keras(或轻量级ML库)

项目资源

物料清单 (BOM)

物料名称 数量 参考价格 备注
Myo手势控制臂环 1 8通道EMG,蓝牙通信
Arduino开发板 1 推荐Arduino Uno或兼容型号
舵机(SG90或类似) 5-12 每个手指一个,具体数量取决于手指设计
3D打印机械手组件 1套 包括手指、手掌、底座等STL文件
5V电源适配器或电池组 1 为Arduino和舵机供电
杜邦线/跳线 若干 连接Arduino与舵机
蓝牙模块(HC-05/HC-06) 1 若Arduino无内置蓝牙,用于接收PC端指令

能力画像

**记忆与知识检索**:3/5 — 需要了解肌电信号基础、机器学习分类原理和Arduino编程,但项目文档和代码结构清晰,可快速查阅。
**动手与操作**:4/5 — 需要组装3D打印机械手、焊接电路、连接舵机和传感器,对动手能力有一定要求。
**编程与算法**:3/5 — Python端涉及数据采集、特征提取和神经网络训练,Arduino端需编写舵机控制逻辑,但代码量不大且注释完整。
**设计与建模**:2/5 — 机械手模型已提供STL文件,无需自行设计,但如需修改手指结构或增加自由度则需要3D建模能力。
**实验与调试**:4/5 — 需要调试EMG信号采集质量、模型分类准确率、蓝牙通信稳定性以及机械手动作同步,实验环节较多。
**协作与分享**:2/5 — 项目为个人开源作品,社区贡献较少,但可自行fork改进并分享。
**学习与研究**:4/5 — 适合学习EMG信号处理、轻量级机器学习部署、嵌入式控制等交叉领域知识。
**系统集成**:4/5 — 需要将传感器、PC端算法、无线通信、Arduino控制、机械执行器整合为一个完整闭环系统。

所需技能

基础Python编程(数据处理、机器学习库使用) 基础Arduino编程(舵机控制、串口/蓝牙通信) 3D打印操作(切片、打印、后处理) 电路连接与焊接(杜邦线、电源、舵机接线) 肌电信号基础知识(EMG采集、噪声处理) 机器学习基础(分类模型、特征提取、训练流程) 蓝牙通信配置(Myo臂环配对、HC-05/HC-06设置)

适用场景

低成本假肢或辅助设备原型开发
肌电信号与人机交互的教学实验项目
机器人手势控制的快速原型验证
嵌入式机器学习(TinyML)入门实践
康复训练中的手势识别反馈系统
创客空间或高校实验室的交叉学科项目