コード例 #1
0
    def setup(self):
        self.LEFT_TOWER = 85
        self.RIGHT_TOWER = 24
        self.CENTER = 53


        self.color = Color(self.tamp,
                           integrationTime=Color.INTEGRATION_TIME_101MS,
                           gain=Color.GAIN_1X)
        self.servo = Servo(self.tamp, 23) #pin TBD
        self.red_detected = False
        self.green_detected = False
        self.servo.write(self.CENTER)
        self.counter = 0
        self.servo_bottom = Servo(self.tamp,22)
        self.servo_bottom.write(34)

        self.motor = Motor(self.tamp, 24, 25)
        self.motor.write(True, 250)
        self.jammed = False

        self.conveyor_encoder = Encoder(self.tamp, *self.pins, continuous=True)
        self.prev_encoder_value = 0
        self.conveyor_encoder.update()
        self.timer = Timer()

        self.sorter_delta = 50
コード例 #2
0
ファイル: test_servo.py プロジェクト: pravinas/et-maslab-2016
 def setup(self):
     self.servo = Servo(self.tamp, self.SERVO_PIN)
     self.servo.write(0)
     self.servoval = 0
     self.delta = 1
     self.timer = Timer()
     self.end = False
コード例 #3
0
ファイル: driver.py プロジェクト: itinawi/MASLAB-2018
 def setup(self):
     # ROS Setup
     rospy.init_node('driver')
     rospy.Subscriber("driver_commands", String, callback)
     # self.tof_pub = rospy.Publisher('tof_readings', String, queue_size=10)
     # Device Setup
     self.motor1 = Motor(self.tamp, MOTOR1_DIR, MOTOR1_PWM)
     self.motor2 = Motor(self.tamp, MOTOR2_DIR, MOTOR2_PWM)
     self.encoder1 = Encoder(self.tamp, *ENCODER1, continuous=True)
     self.encoder2 = Encoder(self.tamp, *ENCODER2, continuous=True)
     # self.encoder1_value = 0
     # self.encoder2_value = 0
     # TimeOfFlight Sensors
     # self.tof1 = TimeOfFlight(self.tamp, TOF1, 1, continuous=False)
     # self.tof2 = TimeOfFlight(self.tamp, TOF2, 2, continuous=False)
     # self.tof1.enable()
     # self.tof2.enable()
     # self.tof1_value = 0
     # self.tof2_value = 0
     # Servo for the Release
     self.servo = Servo(self.tamp, SERVO)
     self.servo.write(SERVO_CLOSE)
     # Controller Params
     self.pid = PID(p=P, i=I, d=D)
     self.target1 = 0
     self.target2 = 0
     self.servo_commands = Queue()
コード例 #4
0
ファイル: move_door.py プロジェクト: pravinas/et-maslab-2016
    def setup(self):
        # Servo object representing the door.
        self.openValue = 100  # Value in degrees the servo should be when the door is open.
        self.closedValue = 172  # Value in degrees the servo should be when the door is closed.

        self.servo = Servo(self.tamp, 25)
        self.start()
コード例 #5
0
    def setup(self):
        pygame.init()
        self.screen = pygame.display.set_mode((300, 300))

        self.servo = Servo(self.tamp, self.SERVO_PIN)
        self.servo.write(0)
        self.servoval = 0
        self.delta = 1
        self.timer = Timer()
        self.end = False
        self.wait = False
コード例 #6
0
 def __init__(self, tamp):
     self.tamp = tamp
     self.servo = Servo(self.tamp, 9)
     self.servo.bottom = 5
     self.servo.top = 180
     self.servo.speed = 30
     self.servo.write(self.servo.bottom)
     self.servoval = self.servo.bottom
     self.delta = 0
     self.armState = "None"
     self.nextArmState = "None"
