def event_cb(self, wm): '''Called when the library has some data for the user.''' if wm.btns: for name,b in list(wiiuse.button.items()): if wiiuse.is_just_pressed(wm, b): pygame.event.post(pygame.event.Event(WIIMOTE_BUTTON_PRESS, button=name, time=time.time(), id=wm.unid)) if wm.btns_released: for name,b in list(wiiuse.button.items()): if wiiuse.is_released(wm, b): pygame.event.post(pygame.event.Event(WIIMOTE_BUTTON_RELEASE, button=name, time=time.time(), id=wm.unid)) if wiiuse.using_acc(wm): pygame.event.post(pygame.event.Event(WIIMOTE_ACCEL, orient=(wm.orient.roll, wm.orient.pitch, wm.orient.yaw), accel=(wm.gforce.x, wm.gforce.y, wm.gforce.z), time=time.time(), id=wm.unid)) if wiiuse.using_ir(wm): dots = [ (wm.ir.dot[i].visible, wm.ir.dot[i].x, wm.ir.dot[i].y) for i in range(4) ] pygame.event.post(pygame.event.Event(WIIMOTE_IR, dots=dots, cursor=(wm.ir.x, wm.ir.y, wm.ir.z), time=time.time(), id=wm.unid)) if wm.exp.type == wiiuse.EXP_NUNCHUK: nc = wm.exp.u.nunchuk for name,b in list(wiiuse.nunchuk_button.items()): if wiiuse.is_just_pressed(nc, b): pygame.event.post(pygame.event.Event(NUNCHUK_BUTTON_PRESS, button=name, time=time.time(), id=wm.unid)) elif wiiuse.is_released(nc, b): pygame.event.post(pygame.event.Event(NUNCHUK_BUTTON_RELEASE, button=name, time=time.time(), id=wm.unid)) pygame.event.post(pygame.event.Event(NUNCHUK_ACCEL, orient=(nc.orient.roll, nc.orient.pitch, nc.orient.yaw), accel=(nc.gforce.x, nc.gforce.y, nc.gforce.z), time=time.time(), id=wm.unid)) pygame.event.post(pygame.event.Event(NUNCHUK_JOY, angle=nc.js.ang, mag=nc.js.mag, time=time.time(), id=wm.unid))
def perform_gesture(self): done = False if len(self.known_gestures) == 0: return i = 0 frames = [] while not done: r = wiiuse.poll(self.wiimotes, self.num_motes) if r != 0: if wiiuse.is_held(self.first_wm[0], wiiuse.button['B']): roll = self.first_wm[0].orient.roll pitch = self.first_wm[0].orient.pitch acc_x = self.first_wm[0].gforce.x acc_y = self.first_wm[0].gforce.y acc_z = self.first_wm[0].gforce.z frame = (roll, pitch, acc_x, acc_y, acc_z) # Only add every nth frame to the list. if i % self.frame_freq == 0: frames.append(frame) if wiiuse.is_released(self.first_wm[0], wiiuse.button['B']): done = True i += 1 gesture = PerformedGesture(frames) return gesture
def release_event(self): remote = self.first_wm[0] for btn_name, btn in wiiuse.button.items(): if wiiuse.is_released(remote, btn): return btn_name
def learn_gesture(self, rep_limit): repetitions = 0 # How many times a gesture has been repeated. done = False confirmed = False while not confirmed: gest_name = raw_input("Please name your gesture: ") if not (self.get_gesture_names().__contains__(gest_name) or len(gest_name) > 15): confirmed = True else: print "\nGesture name taken or too long. Please choose another.\n" gest_action = raw_input("Please specify an command for your gesture: ") gest_arg_arr = shlex.split(gest_action) frame_arr = [] print "\nPress and hold B, perform your gesture, and then release B." i = 0 while not done: r = wiiuse.poll(self.wiimotes, self.num_motes) if r != 0: if wiiuse.is_just_pressed(self.first_wm[0], wiiuse.button['B']): print "Learning gesture, round " + str(repetitions+1) + "." frames = [] if wiiuse.is_held(self.first_wm[0], wiiuse.button['B']): roll = self.first_wm[0].orient.roll pitch = self.first_wm[0].orient.pitch acc_x = self.first_wm[0].gforce.x acc_y = self.first_wm[0].gforce.y acc_z = self.first_wm[0].gforce.z frame = (roll, pitch, acc_x, acc_y, acc_z) # Only add every nth frame to the list. if i%self.frame_freq == 0: frames.append(frame) if repetitions >= rep_limit: done = True print "Good! Press A to see your gesture added to the list of known gestures." continue if wiiuse.is_released(self.first_wm[0], wiiuse.button['B']): repetitions += 1 frame_arr.append(frames) print str(rep_limit-repetitions) + " repetition(s) remaining." i += 1 # Creating the average of the repetitions to create the learned gesture. gesture_average = self.average_gesture(frame_arr) # Writing Gesture to the gesture file. gesture = LearnedGesture(gest_name, gesture_average, gest_arg_arr, 0, 0, frame_arr) self.writer_reader.write_gesture(gesture) # Update the current known gestures. self.update_gestures()
def learn_gesture(self, rep_limit): repetitions = 0 # How many times a gesture has been repeated. done = False confirmed = False while not confirmed: gest_name = raw_input("Please name your gesture: ") if not (self.get_gesture_names().__contains__(gest_name) or len(gest_name) > 15): confirmed = True else: print "\nGesture name taken or too long. Please choose another.\n" gest_action = raw_input("Please specify an command for your gesture: ") gest_arg_arr = shlex.split(gest_action) frame_arr = [] print "\nPress and hold B, perform your gesture, and then release B." i = 0 while not done: r = wiiuse.poll(self.wiimotes, self.num_motes) if r != 0: if wiiuse.is_just_pressed(self.first_wm[0], wiiuse.button['B']): print "Learning gesture, round " + str(repetitions + 1) + "." frames = [] if wiiuse.is_held(self.first_wm[0], wiiuse.button['B']): roll = self.first_wm[0].orient.roll pitch = self.first_wm[0].orient.pitch acc_x = self.first_wm[0].gforce.x acc_y = self.first_wm[0].gforce.y acc_z = self.first_wm[0].gforce.z frame = (roll, pitch, acc_x, acc_y, acc_z) # Only add every nth frame to the list. if i % self.frame_freq == 0: frames.append(frame) if repetitions >= rep_limit: done = True print "Good! Press A to see your gesture added to the list of known gestures." continue if wiiuse.is_released(self.first_wm[0], wiiuse.button['B']): repetitions += 1 frame_arr.append(frames) print str(rep_limit - repetitions) + " repetition(s) remaining." i += 1 # Creating the average of the repetitions to create the learned gesture. gesture_average = self.average_gesture(frame_arr) # Writing Gesture to the gesture file. gesture = LearnedGesture(gest_name, gesture_average, gest_arg_arr, 0, 0, frame_arr) self.writer_reader.write_gesture(gesture) # Update the current known gestures. self.update_gestures()