### Time-Optimal Path Parameterization by Reachability Analysis (TOPP-RA)

TOPP-RA is the latest theoretical development for solving the Time-Optimal Path Parameterization (TOPP) problem. TOPP-RA achieves 100% success rate while being faster than the state-of-the-art implementation of the classic Bobrow algorithm. The current implementation of TOPP-RA supports the following constraints :

- joint velocity and acceleration bounds;
- torque bounds (including redundantly-actuated manipulators);
- contact stability for legged robots.

**Reference**

- A new approach to Time-Optimal Path Parameterization based on Reachability Analysis [pdf]

### Time-Optimal Path Parameterization (TOPP) à la Bobrow

We implemented in C++ the classic algorithm to find the time-optimal parameterization of a given path under kinodynamic constraints. Currently, the standalone version supports :

- pure kinematic (velocity and acceleration) bounds;
- general quadratic bounds;
- kinematic and dynamic bounds in SE(3).

The OpenRAVE-enabled version supports moreover :

- torque bounds;
- contact stability bounds;
- torque bounds for redundantly-actuated robots.

**References**

- A general, fast, and robust implementation of the
time-optimal path parameterization algorithm,
*IEEE Transactions on Robotics*, 2014 [pdf] - Time-optimal path parameterization for
redundantly-actuated robots: a numerical integration
approach,
*IEEE/ASME Transactions on Mechatronics*, 2015 [pdf] - Time-optimal path parameterization of rigid-body
motions: applications to spacecraft
reorientation,
*Journal of Guidance, Control, and Dynamics*, 2016 [pdf] - Admissible Velocity Propagation: beyond quasi-static
path planning for high-dimensional
robots,
*International Journal of Robotics Research*, 2017 [pdf]

### Time-Optimal Parabolic Interpolation (Parabint)

We implemented, in standalone Python files, the algorithm to find the time-optimal multi-dof parabolic interpolation subject to velocity, acceleration and minimum-switch-time constraints.

**Reference**

- Time-optimal parabolic interpolation with velocity,
acceleration, and minimum-switch-time constraints,
*Advanced Robotics*, 2016 [pdf]

### Converting cone representations [deprecated]

Every Polyhedral Convex Cone (PCC) **P** has
two different representations, the *face*
representation and the *positive span* representation
:

**P**= face{**a**_{1},...,**a**_{m}} = {**x**:**a**_{1}^{T}**x**≤ 0,...,**a**_{m}^{T}**x**≤ 0}**P**= span{**u**_{1},...,**u**_{k}} = {c_{1}**u**_{1}+ ... + c_{k}**u**_{k}: c_{1}≥ 0 ... c_{k}≥ 0}

In his thesis (1991), S. Hirai described an algorithm to convert one representation into the other and gave an implementation in LISP. Here we re-implemented that algorithm in the more modern Python language :

- PCC.txt (the main algorithm in Python, rename to .py to use)
- test-PCC.txt (an example of computation that makes use of the conversion, rename to .py to use)