コード例 #7
0
ファイル: arms.py プロジェクト: skrub-wreckers/software
    def __init__(self, tamp, servo_pin, lower, upper, up_traj, down_traj):
        """
        lower:     servo us corresponding to 0 angle
        upper:     servo us corresponding to 180 angle
        up_traj:   list of (angle, dt) tuples for up trajectory
        down_traj: list of (angle, dt) tuples for down trajectory
        """
        self.servo = Servo(tamp, servo_pin, lower, upper)
        self.servo.write(0)

        self.up_traj = up_traj
        self.down_traj = down_traj
コード例 #8
0
ファイル: sort_blocks.py プロジェクト: loc-trinh/MASLAB
    def setup(self):
        self.LEFT_TOWER = 83.4
        self.RIGHT_TOWER = 27
        self.CENTER = 54


        self.color = Color(self.tamp,
                           integrationTime=Color.INTEGRATION_TIME_101MS,
                           gain=Color.GAIN_1X)
        self.servo = Servo(self.tamp, 23) #pin TBD
        self.red_detected = False
        self.green_detected = False
        self.servo.write(self.CENTER)
        self.counter = 0
        self.timer = Timer()
コード例 #9
0
    def __init__(self, tamp):
        self.tamp = tamp
        self.servo = Servo(self.tamp, 5)
        self.servo.center = 90
        self.servo.right = 25
        self.servo.left = 165
        self.servo.speed = 15
        self.servo.rightJostle = 60
        self.servo.leftJostle = 120

        self.servo.write(self.servo.center)
        self.sorterval = self.servo.center
        self.dsorter = 0
        self.sorterState = "None"
        self.startPauseTime = 0
        self.pauseLength = 0
コード例 #10
0
    def setup(self):
        self.ttt = Timer()
        self.timer = Timer()
        self.loopTimer = Timer()
        self.servo = Servo(self.tamp, SERVO_PIN)

        self.motorRight = Motor(self.tamp, RIGHT_DRIVE_CONTROLLER_DIRECTION,
                                RIGHT_DRIVE_CONTROLLER_PWM)
        self.motorLeft = Motor(self.tamp, LEFT_DRIVE_CONTROLLER_DIRECTION,
                               LEFT_DRIVE_CONTROLLER_PWM)
        self.encoder = Encoder(self.tamp, RIGHT_DRIVE_ENCODER_YELLOW,
                               RIGHT_DRIVE_ENCODER_WHITE)

        self.dropoff = DropoffModule(self.timer, self.servo, self.motorRight,
                                     self.motorLeft, self.encoder)
        self.dropoff.start()
コード例 #11
0
 def setup(self):
     self.servo = Servo(self.tamp, 10)
     self.servo.write(2200)
     self.timer = Timer()
     self.val = 2200
