class IdentifyGate(Task): """ Finish when we can see a good enough amount of the gate """ min_bbar_width = 0.3 def on_first_run(self, vision): self.seen_cons_check = ConsistencyCheck(4, 5) def on_run(self, vision): self.seen_cons_check.add(vision.bottom is not None and \ # (vision.left is not None or vision.right is not None) and \ bbar_width_ratio(vision) >= self.min_bbar_width) if self.seen_cons_check.check(): self.finish()
class IdentifyGate(Task): """ Finish when we can see a good enough amount of the gate """ min_bbar_width = 0.15 def on_first_run(self, vision): self.seen_cons_check = ConsistencyCheck(4, 5) def on_run(self, vision): self.seen_cons_check.add(vision.bottom is not None and \ # (vision.left is not None or vision.right is not None) and \ bbar_width_ratio(vision) >= self.min_bbar_width) if self.seen_cons_check.check(): self.finish()
class ConsistentObject: """ Consistency-check an object's existence Inputted objects must have an x and y field """ def __init__(self, seen_cons_check=(2, 3), unseen_cons_check=(5, 6)): self.last_obj = None self.tracking = False self.seen_cons_check = ConsistencyCheck(*seen_cons_check) self.unseen_cons_check = ConsistencyCheck(*unseen_cons_check) def map(self, obj): """ Call with a valid object to count as "seeing the object", or with None to count as "not seeing the object" """ if obj is not None: self.last_obj = obj if self.tracking: self.unseen_cons_check.add(False) else: self.seen_cons_check.add(True) if self.seen_cons_check.check(): self.tracking = True self.seen_cons_check.clear() self.unseen_cons_check.clear() else: if self.tracking: self.unseen_cons_check.add(True) if self.unseen_cons_check.check(): self.tracking = False self.seen_cons_check.clear() self.unseen_cons_check.clear() self.last_obj = None else: self.seen_cons_check.add(False) self.last_obj = None if self.tracking: return self.last_obj else: return None
class ConsistentObject: """ Consistency-check an object's existence """ def __init__(self, seen_cons_check=(2, 3), unseen_cons_check=(5, 6)): self.last_obj = None self.tracking = False self.seen_cons_check = ConsistencyCheck(*seen_cons_check) self.unseen_cons_check = ConsistencyCheck(*unseen_cons_check) def map(self, obj): """ Call with a valid object to count as "seeing the object", or with None to count as "not seeing the object" """ if obj is not None: self.last_obj = obj if self.tracking: self.unseen_cons_check.add(False) else: self.seen_cons_check.add(True) if self.seen_cons_check.check(): self.tracking = True self.seen_cons_check.clear() self.unseen_cons_check.clear() else: if self.tracking: self.unseen_cons_check.add(True) if self.unseen_cons_check.check(): self.tracking = False self.seen_cons_check.clear() self.unseen_cons_check.clear() self.last_obj = None else: self.seen_cons_check.add(False) self.last_obj = None if self.tracking: return self.last_obj else: return None