nml_hand_exo
Wrist and Finger Exo device
https://github.com/neuro-mechatronics-interfaces/nml_hand_exo
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.2%) to scientific vocabulary
Repository
Wrist and Finger Exo device
Basic Info
- Host: GitHub
- Owner: Neuro-Mechatronics-Interfaces
- License: mit
- Language: Python
- Default Branch: main
- Size: 18 MB
Statistics
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
NMLHandExo
This repository contains the firmware and Python tools for controlling the NML Hand Exoskeleton—a modular, open-source robotic hand exoskeleton platform for research and prototyping.
🚀 Overview
The NML Hand Exoskeleton includes: - 🦾 Microcontroller firmware (Arduino/C++): real-time motor control and communication. - 🐍 Python API: high-level interface for controlling the device. - 🛠️ Demo scripts: examples of using the device with real-time EMG streaming and GUI control.
Code was tested on Windows 11, Python 3.10.
Installation
1. Clone the Repository
bash
git clone https://github.com/Neuro-Mechatronics-Interfaces/NML_Hand_Exo.git
cd NML_Hand_Exo
2. Create a virtual environment (recommended)
Choose one of the following methods to create a virtual environment for this project:
- Using Anaconda :
bash
conda create -n handexo
conda activate handexo
- or using Python's virtualenv:
bash
python3 -m venv .handexo
source .handexo/bin/activate # On Linux/Mac
call .handexo/Scripts/activate # On Windows
3. Install Python dependencies
bash
pip install -r requirements.txt
For local development, you can also install the python API as a package
bash
pip install -e .
Exo Firmware
The exo device uses an openRB-150 microcontroller from ROBOTIS. The firmware is located in src/cpp/nml_hand_exo and can be uploaded via the Arduino IDE.
The firmware includes a class NMLHandExo, which handles:
- Dynamixel initialization and setup
- Motor control by ID, name, or alias
- Joint limits and angle-to-position conversion
- Calibration and LED feedback
- Serial command parsing
To upload the firmware:
- Open
nml_hand_exo.inoin the Arduino IDE. - Select the correct board and port under Tools.
- Upload the sketch.
Usage
An example of using the Python API for scripting and control: ```python from nmlhandexo.hand_exo import HandExo
exo = HandExo('COM3', baudrate=57600) exo.enablemotor(1) exo.setmotorangle(1, 45) angle = exo.getmotorangle(1) print(f"Motor angle: {angle} degrees") exo.disablemotor(1) ```
You can control the hand exoskeleton over USB or Bluetooth using simple, structured serial commands. For example:
set_angle:WRIST:30— set wrist motor to 30 degrees.enable:1— enable motor 1 torque.get_angle:1— query relative angle.
Supported aliases are THUMB, INDEX, MIDDLE, RING, PINKY, WRIST
For a complete list of commands, see the Usage Guide.
Demo
MindRove EMG Streaming

A demo script is included to showcase real-time plotting of EMG signals from a connected MindRove EMG band. 1) Connect your MindRove EMG Band to the PC (using a Wifi dongle if you want to maintain internet connection on a separate wifi network) 2) Run the demo script ~~~ python demomindroverealtime.py ~~~
📖 How to Cite
If you use this project in your research, please cite it as:
Jonathan Shulgach & Kriti Kacker. (2025). NML Hand Exoskeleton [Computer software]. https://github.com/yourusername/NMLHandExo
BibTeX: ```bibtex @misc{shulgachkacker2025nmlhandexo, author = {Jonathan Shulgach and Kriti Kacker}, title = {NML Hand Exoskeleton}, year = {2025}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/yourusername/NMLHand_Exo}} }
License
This project is licensed under the MIT License.
Owner
- Name: Neuromechatronics Lab
- Login: Neuro-Mechatronics-Interfaces
- Kind: organization
- Location: Pittsburgh, PA
- Website: https://nml-wiki.org
- Repositories: 9
- Profile: https://github.com/Neuro-Mechatronics-Interfaces
Code repos towards developing and deploying neuro-mechatronics interfaces and related experiments/simulations.
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it using the following metadata."
title: "NML Hand Exoskeleton"
authors:
- family-names: Shulgach
given-names: Jonathan
affiliation: Carnegie Mellon University
orcid: https://orcid.org/0009-0004-0449-9918
- family-names: Kacker
given-names: Kriti
affiliation: Carnegie Mellon University
date-released: "2025-05-31"
version: "0.0.2"
license: MIT
repository-code: https://github.com/Neuro-Mechatronics-Interfaces/NML_Hand_Exo
GitHub Events
Total
- Watch event: 2
- Delete event: 2
- Member event: 1
- Push event: 19
- Pull request event: 9
- Fork event: 1
- Create event: 6
Last Year
- Watch event: 2
- Delete event: 2
- Member event: 1
- Push event: 19
- Pull request event: 9
- Fork event: 1
- Create event: 6
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 0
- Total pull requests: 5
- Average time to close issues: N/A
- Average time to close pull requests: about 9 hours
- Total issue authors: 0
- Total pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 5
- Average time to close issues: N/A
- Average time to close pull requests: about 9 hours
- Issue authors: 0
- Pull request authors: 2
- Average comments per issue: 0
- Average comments per pull request: 0.0
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- Jshulgach (4)
- m053m716 (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- PyQt5 *
- PySerial *
- mindrove *
- pyqtgraph *
- scikit-learn *