protected void execute() {
        //Check if the climber is at the end
        checkSwitches();
        
        double speed = 0;
        if (m_isRising){
            //Use full speed on the upstroke
            
            //if (Timer.getFPGATimestamp()-m_startRise < 0.6*RISE_STROKE_LENGTH){
                speed = 1;
            //}else{
            //    speed = .8;
            //}
            System.out.println("Raising for next pull");
        }else{
            
            //Go at 80% speed until the pole is grabbed
            if (!m_grabbedPole){
                speed = -.8;
                if (Robot.ratchetClimber.getCurrent() > 12.5 && Timer.getFPGATimestamp() - m_startDescent > 0.5){
                    m_grabbedPole = true;
                }
                System.out.println("Waiting to grab the pole");
            }else{
                //After the pole is grabbed, start a timer. Use the timer as Y in the function y/5 + .7 to get the speed; creates a ramp effect
                
                if (m_timer == null){
                    m_timer = new Timer();
                    m_timer.start();
                    System.out.println("Grabbed the pole");
                }
                double timerSpeed = (m_timer.get()/5) + .7;
                if ((timerSpeed) < 1.0){
                    speed = -timerSpeed;
                    System.out.println("Climbing with speed of " + -timerSpeed);
                }else{
                    speed = -1;
                    System.out.println("Climbing with full speed");
                }
            }
            speed = speed*Robot.oi.getLeftThrottle();
        }
        
        Robot.ratchetClimber.driveMotor(speed);
    }