AccelerationMotionProfile#

The AccelerationMotionProfile class generates an acceleration-only velocity profile. This class is useful for creating smooth motion profiles for robotic applications.

Constructor#

To initialize an AccelerationMotionProfile, you need to provide the following parameters:

  • maxVel: The maximum velocity.

  • maxAccel: The maximum acceleration.

AccelerationMotionProfile(maxVel: Double, maxAccel: Double)

Methods#

regenerateProfile(distance: Double)#

Regenerates the velocity profile for a given distance.

reset()#

Resets the profile, start time, and total time.

generateProfile(distance: Double)#

Generates the velocity profile for a given distance. This method calculates the acceleration time and creates a profile with time, velocity, and acceleration.

start()#

Starts the profile by setting the start time to the current time.

getTarget(): Pair<Double, Double>#

Returns the target velocity and acceleration at the current time.

getVelocity(): Double#

Returns the current target velocity.

Example#

val profile = AccelerationMotionProfile(2.0, 1.0)
profile.regenerateProfile(10.0)
profile.start()

val (velocity, acceleration) = profile.getTarget()
println("Velocity: $velocity, Acceleration: $acceleration")
@TeleOp
public class TestOpMode extends LinearOpMode {

    @Override
    public void runOpMode() throws InterruptedException {
        AccelerationMotionProfile profile = new AccelerationMotionProfile(2.0, 1.0);
        profile.regenerateProfile(10.0);

        telemetry.addData("Status", "Initialized");
        telemetry.update();

        waitForStart();

        while (opModeIsActive()) {
            motor.setPower(profile.getVelocity()); // this will automatically calculate it and do it once
            profile.reset();// this will reset the profile
            profile.regenerateProfile(10.0); // this will regenerate the profile and reset it all 
        }
    }
}