I'm simulating a warehouse (in Unity) where forklifts and other vehicles transport stuff from point A to point B. The routes are modeled as a graph with vertices and edges. Every transport is saved as a task in a backend system with the relevant data such as starting time, end time, starting point, end point. Therefore I have the duration t and the distance traveled s.
Right now I'm running the simulation with constant 50fps, therefore one time step occurs every 0,02s.
The simulation has its own clock that can be speed up by a multiplier T.
The goal is to simulate every task of a given time span, so that every vehicle starts moving at the start time of the task and stops moving at the end time of the task.
So far I've been using a constant velocity to achieve this. I calculate the velocity from given distance & duration multiplied by the simulation speed multiplier. The result isn't perfect since the duration to complete a task could be not a whole number like 20,4 time steps ( or ticks) which will be 21 => the task took "0,6" time steps too long. But that's another problem.
I'd like to add acceleration. When a vehicle starts a task it'll accelerate and then move at a constant maximum velocity so that it completes its task in the given duration. But what's the desired acceleration and maximum velocity?
s_a = 0.5*a*t^2
s_v = v_max *t
s_b = 0.5 * a_b * t^2
The Attempt at a Solution
I'm thinking of splitting the distance s into three parts :
-S_a the distance traveled during acceleration,
- S_v the distance traveled with maximum velocity,
- S_b the distance traveled when stopping.
s = s_a + s_v + s_b
After looking into the data of a real forklift the acceleration time is ~5s.
Therefore a = V_max / 5s. And let's say the deceleration takes about 1s.
I'd like to know how to calculate velocity v_max. This is not a homework, it's my own project.