I want my robot to move 50 cm. I want its average speed to be 3.5 cm/s. However, I want my robot to accelerate at the beginning and slow down as it approaches 50 cm. In essence, a graph of robot’s speed vs. time should be a parabola that opens down. The average value of this graph should be 3.5 cm/s.

So I’m starting with the average rate that I want. How do I generate a parabola whose average value is the rate I want? Specifically, how do I figure out the peak speed my robot should achieve?

Most people use a trapezoidal velocity profile, which makes the problem a bit simpler since the acceleration during the increasing and decreasing velocity segments is constant.

The speed profile you suggest is not trapezoidal, and the robot cannot instantaneously start moving at a particular speed.

A graph of a trapezoidal speed profile looks something like this:

The acceleration is constant for segments OP and QR, zero for PQ.

The parabolic speed profile you proposed looks like this, and the acceleration is always changing.

Regardless of which type of profile you choose, the details will depend on the desired average speed and the distance to travel. In some cases of a trapezoidal profile there may not be time or distance for a “flat top”, so some decision making is required.