コード例 #12
0
    def setup(self):
        ####################
        ####  EE SETUP  ####
        ####################

        # Motor object representing the left motor.
        self.leftMotor = Motor(self.tamp, LEFT_DRIVE_CONTROLLER_DIRECTION,
                               LEFT_DRIVE_CONTROLLER_PWM)
        # Encoder object for the left motor.
        self.leftEncoder = Encoder(self.tamp, LEFT_DRIVE_ENCODER_YELLOW,
                                   LEFT_DRIVE_ENCODER_WHITE)
        # Motor object representing the right motor.
        self.rightMotor = Motor(self.tamp, RIGHT_DRIVE_CONTROLLER_DIRECTION,
                                RIGHT_DRIVE_CONTROLLER_PWM)
        # Encoder object for the right motor.
        self.rightEncoder = Encoder(self.tamp, RIGHT_DRIVE_ENCODER_YELLOW,
                                    RIGHT_DRIVE_ENCODER_WHITE)

        # Motor object representing the intake mechanism motors.
        self.intakeMotor = Motor(self.tamp, HUGS_MOTOR_CONTROLLER_DIRECTION,
                                 HUGS_MOTOR_CONTROLLER_PWM)
        # Encoder object for the intake motor.
        self.intakeEncoder = Encoder(self.tamp, HUGS_MOTOR_ENCODER_YELLOW,
                                     HUGS_MOTOR_ENCODER_WHITE)

        # Motor object representing the conveyor belt motor.
        self.conveyorMotor = Motor(self.tamp, BELT_MOTOR_CONTROLLER_DIRECTION,
                                   BELT_MOTOR_CONTROLLER_PWM)
        # Encoder object for the conveyor belt motor.
        self.conveyorEncoder = Encoder(self.tamp, BELT_MOTOR_ENCODER_YELLOW,
                                       BELT_MOTOR_ENCODER_WHITE)

        # Long range IR sensors
        self.irBL = LRIR(self.tamp, LONG_DISTANCE_IR_BL)
        self.irBR = LRIR(self.tamp, LONG_DISTANCE_IR_BR)
        self.irFL = LRIR(self.tamp, LONG_DISTANCE_IR_FL)
        self.irFR = LRIR(self.tamp, LONG_DISTANCE_IR_FR)

        # Color sensor
        self.color = Color(self.tamp)

        # Limit switches
        self.conveyorLimSwitch = DigitalInput(self.tamp, CONVEYOR_LIMIT_SWITCH)
        self.blockLimSwitch = DigitalInput(self.tamp, BLOCK_LIMIT_SWITCH)

        # Servo controlling the door of the collection chamber.
        self.backDoorServo = Servo(self.tamp, SERVO_PIN)
        # Make sure the door is closed
        self.backDoorServo.write(SERVO_CLOSE)

        # The switch that tells the program that the competition has started
        self.competitionModeSwitch = DigitalInput(self.tamp, COMPETITION_MODE)

        #################################
        ####  INTERNAL MODULE SETUP  ####
        #################################

        # Timer object to moderate checking for intake errors.
        self.intakeTimer = Timer()
        # Are the intake motors reversing? True if so, False if going forwards.
        self.intakeDirection = False
        # Start the intake motor.
        self.intakeMotor.write(self.intakeDirection, INTAKE_POWER)

        # Wall Follow object
        self.wallFollow = WallFollow(self.leftMotor, self.rightMotor, Timer(),
                                     self.irFL, self.irFR, self.irBL,
                                     self.irBR)

        # A timer to make sure timesteps are only 10 times/second
        self.timestepTimer = Timer()
        # Timer object describing how long the current module has been running.
        self.moduleTimer = Timer()
        # Timer for the whole game
        self.gameTimer = Timer()

        # Runs the PICKUP process
        self.pickup = PickupModule(self.moduleTimer, self.conveyorLimSwitch,
                                   self.conveyorMotor, self.conveyorEncoder)
        # Runs the DROPOFF process
        self.dropoff = DropoffModule(self.moduleTimer, self.backDoorServo,
                                     self.rightMotor, self.leftMotor,
                                     self.rightEncoder)
        # Runs the FOLLOW process TODO: Fix forward to actually mean forward.
        self.follow = FollowModule(self.moduleTimer, self.leftMotor,
                                   self.rightMotor, self.intakeMotor,
                                   self.wallFollow, FORWARD_SPEED,
                                   self.blockLimSwitch)
        # Runs the CHECK process. TODO: pass in proper timers.
        self.check = CheckModule(self.moduleTimer, self.leftMotor,
                                 self.rightMotor, self.intakeMotor, self.color)
        # Waits for the game to start
        self.off = OffModule(self.gameTimer, self.competitionModeSwitch)

        # Describes which stage of the program is running.
        self.module = MODULE_OFF
