Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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;
Ejemplo n.º 3
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")
Ejemplo n.º 5
0
    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  #分类的动作结果
Ejemplo n.º 6
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(