Skip to content

ultimaterobotics/uMyo_python_tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ”‹ uMyo Python Tools โšก

Professional EMG sensor toolkit for real-time biomedical applications

License: MIT Python 3.7+ Real-time Docs

Transform muscle signals into powerful applications with cutting-edge EMG sensor technology

๐Ÿš€ Quick Start โ€ข ๐Ÿ“– Documentation โ€ข โ“ FAQ โ€ข ๐Ÿค Contributing


โœจ What is uMyo?

uMyo is a revolutionary wireless EMG sensor ecosystem that bridges the gap between human biology and digital technology. Each compact sensor combines:

๐Ÿง  EMG Electrodes โ†’ Capture electrical signals from muscle contractions
๐Ÿ“ก 9-DOF IMU โ†’ Track 3D orientation with precision accelerometer, gyroscope, and magnetometer
โšก Wireless Communication โ†’ High-speed data transmission to USB base station
๐Ÿ”‹ Extended Battery Life โ†’ Optimized power management for hours of operation
๐ŸŒ Multi-sensor Networks โ†’ Connect up to 64 sensors for complex gesture recognition

Perfect for researchers, developers, and engineers creating next-generation applications in prosthetics, VR/AR, robotics, and assistive technology.

๐ŸŒŸ Key Features

๐Ÿ“ก Real-time Data

  • High-Speed Serial: 921.6k baud USB interface
  • Multi-Device: Up to 64 sensors simultaneously
  • Low Latency: <5ms end-to-end processing
  • Robust Protocol: Automatic error correction

๐Ÿง  Advanced Processing

  • EMG Analysis: Real-time muscle activity processing
  • Frequency Spectrum: 16-band spectral decomposition
  • 3D Orientation: Professional quaternion mathematics
  • Sensor Fusion: IMU data integration

๐ŸŽฎ Rich Applications

  • Gesture Control: EMG-based mouse interface
  • 3D Visualization: Real-time signal plotting
  • CAD Integration: Direct FreeCAD control
  • Assistive Tech: Accessibility applications

๐Ÿš€ Quick Start

Installation

# Create virtual environment (recommended)
python -m venv umyo_env
source umyo_env/bin/activate  # On Windows: umyo_env\Scripts\activate

# Install dependencies
pip install pyserial pygame matplotlib pyautogui numpy bleak

Connection Options

๐Ÿ”Œ USB Dongle (Traditional)

# Connect via USB dongle (921.6k baud)
import serial
from serial.tools import list_ports

port = list(list_ports.comports())[-1].device
ser = serial.Serial(port, 921600, timeout=0)

Test Connection

# test_umyo.py - Verify your setup in 30 seconds
import umyo_parser
import serial
from serial.tools import list_ports
import time

# Connect to uMyo sensor
ports = list(list_ports.comports())
ser = serial.Serial(ports[-1].device, 921600, timeout=0)

print("๐Ÿ” Searching for uMyo sensors...")
for _ in range(100):  # 10 seconds at ~10Hz
    if ser.in_waiting > 0:
        data = ser.read(ser.in_waiting)
        umyo_parser.umyo_parse_preprocessor(data)
        
        devices = umyo_parser.umyo_get_list()
        if devices:
            device = devices[0]
            print(f"โœ… Found sensor {device.unit_id:08X}")
            print(f"๐Ÿ”‹ Battery: {device.batt}mV | ๐Ÿ“ถ RSSI: {device.rssi}")
            print(f"๐Ÿ’ช EMG: {device.data_array[-1]} | ๐ŸŒ Orientation: {device.Qsg}")
            break
    time.sleep(0.1)

Try the Applications

# ๐Ÿ–ฑ๏ธ Gesture-based mouse control with calibration (USB)
python umyo_mouse.py

# ๐Ÿ“Š Real-time 3-channel EMG visualization  
python umyo_3ch_detector.py

# ๐Ÿ”ง Multi-sensor development interface
python serial_test.py

๐Ÿ“ Project Structure