コード例 #13
0
    def setup(self):
        # initialize sensors, settings, start timers, etc.
        self.gameTimer = Timer()

        # Pins (7,22); (3,23); (0,21) work.
        # Problem was with the Double Motor controller.
        self.motorGripper = Motor(self.tamp, 23, 3)
        self.motorLeft = Motor(self.tamp, 7, 22)
        self.motorRight = Motor(self.tamp, 0, 21)  # good
        self.motorval = 0
        self.motorLeft.write(1, 0)
        self.motorRight.write(1, 0)
        self.motorGripper.write(1, 0)
        self.currentGripperLevel = 2
        print "Motors connected."

        self.servoDoor = Servo(self.tamp, 20)
        self.servovalDoor = self.DOOR_CLOSE_POS
        self.servoDoor.write(self.DOOR_CLOSE_POS)
        self.timerDoor = Timer()
        self.servoGripper = Servo(self.tamp, 10)
        self.servovalGripper = self.GRIPPER_CLOSE_POS
        self.servoGripper.write(self.servovalGripper)
        self.timerGripper = Timer()
        print "Servos connected."

        left_pins = 6, 5
        right_pins = 3, 4
        # Encoder doesn't work when after gyro
        self.encoderLeft = Encoder(self.tamp, 6, 5, continuous=False)
        self.encoderRight = Encoder(self.tamp, 3, 4, continuous=True)
        print "Encoders connected."
        # TODO: set encoder to 0
        self.timer = Timer()
        self.gyro = Gyro(self.tamp, 9)
        print "Gyro connected."
        self.theta = self.gyro.val
        self.dT = .01

        self.cam = cv2.VideoCapture(0)

        print "Camera connected."

        # self.color = Color(self.tamp,
        #                integrationTime=Color.INTEGRATION_TIME_101MS,
        #                gain=Color.GAIN_1X)

        self.encoderLeft.start_continuous()
        self.encoderRight.start_continuous()

        frontLeftIR_pin = 14
        self.frontLeftIR = AnalogInput(self.tamp, frontLeftIR_pin)
        frontRightIR_pin = 15
        self.frontRightIR = AnalogInput(self.tamp, frontRightIR_pin)
        leftIR_pin = 16
        self.leftIR = AnalogInput(self.tamp, leftIR_pin)
        rightIR_pin = 17
        self.rightIR = AnalogInput(self.tamp, rightIR_pin)

        # Initialize PID Values
        self.P = 10
        self.I = 5
        self.D = 5
        self.last_diff = 0
        self.integral = 0
        self.desiredAngle = self.theta
        self.finishedCollectingBlock = False
        self.finishedDiscardingBlock = False

        self.timer = Timer()
        self.state = ExploreState()
        # self.state = CollectBlockState()

        self.blocksCollected = 0
        self.leftIRVals = deque([])
        self.rightIRVals = deque([])
        self.frontRightIRVals = deque([])
        self.frontLeftIRVals = deque([])

        self.goIntoTimeoutState = False
        self.timeoutCounter = 0

        # Starts the robot
        print "Robot setup complete."
