00001 #!/usr/bin/python 00002 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00003 # 00004 # WIIMote Run Tests 00005 # 00006 #;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 00007 00008 # TODO: Don't duplicate cwiid constants in armConrolConstants.py 00009 # TODO: Offer exception if stdev is too high in IMU readings 00010 # TODO: Zeroing 00011 # TODO: Catch wiimote being turned off. 00012 00013 00014 import WIIMote 00015 from wiimoteExceptions import * 00016 from wiiutils import * 00017 from wiistate import * 00018 import numpy as np 00019 00020 mySampleRate = 1 00021 try: 00022 ac = WIIMote.WIIMote(theSampleRate = mySampleRate) 00023 ac.zeroDevice() 00024 00025 #******************** 00026 # numSamples = 50 00027 # 00028 # accMeans = [] 00029 # accStdevs = [] 00030 # gyroMeans = [] 00031 # gyroStdevs = [] 00032 # 00033 # for i in range(numSamples): 00034 # ac.zero() 00035 # accMeans.append(ac.meanAcc) 00036 # accStdevs.append(ac.stdevAcc) 00037 # gyroMeans.append(ac.meanGyro) 00038 # gyroStdevs.append(ac.stdevGyro) 00039 # 00040 # accMean = np.vstack(accMeans).mean(axis=0) 00041 # accStdev = np.vstack(accMeans).std(axis=0) 00042 # gyroMean = np.vstack(gyroMeans).mean(axis=0) 00043 # gyroStdev = np.vstack(gyroMeans).std(axis=0) 00044 # 00045 # report("Acc mean: " + `accMean` + " Min mean: " + `np.vstack(accMeans).min(axis=0)` + " Max mean: " + `np.vstack(accMeans).max(axis=0)`) 00046 # report("Acc stdev: " + `np.vstack(accMeans).std(axis=0)`) 00047 # 00048 # report("Gyro mean: " + `gyroMean` + " Min gyro: " + `np.vstack(gyroMeans).min(axis=0)` + " Max gyro: " + `np.vstack(gyroMeans).max(axis=0)`) 00049 # report("Gyro stdev: " + `gyroStdev`) 00050 # 00051 # 00052 # 00053 # 00054 # exit(0) 00055 # 00056 # report ("Acc list: " + `map(lambda wiiReading: wiiReading.tuple(), ac._accList)`) 00057 # report ("Acc mean: " + `ac.meanAcc` + " Acc stdev: " + `ac.stdevAcc`) 00058 # report ("Gyro list: " + `map(lambda wiiReading: wiiReading.tuple(), ac._gyroList[1:])`) 00059 # report ("Gyro mean: " + `ac.meanGyro` + " Gyro stdev: " + `ac.stdevGyro`) 00060 #******************** 00061 00062 #ac.integrate() 00063 except WiimoteError, e: 00064 report(e) 00065 exit() 00066 00067 ledCycle = 0 00068 try: 00069 while True: 00070 #time.sleep(.2) 00071 time.sleep(mySampleRate) 00072 00073 ac.printState() 00074 00075 if ledCycle == 0: 00076 ac.setLEDs([True, False, False, False]) 00077 elif ledCycle == 1: 00078 ac.setLEDs([False, True, False, False]) 00079 elif ledCycle == 2: 00080 ac.setLEDs([False, False, True, False]) 00081 elif ledCycle == 3: 00082 ac.setLEDs([False, False, False, True]) 00083 elif ledCycle == 4: 00084 ac.setLEDs([True, False, False, None]) 00085 elif ledCycle == 5: 00086 ac.setLEDs([None, True, True, None]) 00087 elif ledCycle == 6: 00088 ac.setLEDs([False, False, False, False]) 00089 ledCycle += 1 00090 if ledCycle >= 7: 00091 ledCycle = 0 00092 #******ac.setRumble(not ac.getRumble()) 00093 00094 00095 finally: 00096 ac.shutdown()