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();