def main(args): if "fake" in args: board = FakeArduino() else: board = Arduino() cam = Camera() cam.calibrate() cam.adj_thresh(2, 20) shooterlist = setup_shooters(args, board, offset_in = 9.5, field = cam.board_size, dpi = cam.dpi) if "old" in args: print "using old program" while True: targets = cam.get_targets() tactical_shoot(shooterlist, targets) aims = [s.get_aim_line() for s in shooterlist] cam.display(aims) board.read() if (cv2.waitKey(2) >= 0): break if "fail" in args: print "using test program" while True: targets = cam.get_targets() for s in shooterlist: for t in targets: s.shoot(t) aims = [s.get_aim_line() for s in shooterlist] cam.display(aims) if cv2.waitKey(2) >= 0: break elif "new" in args: print "using new program" field = Field() care = True # try to shoot after failmax fails? fails = 0 failmax = 10 while True: pucks = cam.get_pucks() if not pucks: pucks = [cam.get_one()] if not pucks: if care: fails += 1 if fails > failmax: fails = 0 print "Fails exceeded maximum; attempting quickfix" cam.quickfix(field.get_min_pucks()) #pucks = cam.get_targets() #pucks = (pucks[0]) else: continue else:continue elif care: fails = 0 field.update_pucks(pucks) target = field.get_best_target_pos() for s in shooterlist: if s.can_hit(target): s.shoot(target) aims = [s.get_aim_line() for s in shooterlist] cam.display(aims) if cv2.waitKey(2) >= 0: break cam.cleanup() print "THRESHHOLD WAS: " + str(cam.threshval)