def connectBT(): ''' Order of operations is seriously important here. Don't ask me why. Data-streaming broke when I moved the vibration a few lines down... ''' print('Connecting to Myo armband...') # assign the device to a var. get the MAC address first! myo_mac_addr = myo.get_myo() myo_device = myo.Device() # print developer information to console. print("MAC: %s" % myo_mac_addr) fw = myo_device.services.firmware() print("Firmware: %d.%d.%d.%d" % (fw[0], fw[1], fw[2], fw[3])) print("Battery: %d" % myo_device.services.battery()) # never sleep. myo_device.services.sleep_mode(1) # set logo & bar LED color to purple. myo_device.services.set_leds([128, 128, 255], [128, 128, 255]) # short vibration. myo_device.services.vibrate(1) # define which services we wish to subscribe to. myo_device.services.battery_notifications() myo_device.services.emg_filt_notifications() myo_device.services.set_mode(myo.EmgMode.FILT, myo.ImuMode.OFF, myo.ClassifierMode.OFF) myo_device.add_emg_event_handler(processEMG) print "Myo armband connected." return myo_device
def readAndClassify(samplesPerGesture): global isReadyToRegisterData global samplesPerSeconds global dataRecollectedPerIteration myo_mac_addr = myo.get_myo() myo_device = myo.Device() myo_device.services.sleep_mode(1) # never sleep myo_device.services.vibrate(1) #short vibration myo_device.services.emg_filt_notifications() print("Battery: %d" % myo_device.services.battery()) myo_device.services.set_mode(myo.EmgMode.FILT, myo.ImuMode.OFF, myo.ClassifierMode.OFF) myo_device.add_emg_event_handler(process_emg) while(True): myo_device.services.vibrate(1) # short vibration to let user know we are recording #time.sleep(2) #add some delay to avoid the vibration causing any interference isReadyToRegisterData = True while(samplesPerSeconds < samplesPerGesture): if myo_device.services.waitForNotifications(1): continue #return to the beggining of while loop else: print("no data has been received from the peripheral, waiting...") isReadyToRegisterData = False print("received Info") classifySignal() dataRecollectedPerIteration.clear() print("total number of samples: ", samplesPerSeconds) samplesPerSeconds = 0;
def __init__(self, mEmgMode=myo.EmgMode.RAW, mImuMode=myo.ImuMode.RAW): self.emgGestures = dict() #保存肌电数据的字典 self.accGestures = dict() #保存姿态数据的字典 self.gyroGestures = dict() #保存姿态数据的字典 self.quatGestures = dict() #保存姿态数据的字典 #读取emg和imu数据的格式 self.emgMode = mEmgMode self.imuMode = mImuMode #计算采样率 self.setTimeStampFlag = False self.emgSampleCounter = 0 self.imuSampleCounter = 0 #数据打标签 self.get_reading = False #判断是否开始读取数据 self.n_gestures = 0 #动作类别的个数 self.n_iterations = 0 #每个动作类别重复的个数 self.runtime = 0 #每个动作每次维持的时间 self.gesturesName = 0 #动作的名称 self.iteration = 0 #当前重复动作的个数 #数据保存的路径 self.emgDataPath = '' self.imuDataPath = '' self.pythonVersion = 0 self.myo_device = myo.Device() self.myo_device.services.sleep_mode(1) # never sleep self.myo_device.services.set_leds( [128, 128, 255], [128, 128, 255]) # purple logo and bar LEDs)
def power_off(self): myo_mac_addr = myo.get_myo() print("MAC address: %s" % myo_mac_addr) print("Attempting to Power Off") myo_device = myo.Device() myo_device.services.power_off() print("Successfully Powered Off")
def __init__(self): self.myo_mac_addr = myo.get_myo() #获取当前的myo的mac地址 self.myo_device = myo.Device() self.actionCout = 0 #实现灯闪的效果 # self.mHandCtrl = myHandCtrl() self.pose = 0 #分类的动作结果
def __init__(self, dataMode=["emg", "imu"]): '''data mode''' self.dataMode = dataMode #采集的数据的种类,主要有:emg 和 imu self.emgDataMode = "raw" #肌电数据的类型,主要为原始和滤波后 self.imuDataMode = "raw" #姿态数据的类型,主要为原始和滤波后 '''emg data''' self.emgData = [] #用于保存肌电数据 self.emgDataLenth = 80 #每次采集多少个数据做一次特征提取和动作的识别 self.emgDataCounter = 0 #对肌电数据个数进行计数 '''model''' self.modelFilePath = "" #分类模型保存的路径 self.modelFileName = "emg_data_20180625-022909-model" #分类模型保存的文件的名字 self.modelFileExitFlag = False #分类模型是否存在 self.numberVoter = 3 #投票成员的个数 '''init myo''' self.myo_mac_addr = myo.get_myo() print("MAC address: %s" % self.myo_mac_addr) self.myo_device = myo.Device() #myo硬件对象 self.myo_device.services.sleep_mode(1) # never sleep
def start_MYO(self): myo_mac_addr = myo.get_myo() print("MAC address: %s" % myo_mac_addr) self.myo_device = myo.Device() self.myo_device.services.sleep_mode( 1 ) # never sleep self.myo_device.services.set_leds( [128, 128, 255], [128, 128, 255] ) # purple logo and bar LEDs) self.myo_device.services.vibrate( 1 ) # short vibration fw = self.myo_device.services.firmware() print("Firmware version: %d.%d.%d.%d \n" % (fw[0], fw[1], fw[2], fw[3])) batt = self.myo_device.services.battery() print("Battery level: %d" % batt) # myo_device.services.emg_filt_notifications() self.myo_device.services.emg_raw_notifications() # myo_device.services.imu_notifications() # myo_device.services.classifier_notifications() # myo_device.services.battery_notifications() self.myo_device.services.set_mode( myo.EmgMode.RAW, myo.ImuMode.OFF, myo.ClassifierMode.OFF ) self.myo_device.add_emg_event_handler( self.process_emg )
gestures[name][i].append(emg[0]) gestures[name][i].append(emg[1]) # emg_values.append(emg[0]) # emg_values.append(emg[1]) def save_data(data): timestr = time.strftime("%Y%m%d-%H%M%S") filename = "emg_data_" + timestr with open("emg_data/" + filename + ".pkl", 'wb') as fp: pickle.dump(data, fp) myo_device = myo.Device() myo_device.services.sleep_mode(1) # never sleep myo_device.services.set_leds([128, 128, 255], [128, 128, 255]) # purple logo and bar LEDs) myo_device.services.vibrate(1) # short vibration # myo_device.services.emg_filt_notifications() myo_device.services.emg_raw_notifications() myo_device.services.set_mode(myo.EmgMode.RAW, myo.ImuMode.OFF, myo.ClassifierMode.OFF) #myo_device.services.set_mode(myo.EmgMode.OFF, myo.ImuMode.OFF, myo.ClassifierMode.OFF) time.sleep(1) myo_device.add_emg_event_handler(process_emg) gestures = dict() n_gestures = int(raw_input("How many gestures do you want to perform?: ")) n_iterations = int(