uMyo_python_tools/
โ”œโ”€โ”€ ๐Ÿ  Core System
โ”‚   โ”œโ”€โ”€ umyo_class.py          # Device data model & sensor representation
โ”‚   โ”œโ”€โ”€ umyo_parser.py         # Protocol parsing & device management  
โ”‚   โ””โ”€โ”€ quat_math.py           # 3D orientation mathematics
โ”‚
โ”œโ”€โ”€ ๐ŸŽฎ Applications  
โ”‚   โ”œโ”€โ”€ umyo_mouse.py          # ๐Ÿ–ฑ๏ธ Gesture-based mouse control (USB)
โ”‚   โ”œโ”€โ”€ umyo_bluetooth_mouse.py # ๐Ÿ–ฑ๏ธ Gesture-based mouse control (Bluetooth)
โ”‚   โ”œโ”€โ”€ umyo_3ch_detector.py   # ๐Ÿ“Š Multi-channel EMG analysis
โ”‚   โ”œโ”€โ”€ umyo_freecad.py        # ๐Ÿ”ง CAD software integration
โ”‚   โ””โ”€โ”€ umyo_testing.py        # ๐Ÿงช Development & validation
โ”‚
โ”œโ”€โ”€ ๐Ÿ“Š Visualization
โ”‚   โ”œโ”€โ”€ display_stuff.py       # Multi-sensor data visualization
โ”‚   โ”œโ”€โ”€ display_mouse.py       # Mouse control UI & calibration
โ”‚   โ”œโ”€โ”€ display_3ch.py         # Three-channel signal display
โ”‚   โ””โ”€โ”€ parse_plot_data.py     # Matplotlib real-time plotting
โ”‚
โ”œโ”€โ”€ ๐Ÿ”ง Utilities
โ”‚   โ”œโ”€โ”€ bootloader_usb.py      # Firmware upload & programming
โ”‚   โ””โ”€โ”€ serial_test.py         # Serial communication testing
โ”‚
โ””โ”€โ”€ ๐Ÿ“š Documentation
    โ”œโ”€โ”€ docs/api-reference.md     # Complete API documentation
    โ”œโ”€โ”€ docs/umyo_class.md        # uMyo class specifications
    โ”œโ”€โ”€ docs/optimization_analysis.md # Performance optimization
    โ”œโ”€โ”€ docs/FAQ.md               # Frequently asked questions
    โ””โ”€โ”€ docs/contributing.md      # Development guidelines

๐ŸŽฏ Application Showcase

๐Ÿ–ฑ๏ธ Gesture Mouse Control

# Transform arm movements into cursor control
python umyo_mouse.py
  • Multi-modal input: EMG + 3D orientation
  • Adaptive calibration: Personalized thresholds
  • Real-time feedback: Visual control indicators
  • Safety features: Emergency stop mechanisms

Perfect for: Accessibility applications, hands-free computing, assistive technology

๐Ÿ“Š Multi-Channel Analysis

# Monitor 3 muscle groups simultaneously
python umyo_3ch_detector.py
  • Spectral analysis: Mid-frequency band focus
  • Signal processing: Exponential smoothing
  • Visual feedback: Real-time bar visualization
  • Research ready: Clinical data collection

Perfect for: Prosthetic control, rehabilitation, sports science

๐Ÿ”ง CAD Integration

# Control 3D models with hand gestures
python umyo_freecad.py
  • FIFO communication: Real-time orientation streaming
  • 3D manipulation: Intuitive gesture-based control
  • Professional workflow: Direct FreeCAD integration
  • Educational tool: Tangible 3D learning

Perfect for: Design workflows, education, accessibility

๐Ÿงช Development Platform

# Advanced multi-sensor visualization
python serial_test.py
  • 64-sensor support: Comprehensive device monitoring
  • Performance metrics: Real-time diagnostics
  • Flexible visualization: Multiple display modes
  • Debug tools: Development & troubleshooting

Perfect for: Research, algorithm development, testing

