Custom PID PROS

move_absolute andmove_relative have a max velocity argument. So you can piece together steps at different speeds.

You might be able to have more fluid movement replicating this using the built in PID to control speed with move_velocity in steps using get_position to determine the change in velocity.
pseudo code example

motor.move_velocity(50);
while (motor.get_position() < first_position) {
  pros::delay(10);
}
motor.move_velocity(200);
while (motor.get_position() < second_position) {
  pros::delay(10);
}
motor.move_velocity(30);
while (motor.get_position() < third_position) {
  pros::delay(10);
}
motor.move_velocity(0);

A more advanced option is to have one while loop and if statements to more gradually control starting and stopping. Then you could add counters to increase and decrease in more steps.

If you are writing your own PID you can use move_voltage.

I recommend NOT changing the built in PID values. That can have some bad consequence.

BTW, I do recommend looking in to OkapiLib examples. But first get the basics of PID and motion planning.

If you need more help keep asking questions.