class GoPiAutonomous(): def __init__(self): # self.gpi = GopiImage() self.action_queue = multiprocessing.JoinableQueue() self.results_queue = multiprocessing.Queue() self.motion_child = PidController(self.action_queue, self.results_queue) self.motion_child.start() def start(self, color): # seek found = False bad_tries = 0 while not found and bad_tries < 10: # self.gpi.load_file('static/images/test3.png') # degrees, spots = self.gpi.find_color(color) result = requests.get(camera_host+'/cam/find/'+color).json() degrees = result['degrees'] if degrees is not None: if degrees == -15: self.action_queue.put({'command': 'left_rot', 'duration': .05}) elif degrees == -10: self.action_queue.put({'command': 'left_rot', 'duration': .05}) elif degrees == -5: self.action_queue.put({'command': 'left_rot', 'duration': .05}) elif degrees == 0: found = True if degrees == 5: self.action_queue.put({'command': 'right_rot', 'duration': .05}) elif degrees == 10: self.action_queue.put({'command': 'right_rot', 'duration': .05}) elif degrees == 15: self.action_queue.put({'command': 'right_rot', 'duration': .05}) bad_tries += 1 if found: pass # set speed 150 #pid fwd self.action_queue.put({'command': 'fwd', 'speed': 100}) self.motion_child.join() else: pass
def __init__(self): # self.gpi = GopiImage() self.action_queue = multiprocessing.JoinableQueue() self.results_queue = multiprocessing.Queue() self.motion_child = PidController(self.action_queue, self.results_queue) self.motion_child.start()