def Extend(self): # return SetActuators([self.extend_piston], [self.retract_piston]) return Sequential( Log('Extending {} Amlan'.format(self.name)), SetActuators([], [self.retract_piston]), Timer(0.3), SetActuators([self.extend_piston], []), )
def Retract(self): # return SetActuators([self.retract_piston], [self.extend_piston]) return Sequential( # THE THIRD PISTON STATE Log('Retracting {} Amlan'.format(self.name)), SetActuators([self.extend_piston, self.retract_piston], []), Timer(1), SetActuators([self.retract_piston], [self.extend_piston]), self._RemoveTube())
def FastRetract(self): return Sequential( Log('Fast retracting {} Amlan'.format(self.name)), SetActuators([self.retract_piston], [self.extend_piston]), self._RemoveTube() )
# Depth(depth)), # TODO: BigDepth? # Zero()) close_to = lambda point1, point2, db=20: abs(point1[0]-point2[0]) < db and abs(point1[1]-point2[1]) < db Align = lambda centerf, anglef, visiblef, closedb=10, aligndb=7: Sequential( Log('Aligning'), MasterConcurrent( Consistent(lambda: close_to(centerf(), CAM_CENTER) and abs(anglef()) < aligndb, count=2.3, total=3, invert=False, result=True), While(lambda: Consistent(visiblef, count=2.5, total=3.0, invert=True, result=False), True), While(lambda: Center(centerf, visiblef), True), PIDHeading(anglef, p=0.47), AlwaysLog(lambda: 'align %s' % str(anglef()))), Zero()) _Grab = lambda: SetActuators(on_triggers=['manipulator_grab']) _Release = lambda: Sequential( SetActuators(on_triggers=['manipulator_release'], off_triggers=['manipulator_grab']), Timer(0.3), SetActuators(off_triggers=['manipulator_release'])) GrabVampireOpenCoffin = lambda: \ Sequential( Search(visible_open), Center(center_open, visible_open, db=20), SetMarker('before_grab'), Align(centerf=center_open, anglef=angle_offset_open, visiblef=visible_open), Center(offset_open, visible_open, db=10), MasterConcurrent( Sequential( Timer(15),