Skip to main content

Python bindings for the Myo SDK

Myo-Python is a CFFI wrapper for the Thalmic Myo SDK.

Table of Contents

Documentation

The documentation can currently be found in the docs/ directory in the GitHub Repository.

Example

Myo-Python mirrors the usage of the Myo C++ SDK in many ways as it also requires you to implement a DeviceListener that will then be invoked for any events received from a Myo device.

import myo

class Listener(myo.DeviceListener):
  def on_paired(self, event):
    print("Hello, {}!".format(event.device_name))
    event.device.vibrate(myo.VibrationType.short)
  def on_unpaired(self, event):
    return False  # Stop the hub
  def on_orientation(self, event):
    orientation = event.orientation
    acceleration = event.acceleration
    gyroscope = event.gyroscope
    # ... do something with that

if __name__ == '__main__':
  myo.init(sdk_path='./myo-sdk-win-0.9.0/')
  hub = myo.Hub()
  listener = Listener()
  while hub.run(listener.on_event, 500):
    pass

As an alternative to implementing a custom device listener, you can instead use the myp.ApiDeviceListener class which allows you to read the most recent state of one or multiple Myo devices.

import myo
import time

def main():
  myo.init(sdk_path='./myo-sdk-win-0.9.0/')
  hub = myo.Hub()
  listener = myo.ApiDeviceListener()
  with hub.run_in_background(listener.on_event):
    print("Waiting for a Myo to connect ...")
    device = listener.wait_for_single_device(2)
    if not device:
      print("No Myo connected after 2 seconds.")
      return
    print("Hello, Myo! Requesting RSSI ...")
    device.request_rssi()
    while hub.running and device.connected and not device.rssi:
      print("Waiting for RRSI...")
      time.sleep(0.001)
    print("RSSI:", device.rssi)
    print("Goodbye, Myo!")

Migrating from v0.2.x

The v0.2.x series of the Myo-Python library used ctypes and has a little bit different API. The most important changes are:

  • The Hub object no longer needs to be shut down explicitly
  • The DeviceListener method names changed to match the exact event name as specified by the Myo SDK (eg. from on_pair() to on_paired())
  • The myo.init() function provides a few more parameters to control the way libmyo is detected.
  • myo.Feed has been renamed to myo.ApiDeviceListener

Projects using Myo-Python

Changes

v1.0.2 (2018-06-09)

  • Fix Event.warmup_result (PR #58 @fribeiro1)

v1.0.1 (2018-06-09)

  • Fix Event.rotation_on_arm (#59)

v1.0.0 (2018-06-03)

  • Rewrite using CFFI

This project is licensed under the MIT License.
Copyright © 2015-2018 Niklas Rosenstein

Metadata

Release files for myo-python 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for myo-python 1.0.2
File Size Uploaded
myo-python-1.0.2.tar.gz 17.3 kB Details

Release files / myo-python-1.0.2.tar.gz

Download URL myo-python-1.0.2.tar.gz
Size 17.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8ce659aa97abc6f1283c17f9d629afa32a685c5de5cfe9017dab317fd1ed1520
BLAKE2b-256 checksum
How to use checksums
f232929e56a45c16e64566eadebae1349d5ac2f2c844d30e0bdb46cbc38ac727
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.0.5

2 release files

1.0.4

1 release file

1.0.3

1 release file

This release

1.0.2 This release

1 release file

1.0.1

1 release file

1.0.0

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page