Ramp

This code navigates the robot up the temporary access ramp and down the main construction ramp.

#ifndef RAMP_H
#define RAMP_H

void tempRamp();
void mainRamp();

#endif // RAMP_H
// Required FEH libraries
#include <FEHRPS.h>

// Required custom libraries
#include "constants.h"
#include "drive.h"
#include "start.h"
#include "ramp.h"

/* This function drives the robot up the temporary access ramp.
 * This function starts after the RPS heading check at the lower entrance to the ramp
 * and ends after the RPS X check with the fuel light at the top of the ramp.
 * Last modified: 4/2/2016 JKL
 */
void tempRamp() {

    driveUntilBump(90, 120, 2);
    driveUntilBump(7, 120, 1);
    driveUntilBump(0, 50, 1);
    driveUntilBump(275, 70, -1);
    driveUntilTime(270, 60, 200, false);
    driveUntilRPSxRange( RPSTempRampTopX, 25, 270, 0.3, 3000);

    // if the robot is on the ramp still, keep driving until RPS is reacquired
    while (RPS.X() == -1) {
        driveUntilTime( 270, 90, 100, false);
    }

    driveUntilRPSxRange( RPSTempRampTopX, 25, 270, 0.3, 3000);
    turnUntilRPS(0, 20, 1000);
} // end tempRamp function

/* This function drives the robot down the main ramp.
 * This function starts at the blue toggle and ends after a heading check at the bottom of the main ramp.
 * Last modified: 4/2/2016 JKL
 */
void mainRamp() {

    driveUntilTime(270, 100, 1100, false);
    driveUntilRPSx( RPSTopRampX - RPSTopRampXOffset, 28, 0, 1000);
    driveUntilRPSyRange( RPSTopRampY, 28, 0, 0.4, 1000);
    turnUntilRPS(180, 20, 1000);

    // 358 heading to ensure that robot does not get caught on the weather station
    driveUntilTime(358, 50, 3200, true);

    driveUntilRPSyRange( RPSBottomRampY, 27, 0, 0.75, 4000);
    turnUntilRPS(180, 20, 1000);
} // end mainRamp function

A fast version was written, but not used during final competition.

#ifndef RAMP_FAST_H
#define RAMP_FAST_H

void tempRamp_fast();
void mainRamp_fast();

#endif // RAMP_H
// Required FEH libraries
#include <FEHRPS.h>

// Required custom libraries
#include "constants.h"
#include "drive.h"
#include "start.h"
#include "ramp_fast.h"

/* This function drives the robot up the temporary access ramp.
 * This function starts after the RPS heading check at the lower entrance to the ramp
 * and ends after the RPS X check with the fuel light at the top of the ramp.
 * Last modified: 4/2/2016 JKL
 */
void tempRamp_fast() {

    driveUntilBump(90, 120, 2);
    driveUntilBump(7, 120, 1);
    driveUntilBump(275, 70, -1);
    driveUntilTime(270, 60, 200, false);
    driveUntilRPSxRange( RPSTempRampTopX, 25, 270, 0.3, 3000);
    while (RPS.X() == -1) {
        driveUntilTime( 270, 90, 150, false);
    }
    driveUntilRPSxRange( RPSTempRampTopX, 25, 270, 0.3, 3000);
    turnUntilRPS(0, 20, 1000);
} // end tempRamp function

/* This function drives the robot down the main ramp.
 * This function starts at the blue toggle and ends after a heading check at the bottom of the main ramp.
 * Last modified: 4/2/2016 JKL
 */
void mainRamp_fast() {

    driveUntilTime(270, 130, 800, false);
    driveUntilRPSx( RPSTopRampX - RPSTopRampXOffset, 28, 0, 1000);
    driveUntilRPSyRange( RPSTopRampY, 28, 0, 0.4, 1000);
    turnUntilRPS(180, 20, 1000);
    // 358 heading to ensure that robot does not get caught on the weather station
    driveUntilTime(358, 50, 3000, true);
    driveUntilRPSyRange( RPSBottomRampY, 27, 0, 1, 4000);
    turnUntilRPS(180, 20, 1000);
} // end mainRamp function