estimateTime creates a time vector that respects velocity limits
Arguments:
Positions - [numWaypoints x numJoints] matrix
Parameters:
'VelocityLimits' [rad/s] is a vector of velocity
limits for each joint.
'AccelerationLimits' [rad/s^2] is a vector of acceleration
limits for each joint
'Heuristic' is the internally used heuristic:
- 'NFabian' estimates the segment time based on the
maximum accel and velocity provided.
- 'VelocityRamp' estimates the segment times based on
a trapezoidal velocity profile
- 'MinJerk' is a basic heuristic that simply divides the
distance by the maximum velocity
'FabianConstant' is a magic constant used only for the
'NFabian' method.
'ApplyScalingStep' applies a second step after the initial
heuristic that scales the time such that the result is
exactly within the velocity limits. (defaults to true)
Example:
% Estimate time vector for multi-joint waypoints
position = [
0, 1, 2, 3
2, 3, 4, 5
6, 2, 6, 2
1, 2, 3, 3
5, 7, 7, 9
];
trajGen = HebiTrajectoryGenerator();
% Estimate time
time = trajGen.estimateTime(position, ...
'VelocityLimits', [3, 2, 3, 4], ...
'AccelerationLimits', [500, 250, 500, 250], ...
'heuristic', 'VelocityRamp');
% Compute trajectory with the estimated time vector
trajectory = trajGen.newJointMove(position, 'time', time);
HebiUtils.plotTrajectory(trajectory)