def __init__(self): self.left_motor = Victor(0) self.right_motor = Victor(1) self.solenoid = DoubleSolenoid(2, 3) self.lift_motor = Victor(4) self.pot = AnalogPotentiometer(0) # state self._lift_state = None self._spread_state = None
def __init__(self): Events.__init__(self) self.left_motor = Victor(0) self.right_motor = Victor(1) self.solenoid = DoubleSolenoid(2, 3) self.lift_motor = Victor(4) self.pot = AnalogPotentiometer(0) # state self._lift_state = None self._spread_state = None # setup events self._create_event(GripperComponent.EVENTS.gripper_started_moving)
class GripperComponent(Events): lift_positions = { "up": 0.2, # "middle": 197, "down": 0.595 # "up": 2.2, # "down": 4.0 } class EVENTS(object): gripper_started_moving = "gripper_started_moving" gripper_started_moving_data = Command def __init__(self): Events.__init__(self) self.left_motor = Victor(0) self.right_motor = Victor(1) self.solenoid = DoubleSolenoid(2, 3) self.lift_motor = Victor(4) self.pot = AnalogPotentiometer(0) # state self._lift_state = None self._spread_state = None # setup events self._create_event(GripperComponent.EVENTS.gripper_started_moving) def set_spread_state(self, spread: bool): if spread: self.solenoid.set(DoubleSolenoid.Value.kForward) self._spread_state = True else: self.solenoid.set(DoubleSolenoid.Value.kReverse) self._spread_state = False def toggle_spread_state(self): if self._spread_state is None: self.set_spread_state(False) else: self.set_spread_state(not self._spread_state) def set_motor_speeds(self, left: float, right: float): self.left_motor.set(left) self.right_motor.set(-right) def set_lift_motor(self, speed): print("grip_speed: {}".format(str(speed))) self.lift_motor.set(speed) def current_lift_state(self) -> str: positions = [(key, position) for key, position in GripperComponent.lift_positions.items()] return min(positions, key=lambda position: abs(self.pot.get() - position[1]))[0]
class Potentiometer(Sensor): """ Sensor wrapper for an analog gyroscope. Has double attribute angle for total angle rotated. """ angle = 0 def __init__(self, channel, scale=1, offset=0): """ Initializes the gyroscope on some analog channel. """ super().__init__() self.p = WPotentiometer(channel, scale, offset) def poll(self): self.angle = self.p.get()
def __init__(self, robot): super().__init__() self.robot = robot self.armMotor = CANTalon(4) self.wheelMotor = CANTalon(5) self.frontSwitch = DigitalInput(8) self.backSwitch = DigitalInput(9) self.comp = Compressor() self.comp.enabled() self.armMotor.enableBrakeMode(True) self.wheelMotor.enableBrakeMode(True) self.potentiometer = AnalogPotentiometer(3, 270, -193) #self.pidArm = PIDController(0.0, 0.0, 0.0, 0.0, self.potentiometer, self.armMotor, 0.02) self.position = 0
class GripperComponent: lift_positions = { "up": 0.13, "down": 0.54, # "up": 0.2, # "down": 0.595 # "up": 2.2, # "down": 4.0 } def __init__(self): self.left_motor = Victor(0) self.right_motor = Victor(1) self.solenoid = DoubleSolenoid(2, 3) self.lift_motor = Victor(4) self.pot = AnalogPotentiometer(0) # state self._lift_state = None self._spread_state = None def set_spread_state(self, spread: bool): if spread: self.solenoid.set(DoubleSolenoid.Value.kForward) self._spread_state = True else: self.solenoid.set(DoubleSolenoid.Value.kReverse) self._spread_state = False def toggle_spread_state(self): if self._spread_state is None: self.set_spread_state(False) else: self.set_spread_state(not self._spread_state) def set_motor_speeds(self, left: float, right: float): self.left_motor.set(left) self.right_motor.set(-right) def set_lift_motor(self, speed): self.lift_motor.set(speed) def current_lift_state(self) -> str: positions = [(key, position) for key, position in GripperComponent.lift_positions.items()] return min(positions, key=lambda position: abs(self.pot.get() - position[1]))[0]
def __init__(self, channel, scale=1, offset=0): """ Initializes the gyroscope on some analog channel. """ super().__init__() self.p = WPotentiometer(channel, scale, offset)
class arm(Component): #set up variables def __init__(self, robot): super().__init__() self.robot = robot self.armMotor = CANTalon(4) self.wheelMotor = CANTalon(5) self.frontSwitch = DigitalInput(8) self.backSwitch = DigitalInput(9) self.comp = Compressor() self.comp.enabled() self.armMotor.enableBrakeMode(True) self.wheelMotor.enableBrakeMode(True) self.potentiometer = AnalogPotentiometer(3, 270, -193) #self.pidArm = PIDController(0.0, 0.0, 0.0, 0.0, self.potentiometer, self.armMotor, 0.02) self.position = 0 def armAuto(self, upValue, downValue, target, rate=0.3): ''' if self.getPOT() <= target: self.armMotor.set(0) ''' if upValue == 1: self.armMotor.set(rate * -1) elif downValue == 1: self.armMotor.set(rate) else: self.armMotor.set(0) def armUpDown(self, left, right, controllerA, rate=0.3): rate2 = rate*1.75 if(self.backSwitch.get() == False or self.frontSwitch.get() == False): #Checking limit switches self.armMotor.set(0) if(left >= 0.75):#if tripped, disallow further movement # if(controllerA == True): # self.armMotor.set(rate2) # else: self.armMotor.set(rate) elif(right >= 0.75):#if tripped, disallow further movement # if(controllerA == True): # self.armMotor.set(-rate2) # else: self.armMotor.set(rate * -1) elif(left < 0.75 and right < 0.75): self.armMotor.set(0) def wheelSpin(self, speed): currentSpeed = 0 if (speed > 0.75): currentSpeed = -1 elif(speed < -0.75): currentSpeed = 1 self.wheelMotor.set(currentSpeed) def getPOT(self): return (self.potentiometer.get()*-1) def getBackSwitch(self): return self.backSwitch.get() def getFrontSwitch(self): return self.frontSwitch.get()