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
Last synced: 6 months ago · JSON representation ·

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
Created 10 months ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

NMLHandExo

Python License: MIT Build Status Docs

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:

  1. Open nml_hand_exo.ino in the Arduino IDE.
  2. Select the correct board and port under Tools.
  3. 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

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

requirements.txt pypi
  • PyQt5 *
  • PySerial *
  • mindrove *
  • pyqtgraph *
  • scikit-learn *