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 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 )
def process_classifier(pose): print(pose) def process_battery(batt): print("Battery level: %d" % batt) def led_emg(emg): if (emg[0] > 80): myo_device.services.set_leds([255, 0, 0], [128, 128, 255]) else: myo_device.services.set_leds([128, 128, 255], [128, 128, 255]) myo_mac_addr = myo.get_myo() print("MAC address: %s" % myo_mac_addr) 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 fw = myo_device.services.firmware() print("Firmware version: %d.%d.%d.%d" % (fw[0], fw[1], fw[2], fw[3])) batt = myo_device.services.battery() print("Battery level: %d" % batt) myo_device.services.emg_filt_notifications() # myo_device.services.emg_raw_notifications() myo_device.services.imu_notifications() myo_device.services.classifier_notifications() # myo_device.services.battery_notifications()