Controlling the speed and position of a linear actuator
It's 6 months old, but bumped by the system and the given answer is unrelated to the question. I'll try.

To answer the original question, yes, you will need a cascade controller.
I think you can do this with two PID control loops.



The first PID loop is for position, it computes error based on where it is and where to go. The output of this PID is the speed setpoint for the next PID.
The output of the first PID must be limited to the maximum speed of the system. Otherwise Ki will saturate.

The second PID loop for the speed takes the current speed, and the requested speed (+/- direction) from the first PID and sets motor current accordingly.
This PID has a faster system if you have a gearbox.

You also might also want to limit the acceleration.
I'm not sure of the best place in the loop to do this. Maybe a third PID parallel the position pid only able the reduce the speed setpoint if it acceleration was too quickly. Feel free to comment/edit.

I've made a similar setup with 3 PID loops, one extra loop subtracts from the second setpoint if system limits are exceeded on the actuator. For example in this situation it might perform motor current limiting when blocked or with heavy load.

Fuzzy control loops can be a suitable alternative depending on your application requirements.