コード例 #14
0
ファイル: semibot.py プロジェクト: sabinach/maslab-team3
    def setup(self):
        """One-time method that sets up the robot, like in Arduino"""

        ##--------------------------------------------##
        ##--------- DRIVING MOTORS (+encoder) --------##
        ##--------------------------------------------##

        # Create the motor objects
        self.lmotor = Motor(self.tamp, *LMOTOR_PINS)
        self.rmotor = Motor(self.tamp, *RMOTOR_PINS)

        # Create a subscriber to listen for drive motor commands
        rospy.Subscriber('drive_cmd', kitware.msg.DriveCMD,
                         self.drive_callback)

        ## --------- ##

        if ENCODER:
            # encoder objects
            self.lmotor_encoder = Encoder(self.tamp,
                                          *LMOTOR_ENCODER_PINS,
                                          continuous=True)
            self.rmotor_encoder = Encoder(self.tamp,
                                          *RMOTOR_ENCODER_PINS,
                                          continuous=True)

            # Publishers for encoder values
            self.pub_lmotor_encoder_val = rospy.Publisher('lmotor_encoder_val',
                                                          Int64,
                                                          queue_size=10)
            self.pub_rmotor_encoder_val = rospy.Publisher('rmotor_encoder_val',
                                                          Int64,
                                                          queue_size=10)

        ##--------------------------------------------##
        ##--------------- INTAKE MOTOR ---------------##
        ##--------------------------------------------##

        # Create the motor object
        self.intake_motor = Motor(self.tamp, *INTAKE_MOTOR_PINS)

        # Create a subscriber to listen for intake motor commands (passively continuous)
        rospy.Subscriber('intake_cmd', kitware.msg.DriveCMD,
                         self.intake_callback)

        ##--------------------------------------------##
        ##-------------- DISPENSER SERVO -------------##
        ##--------------------------------------------##

        # Setup servo
        self.servo = Servo(self.tamp, SERVO_PIN)
        self.servo.write(0)
        self.servo_val = 0
        self.delta = DISPENSOR_SPEED
        self.end = False

        # Subscriber to listen for drive motor commands
        rospy.Subscriber('dispenser_servo_speed', Int64,
                         self.dispenser_servo_callback)

        # Publisher for current servo value
        self.pub_dispenser_servo_val = rospy.Publisher('dispenser_servo_val',
                                                       Int64,
                                                       queue_size=10)

        ##--------------------------------------------##
        ##--------- DISPENSER MOTOR (+encoder) -------##
        ##--------------------------------------------##

        # Create the motor object
        self.dispenser_motor = Motor(self.tamp, *DISPENSER_MOTOR_PINS)

        # Create a subscriber to listen for dispenser motor commands
        rospy.Subscriber('dispenser_cmd', kitware.msg.DriveCMD,
                         self.dispenser_motor_callback)

        ## --------- ##

        if ENCODER:
            # encoder objects
            self.dispenser_motor_encoder = Encoder(
                self.tamp, *DISPENSER_MOTOR_ENCODER_PINS, continuous=True)

            # Publishers for encoder values
            self.pub_dispenser_motor_encoder_val = rospy.Publisher(
                'dispenser_motor_encoder_val', Int64, queue_size=10)

        ##--------------------------------------------##
        ##---------- General ---------##
        ##--------------------------------------------##

        # timer for loop()
        self.timer = Timer()

        # reset all motor encoders
        self.lmotor_encoder.val = 0
        self.rmotor_encoder.val = 0
        self.dispenser_motor_encoder.val = 0
コード例 #15
0
    def setup(self):
        #Pygame stuff
        pygame.init()
        self.screen = pygame.display.set_mode((300, 300))

        self.TicpIn = 4480 / 2.875

        self.color = Color(self.tamp,
                           integrationTime=Color.INTEGRATION_TIME_101MS,
                           gain=Color.GAIN_1X)

        self.uIR = DigitalInput(self.tamp, 17)
        self.uIR.val = 1

        self.servo = Servo(self.tamp, 9)
        self.servo.bottom = 0
        self.servo.top = 200
        self.servo.speed = 30
        self.servo.write(self.servo.bottom)
        self.servoval = self.servo.bottom
        self.delta = 0

        self.sorter = Servo(self.tamp, 5)
        self.sorter.center = 90
        self.sorter.right = 25
        self.sorter.left = 165
        self.sorter.speed = 15

        self.sorter.write(self.sorter.center)
        self.sorterval = self.sorter.center
        self.dsorter = 0

        self.encoderL = Encoder(self.tamp, 22, 23)
        self.encoderR = Encoder(self.tamp, 21, 20)

        self.init_time = time.time()
        # self.encoderL = Encoder(self.tamp, 23, 22)
        # self.encoderR = Encoder(self.tamp, 21, 20)

        #motor left
        self.motorL = Motor(self.tamp, 2, 4)
        self.motorLdrive = 0
        self.motorL.write(1, 0)
        #self.deltaL = 1
        #self.motorvalL = 0

        #motor right
        self.motorR = Motor(self.tamp, 1, 3)
        self.motorRdrive = 0
        self.motorR.write(1, 0)
        #self.deltaR = 1
        #self.motorvalR = 0

        #gyro

        self.gyro = Gyro(self.tamp, self.ss_pin, integrate=True)
        self.initAngle = self.gyro.val
        self.newAngle = 0
        self.blockAngle = 0
        self.blockDistance = 0
        print "initial angle:" + str(self.initAngle)

        self.prevGyro = 0
        self.drift = -.02875
        self.totalDrift = 0

        self.drifts = []

        self.PID = PID(.5, 1, 0.15)

        self.fwdVel = 0
        self.turnVel = 0
        self.turn = 0
        self.MoveArm, self.Top, self.Bottom = False, 0, 0

        self.Sort = 0
        self.SortPause = 0

        self.State = 1

        self.timer = Timer()
