def makeReadings(memory): # open a serial connection ser = serial.Serial('/dev/tty.usbserial-DA01QTU5') IM = imuValueExtractors resetHighscores() accels = [] for i in xrange(3): accels.append(niceQ(memory)) count = 0 reads = 0 prevacc = [0, 0, 0] config.power_current = 0 config.distance_current = 0 config.hangtime_current = 0 accelList = [] dataForML = [] data = [0] while (1): reads += 1 line = ser.readline() if (reads < 6): print 6 - reads continue # thro:w the first few lines to be safe acc = IM.getAcceleration(line) #alt = IM.getAltitude(line) #ang = IM.getAngles(line) accMag = ((acc[0] - prevacc[0])**2 + (acc[1] - prevacc[1])**2 + (acc[2] - prevacc[2])**2)**.5 #print "AccelMag ", accMag, "\t", len(accelList) prevacc = acc alt = 0 #print accelList #print config.collectingData if accMag == 0: #or (not config.collectingData): continue #print acc[0], " ", acc[1], " ", acc[2] if (accMag > 1.5): count += 1 data.append([accMag, acc[0], acc[1], acc[2], alt, time.time()]) dataForML.append((alt, accMag)) accelList.append(accMag) elif len(accelList) > 0 and accelList[0] > 1.5 and count < 4: data.append([accMag, acc[0], acc[1], acc[2], alt, time.time()]) dataTuple = (alt, accMag) dataForML.append(dataTuple) #list of (altitudes, accelerations) accelList.append(accMag) count += 1 else: if len(accelList) > 4: #print "accel time sustain satisfied" if max(accelList) > 4: #print "min accel reached" if True: #total1<total2 and total2>total3: #print "bell curve satisfied" baseAlt = data[0][4] maxAlt = baseAlt minAlt = baseAlt for i in range(0, len(data)): if (maxAlt < data[i][4]): maxAlt = data[i][4] if (minAlt > data[i][4]): minAlt = data[i][4] #print "maxalt ", maxAlt, " minalt ", minAlt deltaAlt = maxAlt - baseAlt if baseAlt - minAlt > deltaAlt: deltaAlt = baseAlt - minAlt #print "deltaAlt ", deltaAlt deltaTotalTime = data[len(data) - 1][5] - data[0][5] deltaT = data[2][5] - data[1][5] deltaA1 = abs(data[1][1] - acc[0]) deltaA2 = abs(data[1][2] - acc[1]) deltaA3 = abs(data[1][3] - acc[2]) deltaA4 = abs(data[1][0]) #print "got to hangtime: ", deltaTotalTime if (deltaTotalTime > 0.3): #deltaAlt > 0): print "BALL WAS THROWN" #print "Altitude Change: ", deltaAlt config.power_current = int(max(accelList) * 9) config.hangtime_current = deltaTotalTime config.distance_current = max( accelList) * deltaT * deltaTotalTime * 32.2 print "Power of throw (0-100): ", config.power_current print "Hang time: ", config.hangtime_current print "Distance: ", config.distance_current if (config.distance_current > config.distance_highscore): config.distance_highscore = config.distance_current if (config.hangtime_current > config.hangtime_highscore): config.hangtime_highscore = config.hangtime_current if (config.power_current > config.power_highscore): config.power_highscore = config.power_current onePersonData = copy.deepcopy(dataForML) if (config.new): found = False for i in xrange(len(config.dataset)): if (config.dataset[i][0] == config.PersonName): config.dataset[i][1].append( onePersonData) found = True if not found: config.dataset.append( (config.PersonName, [onePersonData])) # #Add a record of person's data to set else: config.PersonName = analyze(onePersonData) config.completed = True time.sleep(1) #print data accelList = [] data = [] dataForML = [] count = 0
def makeReadings(memory): # open a serial connection ser = serial.Serial('/dev/tty.usbserial-DA01QTU5') IM = imuValueExtractors resetHighscores() accels = [] for i in xrange(3): accels.append(niceQ(memory)) count = 0 reads = 0 prevacc = [0, 0, 0] config.power_current = 0 config.distance_current = 0 config.hangtime_current = 0 accelList = [] dataForML = [] data = [0] while (1): reads += 1 line = ser.readline() buffer = 6 if (reads < buffer): print(buffer - reads) continue # throw the first few lines to be safe acc = IM.getAcceleration(line) #alt = IM.getAltitude(line) ang = IM.getAngles(line) accMag = ((acc[0] - prevacc[0])**2 + (acc[1] - prevacc[1])**2 + (acc[2] - prevacc[2])**2)**.5 prevacc = acc if accMag == 0: #or (not config.collectingData): continue if (accMag > 1.5): count += 1 data.append([accMag, acc[0], acc[1], acc[2], time.time()]) dataForML.append((ang, accMag)) accelList.append(accMag) elif len(accelList) > 0 and accelList[0] > 1.5 and count < 4: data.append([accMag, acc[0], acc[1], acc[2], time.time()]) dataForML.append( (ang, accMag)) #list of (altitudes, accelerations) accelList.append(accMag) count += 1 else: if len(accelList) > 4: #print "accel time sustain satisfied" if max(accelList) > 4: #print "min accel reached" deltaTotalTime = data[len(data) - 1][4] - data[0][4] deltaT = data[2][4] - data[1][4] #print "got to hangtime: ", deltaTotalTime if (deltaTotalTime > 0.3): #print "BALL WAS THROWN" config.power_current = int(max(accelList) * 9) config.hangtime_current = deltaTotalTime config.distance_current = max(accelList)*deltaT\ * deltaTotalTime * 32.2 #print "Power of throw (0-100): ",\ # config.power_current #print "Hang time: ", config.hangtime_current #print "Distance: ", config.distance_current if (config.distance_current > config.distance_highscore): config.distance_highscore = \ config.distance_current if (config.hangtime_current > config.hangtime_highscore): config.hangtime_highscore = \ config.hangtime_current if (config.power_current > config.power_highscore): config.power_highscore = \ config.power_current onePersonData = copy.deepcopy(dataForML) if (config.new): found = False for i in xrange(len(config.dataset)): if (config.dataset[i][0] == config.PersonName): config.dataset[i][1].append(onePersonData) found = True if not found: #Add a record of person's data to set config.dataset.append( (config.PersonName, [onePersonData])) else: config.PersonName = analyze(onePersonData) config.completed = True time.sleep(1) #print data accelList = [] data = [] dataForML = [] count = 0
def makeReadings(memory): # open a serial connection ser = serial.Serial('/dev/tty.usbserial-DA01QTU5') IM = imuValueExtractors resetHighscores() accels = [] for i in xrange(3): accels.append(niceQ(memory)) count = 0 reads = 0 prevacc = [0, 0, 0] config.power_current = 0 config.distance_current = 0 config.hangtime_current = 0 accelList = [] dataForML = [] data = [0] while(1): reads += 1 line = ser.readline() buffer = 6 if(reads < buffer): print(buffer - reads) continue # throw the first few lines to be safe acc = IM.getAcceleration(line) #alt = IM.getAltitude(line) ang = IM.getAngles(line) accMag = ((acc[0]-prevacc[0])**2 + (acc[1]-prevacc[1])**2 + (acc[2]-prevacc[2])**2)**.5 prevacc = acc if accMag == 0: #or (not config.collectingData): continue if(accMag > 1.5): count+=1 data.append([accMag, acc[0], acc[1], acc[2], time.time()]) dataForML.append((ang, accMag)) accelList.append(accMag) elif len(accelList) > 0 and accelList[0] > 1.5 and count < 4: data.append([accMag, acc[0], acc[1], acc[2], time.time()]) dataForML.append((ang, accMag)) #list of (altitudes, accelerations) accelList.append(accMag) count+=1 else: if len(accelList) > 4: #print "accel time sustain satisfied" if max(accelList) > 4: #print "min accel reached" deltaTotalTime = data[len(data)-1][4] - data[0][4] deltaT = data[2][4] - data[1][4] #print "got to hangtime: ", deltaTotalTime if(deltaTotalTime > 0.3): #print "BALL WAS THROWN" config.power_current = int(max(accelList)*9) config.hangtime_current = deltaTotalTime config.distance_current = max(accelList)*deltaT\ * deltaTotalTime * 32.2 #print "Power of throw (0-100): ",\ # config.power_current #print "Hang time: ", config.hangtime_current #print "Distance: ", config.distance_current if(config.distance_current > config.distance_highscore): config.distance_highscore = \ config.distance_current if(config.hangtime_current > config.hangtime_highscore): config.hangtime_highscore = \ config.hangtime_current if(config.power_current > config.power_highscore): config.power_highscore = \ config.power_current onePersonData = copy.deepcopy(dataForML) if(config.new): found = False for i in xrange(len(config.dataset)): if(config.dataset[i][0] == config.PersonName): config.dataset[i][1].append(onePersonData) found = True if not found: #Add a record of person's data to set config.dataset.append((config.PersonName, [onePersonData])) else: config.PersonName = analyze(onePersonData) config.completed = True time.sleep(1) #print data accelList = [] data = [] dataForML = [] count = 0
def makeReadings(memory): # open a serial connection ser = serial.Serial('/dev/tty.usbserial-DA01QTU5') IM = imuValueExtractors resetHighscores() accels = [] for i in xrange(3): accels.append(niceQ(memory)) count = 0 reads = 0 prevacc = [0, 0, 0] config.power_current = 0 config.distance_current = 0 config.hangtime_current = 0 accelList = [] dataForML = [] data = [0] while(1): reads += 1 line = ser.readline() if(reads < 6): print 6 - reads continue # thro:w the first few lines to be safe acc = IM.getAcceleration(line) #alt = IM.getAltitude(line) #ang = IM.getAngles(line) accMag = ((acc[0]-prevacc[0])**2 + (acc[1]-prevacc[1])**2 + (acc[2]-prevacc[2])**2)**.5 #print "AccelMag ", accMag, "\t", len(accelList) prevacc = acc alt = 0 #print accelList #print config.collectingData if accMag == 0: #or (not config.collectingData): continue #print acc[0], " ", acc[1], " ", acc[2] if(accMag > 1.5): count+=1 data.append([accMag, acc[0], acc[1], acc[2], alt, time.time()]) dataForML.append((alt, accMag)) accelList.append(accMag) elif len(accelList) > 0 and accelList[0] > 1.5 and count < 4: data.append([accMag, acc[0], acc[1], acc[2], alt, time.time()]) dataTuple = (alt, accMag) dataForML.append(dataTuple) #list of (altitudes, accelerations) accelList.append(accMag) count+=1 else: if len(accelList) > 4: #print "accel time sustain satisfied" if max(accelList) > 4: #print "min accel reached" if True:#total1<total2 and total2>total3: #print "bell curve satisfied" baseAlt = data[0][4] maxAlt = baseAlt minAlt = baseAlt for i in range(0, len(data)): if(maxAlt < data[i][4]): maxAlt = data[i][4] if(minAlt > data[i][4]): minAlt = data[i][4] #print "maxalt ", maxAlt, " minalt ", minAlt deltaAlt = maxAlt - baseAlt if baseAlt-minAlt > deltaAlt: deltaAlt = baseAlt - minAlt #print "deltaAlt ", deltaAlt deltaTotalTime = data[len(data)-1][5] - data[0][5] deltaT = data[2][5] - data[1][5] deltaA1 = abs(data[1][1] - acc[0]) deltaA2 = abs(data[1][2] - acc[1]) deltaA3 = abs(data[1][3] - acc[2]) deltaA4 = abs(data[1][0]) #print "got to hangtime: ", deltaTotalTime if(deltaTotalTime > 0.3):#deltaAlt > 0): print "BALL WAS THROWN" #print "Altitude Change: ", deltaAlt config.power_current = int(max(accelList)*9) config.hangtime_current = deltaTotalTime config.distance_current = max(accelList)*deltaT * deltaTotalTime * 32.2 print "Power of throw (0-100): ", config.power_current print "Hang time: ", config.hangtime_current print "Distance: ", config.distance_current if(config.distance_current > config.distance_highscore): config.distance_highscore = config.distance_current if(config.hangtime_current > config.hangtime_highscore): config.hangtime_highscore = config.hangtime_current if(config.power_current > config.power_highscore): config.power_highscore = config.power_current onePersonData = copy.deepcopy(dataForML) if(config.new): found = False for i in xrange(len(config.dataset)): if(config.dataset[i][0] == config.PersonName): config.dataset[i][1].append(onePersonData) found = True if not found: config.dataset.append( (config.PersonName, [onePersonData]) ) # #Add a record of person's data to set else: config.PersonName = analyze(onePersonData) config.completed = True time.sleep(1) #print data accelList = [] data = [] dataForML = [] count = 0