示例#1
0
 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], []),
     )
示例#2
0
 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())
示例#3
0
 def FastRetract(self):
     return Sequential(
         Log('Fast retracting {} Amlan'.format(self.name)),
         SetActuators([self.retract_piston], [self.extend_piston]),
         self._RemoveTube()
     )
示例#4
0
#                 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),