コード例 #16
0
    def setup(self):



        self.TicpIn = 4480/2.875

        self.ir_array = Ir_array(self.tamp, 16, 15, 14, 40, 11, 10)

        self.color = Color(self.tamp,
                           integrationTime=Color.INTEGRATION_TIME_101MS,
                           gain=Color.GAIN_1X)

        self.uIR = DigitalInput(self.tamp, 17)
        self.uIR.val = 1

        self.servo = Servo(self.tamp, 9)
        self.servo.bottom = 0
        self.servo.top = 200
        self.servo.speed = 30
        self.servo.write(self.servo.bottom)
        self.servoval = self.servo.bottom
        self.delta = 0


        self.sorter = Servo(self.tamp, 5)
        self.sorter.center = 90
        self.sorter.right = 25
        self.sorter.left = 165
        self.sorter.speed = 15

        self.sorter.write(self.sorter.center)
        self.sorterval = self.sorter.center
        self.dsorter = 0

        self.encoderL = Encoder(self.tamp, 22, 23)
        self.encoderR = Encoder(self.tamp, 21, 20)

        self.init_time = time.time()
        # self.encoderL = Encoder(self.tamp, 23, 22)
        # self.encoderR = Encoder(self.tamp, 21, 20)

        #motor left
        self.motorL = Motor(self.tamp, 2, 4)
        self.motorLdrive = 0
        self.motorL.write(1,0)
        #self.deltaL = 1
        #self.motorvalL = 0
        
        #motor right
        self.motorR = Motor(self.tamp,1, 3)
        self.motorRdrive = 0
        self.motorR.write(1,0)
        #self.deltaR = 1
        #self.motorvalR = 0

        #gyro
        
        self.gyro = Gyro(self.tamp, self.ss_pin, integrate=True)
        self.initAngle = self.gyro.val
        self.newAngle = 0
        self.blockAngle = 0
        self.blockDistance = 0
        # print "initial angle:"+str(self.initAngle)
        
        self.Follow = 'Right'
        self.IRs = {'Left': [0, 1, 2], 'Right': [5, 4, 3]}

        self.prevGyro = 0
        self.drift = -.02875
        self.totalDrift = 0

        self.drifts = []
        
        
        self.PID=PID(.5, 1, 0.15)
        self.IRPID = PID(10, 5, .15)

        self.fwdVel = 30
        self.turnVel = 0
        self.MoveArm, self.Top, self.Bottom = False, 0, 0

        self.Sort = 0
        self.SortPause = 0

        self.State = 1
        
        self.timer = Timer()
