Aikido
aikido::planner::kunzretimer Namespace Reference

Classes

class  KunzRetimer
 Class for performing time-optimal trajectory retiming following subject to velocity and acceleration limits. More...
 

Functions

std::unique_ptr< aikido::trajectory::SplinecomputeKunzTiming (const aikido::trajectory::Interpolated &inputTrajectory, const Eigen::VectorXd &maxVelocity, const Eigen::VectorXd &maxAcceleration, double maxDeviation=1e-2, double timeStep=0.1)
 Computes the time-optimal timing of a trajectory consisting of a sequence Geodesic interpolations between states under velocity and acceleration bounds. More...
 

Function Documentation

◆ computeKunzTiming()

std::unique_ptr<aikido::trajectory::Spline> aikido::planner::kunzretimer::computeKunzTiming ( const aikido::trajectory::Interpolated inputTrajectory,
const Eigen::VectorXd &  maxVelocity,
const Eigen::VectorXd &  maxAcceleration,
double  maxDeviation = 1e-2,
double  timeStep = 0.1 
)

Computes the time-optimal timing of a trajectory consisting of a sequence Geodesic interpolations between states under velocity and acceleration bounds.

The output is a parabolic spline, encoded in cubic polynomials. It firstly preprocesses a non-differentiable path to a differentiable one by adding circular blends; and then exactly follows the preprocessed path.

The output trajectory consists of a sequence of trapezoidal velocity profiles that implement bang-bang control. This function curently only supports RealVector, SO2, and compound state spaces of those types. Additionally, this function requires that inputTrajectory to be interpolated using a GeodesicInterpolator.

Parameters
[in]inputTrajectoryInput piecewise Geodesic trajectory
[in]maxVelocityMaximum velocity for each dimension
[in]maxAccelerationMaximum acceleration for each dimension
[in]maxDeviationMaximum deviation from a waypoint in doing circular blending around the waypoint
[in]timeStepTime step in following the path
Returns
Time optimal trajectory that satisfies velocity and acceleration constraints