Slew
Click here for documentation on slew for each movement in EZ-Template!
Slew Class​
slew()​
Creates a slew object with constants. Robot will start at min_speed and will be at the maximum set speed once distance is traveled.
distance distance to travel until maximum speed is reached.
minimum_speed starting speed.
- Prototype
- Example
ez::slew lift_Slew(100, 60);
slew(double distance, int minimum_speed);
constants_set()​
Sets slew constants.
distance distance to travel until maximum speed is reached.
minimum_speed starting speed.
- Prototype
- Example
PID lift_slew;
void initialize() {
lift_slew.constants_set(100, 50);
}
void constants_set(double distance, int minimum_speed);
initialize()​
Setup for slew. Keeps track of where the starting sensor value is and what the maximum target speed is.
enabled true if you want slew to run, false if you don't.
maximum_speed the target speed for the robot to reach.
target the distance to reach before max speed is hit.
current the current sensor value.
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void initialize(bool enabled, double maximum_speed, double target, double current);
iterate()​
Iterates slew calculation and returns what the current max speed should be.
current the current sensor value.
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void autonomous() {
while (lift.get_position() <= 500) {
lift = lift_slew.iterate(lift.get_position();
pros::delay(10);
}
lift = 0;
}
double iterate(double current);
output()​
Returns what the current max speed should be.
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void autonomous() {
while (lift.get_position() <= 500) {
lift_slew.iterate(lift.get_position();
lift = lift_slew.output();
pros::delay(10);
}
lift = 0;
}
double output();
enabled()​
Returns if slew is currently active or not.
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void autonomous() {
printf("Slew Enabled? %f\n", lift_slew.enabled()); // Returns true
while (lift.get_position() <= 500) {
lift_slew.iterate(lift.get_position();
lift = lift_slew.output();
pros::delay(10);
}
lift = 0;
printf("Slew Enabled? %f\n", lift_slew.enabled()); // Returns false
}
double output();
speed_max_set()​
Sets the max speed slew can be.
speed maximum speed the output can be
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void autonomous() {
while (lift.get_position() <= 500) {
if (lift.get_position() < 100)
lift_slew.speed_max_set(50);
else
lift_slew.speed_max_set(127);
lift_slew.iterate(lift.get_position();
lift = lift_slew.output();
pros::delay(10);
}
lift = 0;
}
void speed_max_set(double speed);
speed_max_set()​
Returns the max speed slew can be.
- Prototype
- Example
PID lift_slew;
pros::Motor lift(1);
void initialize() {
lift_slew.constants_set(100, 50);
lift_slew.initialize(true, 127, 500, lift.get_position());
}
void autonomous() {
while (lift.get_position() <= 500) {
if (lift.get_position() < 100)
lift_slew.speed_max_set(50);
else
lift_slew.speed_max_set(127);
printf("%.2f", lift_slew.speed_max_get());
lift_slew.iterate(lift.get_position();
lift = lift_slew.output();
pros::delay(10);
}
lift = 0;
}
double speed_max_get();
/**
- Sets the max speed the slew can be
- \param speed
- maximum speed */ void speed_max_set(double speed);
/**
- Returns the max speed the slew can be */ double speed_max_get();