コード例 #17
0
    def setup(self):
        # initialize sensors, settings, start timers, etc.
        self.gameTimer = Timer()

        self.motorGripper = Motor(self.tamp, 23, 3)
        self.motorLeft = Motor(self.tamp, 7, 22)
        self.motorRight = Motor(self.tamp, 0, 21)
        self.motorval = 0
        self.motorLeft.write(1, 0)
        self.motorRight.write(1, 0)
        self.motorGripper.write(1, 0)
        self.currentGripperLevel = 2
        print "Motors connected."

        self.servoDoor = Servo(self.tamp, 20)
        self.servovalDoor = self.DOOR_CLOSE_POS
        self.servoDoor.write(self.DOOR_CLOSE_POS)
        self.timerDoor = Timer()
        self.servoGripper = Servo(self.tamp, 10)
        self.servovalGripper = self.GRIPPER_CLOSE_POS
        self.servoGripper.write(self.servovalGripper)
        self.timerGripper = Timer()
        print "Servos connected."

        self.timer = Timer()
        self.gyro = Gyro(self.tamp, 9)
        print "Gyro connected."
        self.theta = self.gyro.val
        self.dT = .01

        self.cam = cv2.VideoCapture(0)

        print "Camera connected."

        self.color = Color(self.tamp,
                           integrationTime=Color.INTEGRATION_TIME_101MS,
                           gain=Color.GAIN_1X)

        frontLeftIR_pin = 14
        self.frontLeftIR = AnalogInput(self.tamp, frontLeftIR_pin)
        frontRightIR_pin = 15
        self.frontRightIR = AnalogInput(self.tamp, frontRightIR_pin)
        leftIR_pin = 16
        self.leftIR = AnalogInput(self.tamp, leftIR_pin)
        rightIR_pin = 17
        self.rightIR = AnalogInput(self.tamp, rightIR_pin)

        # Initialize PID Values
        self.P = 10
        self.I = 0  #5
        self.D = 0
        self.last_diff = 0
        self.integral = 0
        self.desiredAngle = self.theta
        self.finishedCollectingBlock = False
        self.finishedDiscardingBlock = False

        self.timer = Timer()
        self.state = ExploreState()
        # self.state = CollectBlockState()

        self.blocksCollected = 0
        self.leftIRVals = deque([])
        self.rightIRVals = deque([])
        self.frontRightIRVals = deque([])
        self.frontLeftIRVals = deque([])

        # Starts the robot
        print "Robot setup complete."
コード例 #18
0
 def setup(self):
     self.servo = Servo(self.tamp, 9)
     self.servo.write(1050)
     self.timer = Timer()
     self.end = False
コード例 #19
0
    def setup(self):

        self.init_time = time.time()

        self.functions = {}

        self.servo = Servo(self.tamp,self.arm_pin)
        # self.servo.write(20)
        # self.servoval = 20
        # self.delta = 0
        self.functions['servoARM'] = lambda angle: self.servo.write(angle)

        self.sorter = Servo(self.tamp, self.sorter_pin)
        # self.sorter.center = 98
        # self.sorter.right = 20
        # self.sorter.left = 170
        # self.sorter.speed = 30
        self.functions['servoSORT'] = lambda angle: self.sorter.write(angle)

        self.encoderL = Encoder(self.tamp, *self.Lencoder_pins)
        self.encoderR = Encoder(self.tamp, *self.Rencoder_pins)

        #motor left
        self.motorL = Motor(self.tamp, *self.Lmotor_pins)
        self.motorLdrive = 0
        self.motorL.write(1,0)
        #self.deltaL = 1
        #self.motorvalL = 0
        self.functions['left'] = lambda speed: self.motorL.write(speed<0, abs(speed))
        
        #motor right
        self.motorR = Motor(self.tamp, *self.Rmoter_pins)
        self.motorRdrive = 0
        self.motorR.write(1,0)
        #self.deltaR = 1
        #self.motorvalR = 0
        self.functions['right'] = lambda speed: self.motorR.write(speed<0, abs(speed))

        #gyro
        
        self.gyro = Gyro(self.tamp, self.ss_pin, integrate=True)
        self.initAngle = self.gyro.val

        print "initial angle:"+str(self.initAngle)
        

        self.prevGyro = 0
        self.drift = -.02875
        self.totalDrift = 0

        self.drifts = []
        
        
        self.PID=PID(2,1,0.15)

        self.fwdVel = 0
        self.turnVel = 0
        self.maxVel = 40

        self.Distance = 0

        self.MoveArm, self.Top, self.Bottom = False, 0, 0
        

        self.Sort = 0
        self.SortPause = 0

        self.timer = Timer()

        #connect to pipe
        pipe_path = "./robot"
        try:
            os.mkfifo(pipe_path)
        except OSError:
            print "error"
        self.pipe_fd = os.open(pipe_path, os.O_RDONLY | os.O_NONBLOCK)
コード例 #20
0
ファイル: arms.py プロジェクト: skrub-wreckers/software
 def __init__(self, tamp):
     self.latch = Servo(tamp, pins.stack_latch, 1830, 1130)
     self.latch.write(0)