Closed nanyssalazar closed 4 years ago
Did you install Myo SDK from Myo armband's website? Also check if path to library is correct
On Thu, Oct 3, 2019, 7:40 AM Andrea Salazar notifications@github.com wrote:
Hello, I'm trying to run the Live Emg Python file, but its showing me this:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cffi/api.py", line 822, in _load_backend_lib raise OSError(msg) OSError: ctypes.util.find_library() did not manage to locate a library called 'myo'
Does someone know how can I fix this?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/NiklasRosenstein/myo-python/issues/79?email_source=notifications&email_token=AJY5TRPSS6EPAVKF7PCDANLQMXR4FA5CNFSM4I5CRSP2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPMRLFA, or mute the thread https://github.com/notifications/unsubscribe-auth/AJY5TRNZSKRUODW6PDW67KTQMXR4FANCNFSM4I5CRSPQ .
Hey @nanyssalazar ,
Did you get it working?
Hello, did you manage to resove this issue? I am struggling to load the myo32dll on python3.8. Keep getting an OSError
@Temi-Tory Can you share what steps you have taken when installing the Myo SDK in order for myo-python to find it?
I pip installed myo-python and did nto need to download another copy of SDK as i already had one in project folder. I am new to python as i am used to working within c# , so I am currently using visual studio to run the code ( so i dont know how to add path to be find the library).
However i tried going through Pycharm as well to addthe path to no avail. The steps i took on pycharm: Going to settings and tried adding the location of the myo32.dll file path to the current interpreter.
Hi, just a quick update, i have been able to get this working i think. following suggestion in the doc at https://github.com/NiklasRosenstein/myo-python/blob/master/docs/index.md#installation. I coppied the dll file and put in somwhere in my C: drive, Then imported the path directly in myo_init code like this:
from ctypes import * cdll.LoadLibrary("c:\myo32.dll")
****I'm using python 3.8.2
You don't need to copy the DLL, just pass the bin_path
argument to myo.init()
to where the DLL is.
import myo
myo.init(bin_path=r'C:\\path\\to\\myo-sdk\\bin')
Hello @NiklasRosenstein , I am trying to retrieve IMU data from Myo Armband. I have installed myo-python and downloaded the SDK too. Also i directed the bin's path to the environment variable.
When i run the program i want to execute, i get these errors.
line 475, in init error.raise_for_kind()
line 285, in raise_for_kind raise ResultError(kind, self.message) myo._ffi.ResultError: (<Result.error_runtime: 3>, b'Unable to connect to Myo Connect. Is Myo Connect running?'
Can you help me if possible?
Hi,
It is probably because the Myo Connect from Desktop itself is not running. Please refer to my code. I make sure I exit the Myo Connect process and restart and make sure it is running properly from code itself. Before receiving data from Myo armband. Here is the link for my code. I hope that helps. The relevant lines are 79-95 and 292-298.
Regards, Shayan Ali Bhatti.
On Wed, May 13, 2020 at 8:23 AM Sakthi Vikram notifications@github.com wrote:
Hello @NiklasRosenstein https://github.com/NiklasRosenstein , I am trying to retrieve IMU data from Myo Armband. I have installed myo-python and downloaded the SDK too. Also i directed the bin's path to the environment variable.
When i run the program i want to execute, i get these errors.
line 475, in init error.raise_for_kind()
line 285, in raise_for_kind raise ResultError(kind, self.message) myo._ffi.ResultError: (<Result.error_runtime: 3>, b'Unable to connect to Myo Connect. Is Myo Connect running?'
Can you help me if possible?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/NiklasRosenstein/myo-python/issues/79#issuecomment-627982902, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJY5TRLBPYAC7IEJD47JAVTRRKNNRANCNFSM4I5CRSPQ .
On Wed, May 13, 2020 at 8:23 AM Sakthi Vikram notifications@github.com wrote:
Hello @NiklasRosenstein https://github.com/NiklasRosenstein , I am trying to retrieve IMU data from Myo Armband. I have installed myo-python and downloaded the SDK too. Also i directed the bin's path to the environment variable.
When i run the program i want to execute, i get these errors.
line 475, in init error.raise_for_kind()
line 285, in raise_for_kind raise ResultError(kind, self.message) myo._ffi.ResultError: (<Result.error_runtime: 3>, b'Unable to connect to Myo Connect. Is Myo Connect running?'
Can you help me if possible?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/NiklasRosenstein/myo-python/issues/79#issuecomment-627982902, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJY5TRLBPYAC7IEJD47JAVTRRKNNRANCNFSM4I5CRSPQ .
Hello @shayanalibhatti
Thanks, But i still keep getting OS Error.
OSError: cannot load library 'C:\Path-to-MyoWindowsSDK\myo32.dll\myo32.dll': error 0x7e.
Any solutions for this? I have tried the above steps by fellow people too. I might have done it wrong but still an explanation once would be helpful since i am new to python.
As I mentioned, is your Myo Connect running ? Go to Start -> Myo Connect ... check if it is running. Check in Task bar, you will see its icon. If this doesn't work. Add me on Skype shayanali_bhatti@hotmail.com. Maybe on screen share i might be able to help.
On Wed, May 13, 2020 at 9:13 AM Sakthi Vikram notifications@github.com wrote:
Hello @shayanalibhatti https://github.com/shayanalibhatti
Thanks, But i still keep getting OS Error.
OSError: cannot load library 'C:\Path-to-MyoWindowsSDK\myo32.dll\myo32.dll': error 0x7e.
Any solutions for this? I have tried the above steps by fellow people too. I might have done it wrong but still an explanation once would be helpful since i am new to python.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NiklasRosenstein/myo-python/issues/79#issuecomment-628017059, or unsubscribe https://github.com/notifications/unsubscribe-auth/AJY5TRJEBS3VKW6LY6VNB5LRRKTJJANCNFSM4I5CRSPQ .
Hello, I'was trying to run the myo- Python file, but it happen same error :
I have done installed myo-python and myo-connect: pip install myo-python
This problem is about myo.init()
I tried to some method that copy the myodll.64 to my file.
But always it occur same error.
{cannot load library 'C:\path\to\myo-sdk\bin\myo64.dll': error 0x7e. Additionally, ctypes.util.find_library() did not manage to locate a library called 'C:\\path\\to\\myo-sdk\\bin\myo64.dll' }
Please someone tell me how to fix it. Please.
Hey @ryunosuke0723,
I used : myo.init(sdk_path=os.path.join('..', os.getcwd(), 'myo-sdk-win-0.9.0'))
My 2 cents
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 28 18:12:10 2018
Ce code permet de récupérer un maximum d'informations issues d'un myo arm
@author: chalgand
"""
from collections import deque
from threading import Lock
import myo
class MyListener(myo.DeviceListener):
"""
classe en écoute d'un myo
"""
def __init__(self, queue_size=8):
self.lock = Lock() # verrouille le thread pour lecture des donnees
# création de listes optimisées pour seulement ajouter des éléments
self.emg_data_queue = deque(maxlen=queue_size)
self.orientation_data_queue = deque(maxlen=queue_size)
self.acceleration_data_queue = deque(maxlen=queue_size)
self.gyroscope_data_queue = deque(maxlen=queue_size)
self.rssi_data_queue = deque(maxlen=100)
# initialisation d'attribut
self.pose = myo.Pose.rest # pose quelconque
self.connected = False # non connecté
self.battery_level = 100 # niveau de batterie maximal
self.emg_enabled = False # on acquiert pas les EMG
self.locked = False # myo non vérouillé
self.rssi = None # aucune valeur de force du signal bluetooth
self.emg = None # données null des emg
self.device_name = None # pas de nom du myo
self.device = None
self.myo_firmware = None
self.arm = None
self.x_direction = None
self.sync = None
def on_paired(self, event):
"""
méthode appelée si le myo est appareillé
"""
if __name__ == '__main__':
print('paired')
else:
pass
def on_unpaired(self, event):
"""
méthode appelée si le myo n'est plus appareillé
"""
if __name__ == '__main__':
print('unpaired')
else:
pass
def on_connected(self, event):
"""
méthode appelé si le myo est connecté
"""
self.device = event.device # sauvegarde de l'instance au myo arm
event.device.unlock() # demande de desappareiller
event.device.lock() # demande d'appareiller (génère des vibrations)
event.device.stream_emg(True) # lance l'acquisition des emg
self.connected = True # mise à jour du flag de connection du myo
self.device_name = event.device_name # on récupère le petit nom du myo
# on récupère également le numéro du firmware (non exploité dans l'UI)
self.myo_firmware = '.'.join(map(str, event.firmware_version[:-1]))
def on_disconnected(self, event):
"""
méthode appelée si le myo est déconnecté
"""
self.connected = False # flag mis à jour
def on_arm_synced(self, event):
"""
méthode appelé si un bras est synchronisé
pas vraiment compris !!!
"""
self.sync = True
self.arm = event.arm # informe de la latéralité du bras détecté
# informe de l'orientation du bracelet
# (vers le poignet ou vers le coude)
self.x_direction = event.x_direction
if __name__ == '__main__':
print(self.x_direction)
else:
pass
def on_arm_unsynced(self, event):
"""
méthode appelée si le bras est désynchronisé
pas vraiment compris !!!
"""
self.sync = False
if __name__ == '__main__':
print(f'arm unsynced : {event.arm}')
else:
pass
def on_unlocked(self, event):
"""
méthode appelée si le myo est dévérouillé
"""
self.locked = False # flag mis à jour
def on_locked(self, event):
"""
méthode appelée si le myo est vérouillé
"""
self.locked = True # flag mis à jour
def on_pose(self, event):
"""
méthode appelée dès qu'une pose gestuelle est reconnue
a) Spread
b) Fist
c) Wave in
d) Wave out
e) Double Tap
f) Rest
"""
self.pose = event.pose # attribut mis à jour
def on_orientation(self, event):
"""
méthode appelée pour récupérer
a) orientation
b) gyroscope
c) accéléromètre
d) associé à un timestamp
"""
with self.lock:
self.orientation_data_queue.append((event.timestamp,
event.orientation))
self.gyroscope_data_queue.append((event.timestamp,
event.gyroscope))
self.acceleration_data_queue.append((event.timestamp,
event.acceleration))
def on_rssi(self, event):
"""
méthode appelée suite à la réponse d'une requête "request_rssi()"
"""
with self.lock:
# mise à jour de la liste
self.rssi_data_queue.append(-event.rssi)
def on_battery_level(self, event):
"""
méthode appelée dès que le niveau de batterie évolue
"""
self.battery_level = event.battery_level # mise à jour de l'attribut
def on_emg(self, event):
"""
méthode appelée pour réceptionner les données EMG
avec son timestamp
"""
with self.lock:
self.emg_data_queue.append((event.timestamp,
event.emg))
def on_warmup_completed(self, event):
"""
méthode appelée quand le myo arm est "chaud"
c'est à partir de ce moment que les données sont les plus stables
mais ça reste à vérifier
pas vraiment pris en compte dans ce code (à faire évoluer)
"""
event.device.stream_emg(True) # lancement de l'acquisition EMG
self.emg_enabled = True # mise à jour du flag
def get_emg_data(self):
"""
méthode pour récupérer les données EMGs
"""
with self.lock:
return list(self.emg_data_queue)
def get_orientation_data(self):
"""
méthode pour récupérer les données d'orientation
"""
with self.lock:
return list(self.orientation_data_queue)
def get_gyroscope_data(self):
"""
méthode pour récupérer les données du gyroscope
"""
with self.lock:
return list(self.gyroscope_data_queue)
def get_accelerometor_data(self):
"""
méthode pour récupérer les données de l'accéléromètre
"""
with self.lock:
return list(self.acceleration_data_queue)
if __name__ == '__main__':
# permet de tester sans interface graphique
import os
from time import sleep
myo.init(sdk_path=os.path.join('..',
os.getcwd(),
'myo-sdk-win-0.9.0'))
HUB = myo.Hub()
LISTENER = MyListener()
with HUB.run_in_background(LISTENER.on_event):
while True:
print(LISTENER.emg_data_queue)
sleep(0.02)
Hi@chalgand, thanks answering my question for me. First, i tried to share the libraly in command line.(import myo as libmyo →libmyo.init()) Next I tried implement cord which you wrote for me. I could do it. But another problem occured. 「hub.shutdown() AttributeError: 'Hub' object has no attribute ['shutdown'」] How can I fix it ?
myo.init() hub = myo.Hub() start = time.time() temp = [] try: listener = MyListener() hub.run(2000, listener) while True: data = listener.get_emg_data() if time.time() - start >= 1: response = np.argmax(np.bincount(temp)) print("Predicted gesture: {0}".format(response)) temp = [] start = time.time() if len(data) > 0: tmp = [] for v in listener.get_emg_data(): tmp.append(v[1]) tmp = list(np.stack(tmp).flatten()) if len(tmp) >= 64: pred = sess.run(y_pred_cls, feed_dict={x: np.array([tmp])}) temp.append(pred[0]) time.sleep(0.01) finally: hub.shutdown() sess.close()
But I still have problem. It is "attempt to get argmax of an empty sequence" How can I fix it ? import collections import myo import threading import time import numpy as np import tensorflow as tf from include.model import model
x, y, output, global_step, y_pred_cls = model()
saver = tf.train.Saver() _SAVE_PATH = "./data/tensorflow_sessions/myo_armband/" sess = tf.Session()
try: print("Trying to restore last checkpoint ...") last_chk_path = tf.train.latest_checkpoint(checkpoint_dir=_SAVE_PATH) print(last_chk_path) saver.restore(sess, save_path=last_chk_path) print("Restored checkpoint from:", last_chk_path) except: print("Failed to restore checkpoint. Initializing variables instead.") sess.run(tf.global_variables_initializer())
class MyListener(myo.DeviceListener):
def __init__(self, queue_size=8):
self.lock = threading.Lock()
self.emg_data_queue = collections.deque(maxlen=queue_size)
def on_connect(self, device, timestamp, firmware_version):
device.set_stream_emg(myo.StreamEmg.enabled)
def on_emg_data(self, device, timestamp, emg_data):
with self.lock:
self.emg_data_queue.append((timestamp, emg_data))
def get_emg_data(self):
with self.lock:
return list(self.emg_data_queue)
myo.init(bin_path=r'C:\Users\田澤龍之介\Desktop\myo-sdk-win-0.9.0\bin') hub = myo.Hub() start = time.time() temp = [] try: listener = MyListener() hub.run(listener, 2000) while True: data = listener.get_emg_data() if time.time() - start >= 1: response = np.argmax(np.bincount(temp)) print("Predicted gesture: {0}".format(response)) temp = [] start = time.time() if len(data) > 0: tmp = [] for v in listener.get_emg_data(): tmp.append(v[1]) tmp = list(np.stack(tmp).flatten()) if len(tmp) >= 64: pred = sess.run(y_pred_cls, feed_dict={x: np.array([tmp])}) temp.append(pred[0]) time.sleep(0.01) finally:
sess.close()
Please tell me how to fix ? attempt to get argmax of an empty sequence?
2020年8月20日(木) 18:10 chalgand notifications@github.com:
https://myo-python.readthedocs.io/en/latest/myo.html#myo.Hub.shutdown
print(dir(hub))
— You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub https://github.com/NiklasRosenstein/myo-python/issues/79#issuecomment-677477534, or unsubscribe https://github.com/notifications/unsubscribe-auth/APQ3HWBEYFQVAUB2ZZQDUELSBTR63ANCNFSM4I5CRSPQ .
--
1512079 田澤龍之介 電気通信大学 情報理工学部 知能機械工学科 〒182-8585 東京都調布市調布ケ丘 1-5-1 Tel: 080-5902-8366 Email: maringan.gg41@gmail.com
This error has nothing to do with myo-python. Obviously it has something to do with your call to np.argmax()
, passing in an empty sequence when the function expects a non-empty sequence.
I'm having the same issue with the myo32dll file. I also don't see the file in the SDK. Where can I download it?
Hello, I'm trying to run the Live Emg Python file, but its showing me this:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/cffi/api.py", line 822, in _load_backend_lib raise OSError(msg) OSError: ctypes.util.find_library() did not manage to locate a library called 'myo'
Does someone know how can I fix this?