### Time-Optimal Path Parameterization (TOPP)

We implemented in C++ the classic algorithm to find the time-optimal parameterization of a given path under kinodynamic constraints (see our paper "A general, fast, and robust implementation of the time-optimal path parameterization algorithm").

Currently, the standalone version supports :

- pure kinematic (velocity and acceleration) bounds;
- general quadratic bounds;
- rigid-body motions (see our paper "Time-optimal path parameterization of rigid-body motions: applications to spacecraft reorientation").

The OpenRAVE-enabled version supports moreover :

- torque bounds;
- contact stability bounds;
- redundantly-actuated robots (see our paper "Time-optimal path parameterization for redundantly-actuated robots").

Please go to the GitHub page of the project to access the latest releases and to contribute.

### 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 (see our paper "Time-optimal parabolic interpolation with velocity, acceleration and minimum-switch-time constraints").

### 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)