๐Ÿ“š Documentation & Resources

Complete Documentation

๐ŸŽฏ Quick Links


โฌ† Back to Top โ€ข ๐Ÿ“– Documentation โ€ข ๐Ÿš€ Get Started

Empowering the future of human-computer interaction through biomedical sensing

quat_math.py - 3D Mathematics Foundation

Purpose: Professional-grade quaternion mathematics library for precise 3D orientation calculations and spatial transformations.

Mathematical Foundations:

  • Quaternion Algebra: Complete implementation of quaternion arithmetic
  • Rotation Mathematics: Efficient 3D vector rotation using quaternion operations
  • Numerical Stability: Normalized operations to prevent accumulation errors
  • Geometric Conversions: Seamless conversion between rotation representations

Core Data Types:

sV = namedtuple("sV", "x y z")        # 3D Vector (x, y, z)
sQ = namedtuple("sQ", "w x y z")      # Quaternion (w + xi + yj + zk)

Essential Functions:

Quaternion Operations:

  • q_norm(q): Computes quaternion magnitude (|q| = โˆš(wยฒ + xยฒ + yยฒ + zยฒ))
  • q_renorm(q): Normalizes quaternion to unit length for valid rotations
  • q_make_conj(q): Computes quaternion conjugate (w, -x, -y, -z)
  • q_mult(q1, q2): Quaternion multiplication for rotation composition

Vector Operations:

  • v_norm(v): Vector magnitude calculation
  • v_renorm(v): Vector normalization to unit length
  • v_mult(v1, v2): Cross product for perpendicular vector calculation
  • v_dot(v1, v2): Dot product for angle and projection calculations

Spatial Transformations:

  • rotate_v(q, v): Rotates 3D vector by quaternion (v' = q * v * q*)
  • q_from_vectors(u, v): Computes quaternion rotation between two vectors

Applications in uMyo System:

  • Sensor Fusion: Combines accelerometer and magnetometer readings
  • Orientation Tracking: Maintains absolute orientation reference
  • Gesture Recognition: Calculates relative rotations for gesture detection
  • Calibration: Establishes reference frames for user-specific setups

๐ŸŽฎ End-User Applications

umyo_mouse.py - Advanced Gesture-Based Mouse Control

Purpose: A complete human-computer interface that translates muscle contractions and arm movements into precise computer mouse control.

System Architecture:

  • Multi-modal Input: Combines EMG signals with 3D orientation for rich interaction
  • Adaptive Calibration: User-specific threshold learning for personalized control
  • Real-time Processing: Sub-10ms latency for responsive user experience
  • Safety Features: Fail-safe mechanisms to prevent unintended actions

Control Modalities:

Movement Control:

  • Orientation Mapping: Arm rotation directly controls cursor position
  • Sensitivity Scaling: Adjustable gain for fine vs. coarse control
  • Dead Zone: Configurable center region to prevent drift
  • Smoothing: Low-pass filtering for steady cursor movement

Click Detection:

  • EMG Thresholding: Muscle contraction intensity triggers mouse clicks
  • Temporal Logic: Prevents accidental double-clicks with timing constraints
  • Multi-muscle Support: Different muscles can trigger different click types

Scroll Control:

  • Wrist Rotation: Z-axis rotation maps to scroll wheel movement
  • Proportional Control: Rotation speed determines scroll rate
  • Bidirectional: Clockwise/counterclockwise for up/down scrolling

Calibration Workflow:

  1. Center Position: Establishes neutral orientation reference
  2. X-Axis Mapping: User moves right to define horizontal control axis
  3. Y-Axis Mapping: User moves up to define vertical control axis
  4. Z-Axis Mapping: User rotates wrist to define scroll axis
  5. Muscle Calibration: Records relaxed and active EMG thresholds
  6. Validation: Real-time testing of all control modalities

๐ŸŒŸ Acknowledgments

Made with โค๏ธ by Ultimate Robotics

About

Python stuff for working with uMyo via USB base station

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages