CHANGELOG
Changelog for package toppra
0.6.7 (2026-04-09)
build(cpp): Modernize googletest CMake usage (#283)
Contributors: Sebastian Castro
0.6.6 (2026-03-31)
0.6.5 (2026-03-27)
0.6.4 (2026-01-26)
chore: Bump version to 0.6.4 (#268)
Fix Python and C++ CI, disable ECOS solver in tests (#270)
build: Move Python library to its own subfolder to support building as ROS 2 package (#266)
fix(test): Use ASSERT_NEAR for 0 comparison in test_parametrizer.cpp (#265)
fix(cpp): incoherent bounds seidel lp 1d (#247)
Contributors: Erik Holum, Joseph Mirabel, Maxim Skripnik, Sebastian Castro, Silvio Traversaro
0.6.3 (2025-03-16)
Updated interface for numpy > 2.0 (#259)
Contributors: Zachary Kingston
0.6.2 (2023-09-19)
0.6.1 (2023-04-21)
chore: Bump toppra version: ‘0.6.0’ –> ‘0.6.1’ ( #233)
fix: fix numerical issue in Seidel 1D solver.
Contributors: Joseph Mirabel
0.6.0 (2023-03-08)
0.5.2 (2022-11-19)
Bump version: 0.5.1 → 0.5.2
chore: make C++ always define all installed symbols. (#215)
feat: Allow setting N=0 to select gridpoints automatically (#201)
feat: Improve the cubic spline, hermite spline factory methods (#202)
doc,build: Minor adjustments to docstring for a clearer explaination
doc: Improve PiecewisePolyPath constructor docstring
Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
0.5.1 (2022-07-15)
Bump version: 0.5.0 → 0.5.1
Contributors: Hung
0.5.0 (2022-07-14)
Bump version: 0.4.2 → 0.5.0
Make path times public. (#197)
Fixed bug in ConstAccel parametrizer where evaluating valid times can sometimes result in an exception being thrown. (#193)
Google Test: master -> main (#192)
CI works (#191)
doc: Add some doc to compiling C++
Fixed incorrect variable bug in seidel.cpp which was causing memory issues. (#190)
Added a check to test the input times to the constaccel parametrizer are within the bounds of the parameterizer, and clampe resulting path values to the lower bound as well as the upper bound.
Chnaged path length in test to a more “usual” length value to avoid condusion
Clamp all path times to the upper bounds of the path in the const accel parametrizer. Fixes #184.
Allow to build static library (#178)
Add BUILD_TESTS option (#181)
Fixes for windows builds (#179)
Contributors: Antoine Hoarau, Hung, Hung Pham (Phạm Tiến Hùng), Jason Ernst, Jess Moss, Joseph Mirabel, Steve Golton
0.4.2 (2021-08-08)
Bump version: 0.4.1 → 0.4.2
Replace for loop in piecewise poly path to find index by std::lower_bound. (#177)
Remove invalid characters from README.md (#173)
[CPP] Implement Spline Parametrizer (#162)
Bump version: 0.4.0 → 0.4.1
Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Jakob LUDWIGER, John Wason, leonardoedgar
0.4.0 (2021-03-16)
Bump version: 0.3.1 → 0.4.0
Merge branch ‘develop’
[ci]Fix version. Add bump2version config file to manage.
[ci,cmake]Missing python version in cmake command
[ci,cmake]Find boost with given python version
Merge pull request #161 from leonardoedgar/develop [cpp] Construct spline with 1st and 2nd order derivatives at curve endpoints
add docstring and minor changes based on comments
remove unnecessary variables, copy constructors, and minor fixes based on comments
add support for mixed 1st and 2nd order boundary conditions
move duplicated function makeVectors into a separate file
add tests for constructing spline from 1st and 2nd order derivatives at curve endpoints
implement spline construction from 1st and 2nd order derivatives from the curve endpoints
Merge pull request #160 from jmirabel/develop [cpp] Enhance Seidel solver.
[cpp][seidel] Comment and clarify code
[cpp][seidel] Move re-ordering of rows in Seidel::solveStagewiseOptim
[cpp][Seidel] Remove solve_lp1d_atomic
[cpp] fix handling of THR_VIOLATION in Seidel.
[cpp] Fix bugs.
[cpp] Add PathParametrizationAlgorithm::setInitialXBounds.
[Seidel] Robustify and improve performances + add unit test from real experiments.
[Seidel] Improve logging macro.
[Seidel] Fix prototypes.
[Seidel] Better handling of bound constraints.
[Seidel] Improve numerical stability + unit test seidel functions.
Add package.xml to allow this package to build with catkin.
Add TOPPRA_LOG_WARN.
Merge pull request #158 from jmirabel/develop [cpp] Add Seidel solver.
[C++] Run algo unit test for each solvers.
[C++] Use Seidel if no other solver are available.
[C++] Seidel: cosmetic change.
[C++] Seidel: cosmetic change.
[C++] Simplify test_solver.cpp
[C++] Simplification of Seidel solver.
[C++][Minor] Fix debug output.
[C++] Add toppra::solver::Seidel
[C++] PathParametrizationAlgorithm::getParameterizationData returns a const ref
[Doc] Add comment (related to #156)
Merge pull request #153 from Synxis/develop Fix wrong variable for velocity
Fix wrong variable velocity used
Merge pull request #146 from jmirabel/develop [cpp] Add CartesianVelocityNorm and an implemention with Pinocchio
[cpp][doc] Fix inheritance missed by Doxygen.
[cpp] Expose CartesianVelocityNorm in Python
[cpp] Add CartesianVelocityNorm and an implemention with Pinocchio
Merge pull request #143 from jmirabel/develop [Cpp] Add PathParametrizationAlgorithm::setGridpoints
[Cpp] Add PathParametrizationAlgorithm::setGridpoints
Merge pull request #129 from hungpham2511/feat-parametrizer [cpp]Implement trajectory parametrizer
[cpp]Update const_accel code based on comment
[cpp]Add a minor comment on TOPPRA_NEARLY_ZERO
[cpp]Add missing file. Modify code based on review. Add unit test.
Update HISTORY.md. Remove unused files.
[cpp]Minor docstring improvement.
[cpp]Improve test suite. Disable unhelpful assertions.
[cpp]Tidy up const accel parametrizer code. Fix bug.
[cpp]Turn on DEBUG mode in tests
[cpp]Add test to constaccel parametrizer. Bug fixed.
[cpp]Bug fixed
Merge remote-tracking branch ‘origin/feat-parametrizer’ into feat-parametrizer
Merge pull request #140 from ndehio/feat-parametrizer Adding full cpp-example using parametrizer
[docs]Improve some docstrings
Minor bugs fixed
[docs]Add instruction for building doxygen doc
[docs]Add some instructions to building cpp code
add full toppra-example (note: test fails…)
add missing parametrizer in CMake
fix issue: assign return-code in m_data.ret_code
add missing validate() method
[cpp]Implement reparametrization internal computation
[cpp]Reorganize API design. Use less virtual public methods.
[cpp]Reformat code with clang
[cpp]Compute time instances and accels from data
[cpp]Setup the overall API
Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel, Niels Dehio, Thibault LESCOAT, leonardoedgar
0.3.1 (2020-08-23)
Release v0.3.1
Merge pull request #125 from jmirabel/develop [cpp] Add the possible to use varying joint velocity limits.
[cpp] Add the possible to use varying joint velocity limits.
Merge branch ‘develop’ into feat/striptype
Merge pull request #111 from jmirabel/develop [C++] Fix GLPK bound type + numerical issues
[cpp] Initialiaze m_configSize in PiecewisePolyPath::initAsHermite
[cpp] Add some getter and setter to JointTorque
[cpp] Check boundaries in solver + fix numerical issue.
[C++] Add some debugging message.
[C++] Fix GLPK bound type.
Merge pull request #120 from hungpham2511/bindings [cpp]A numerical improvement. Refine tests.
[cpp]Improve numerical evaluation for qpoases solver
[cpp]Clamp velocities to be within the controllable sets
[cpp]Add an option to force build python bindings
Merge pull request #118 from jmirabel/bindings [cpp][cmake] Fix PYTHON_VERSION variable.
Merge pull request #119 from hungpham2511/feat/bindings [cpp]Import pinocchio only when PINOCCHIO python flag is defined
[cpp]Import pinocchio only when PINOCCHIO python flag is defined
[cpp][cmake] Fix PYTHON_VERSION variable.
Merge branch ‘develop’ into feat/striptype
Merge pull request #114 from hungpham2511/feat/bindings [cpp]Feature: Bindings for multiple components
Merge branch ‘develop’ into feat/bindings
Merge pull request #116 from jmirabel/bindings [cpp] Update Python Bindings + fix numerical issues.
[cpp] Fix binding of LinearConstraint::computeParams + test.
[cpp][minor] Update Python bindings.
[cpp] Allow friction to be null + Fix jointTorque::Pinocchio memory management
Merge pull request #115 from hungpham2511/python2 [cpp]Add an option to configure Python version when building the Python bindings
[Minor] Fix documentation.
[cpp] Fix numerical issue (tiny negative sd^2)
[cpp] Expose GeometricPath.computeParams to Python.
[cpp] Fix collocationToInterpolate
[cpp] move bindings of geometric paths into separate file.
[cpp] move bindings of constraints into separate file.
[cpp] Add jointTorque::Pinocchio::fromURDF
[cpp] Remove unnecessary wrappers.
[cpp] Python bindings directly use the C++ interface.
[cpp] Use shared ptr for LinearConstraint derived classes.
[cpp] Provide bindings for jointTorque::Pinocchio
[cpp] Fix Python bindings. in order to make them fully compatible with current Python implementation of TOPP-RA.
[cpp]Fix a numerical issue
[cpp]Provide option to build pybind against different python versions
[cpp]Bind toppra algorithm.
[cpp]Bind supporting structs
[cpp]Reformat code
[cpp]Bind accel constraints
[cpp]Linear Velocity constraint
Merge pull request #110 from hungpham2511/feat/bindings [cpp,python]Feature: Improve PiecewisePolyPath
[cpp]constructHermite as static method
format code, fix compilation issue
[ci]Fix CI to install msgpack
[binding] Provide binding for constructHermite
[cpp] Construct a Hermite Cubic spline as piecewise poly
Add test case for hermite spline.
[python] Bind serialization to python
[cpp] Make serialization optional with OPT_MSGPACK option
[cpp] Implement serialization for trajectory class using msgpack
Use const ref to avoid copy data
Extract piecewise_poly_path declaration to a separate header
Implement conversion of Matrices, bind path_interval
explicitly cast to py::array_t
Add test case for python bindings.
Install pybind11 bindings to python src dir.
Initial bindings
Merge pull request #99 from jmirabel/refactoring_solver Update API to enable user to choose a solver.
Merge branch ‘develop’ into refactoring_solver
[Minor] Fix include order.
[Minor] Fix some doc.
Move default Solver creation to Solver and initialization to TOPPRA.
Select default solver according to build options.
Update unit test to refactoring.
Adapt PathParametrizationAlgorithm to refactoring of Solver.
Refactor Solver API.
Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
0.3.0 (2020-05-03 22:13:02 +0800)
Merge pull request #100 from hungpham2511/release-v0.3.0 Release v0.3.0
Bump version for C++ API
Merge pull request #97 from jmirabel/develop Add solver based on GLPK.
[cpp] Update version + update readme.
Fix CMake < 3.5 + some doc + declaration of infty.
Minor update of the documentation.
Merge remote-tracking branch ‘origin/develop’ into develop
Merge pull request #90 from hungpham2511/feat-cpp Feature: TOPPRA algorithm
Update cpp/src/toppra/algorithm/toppra.cpp Co-Authored-By: Joseph Mirabel <jmirabel@laas.fr>
Some minor clean ups.
Implement compute feasible function
Add missing installation of header
Use value_type instead of double, where relevant.
Change template parameter of jointTorque::Pinocchio.
Modify code based on code reviews.
[CMake] Add config, version and target files.
Fix install + documentation
Add export macros.
[CMake] install documentation.
[CMake] Add missing headers.
Remove unnecessary includes.
Merge remote-tracking branch ‘origin/feat-cpp’ into tmp2
Use move semantics instead of const ref.
Reformat code with clang-format.
Add several debug messages and option to turn off
Fix bug in algorithm and relax test criteria.
Fix bug in test generation.
Add missing #ifdef..endif in unit test.
Add test that checks solvers consistency.
Add solver::GLPKWrapper
Fix conflicts after merge.
Merge branch ‘develop’ into feat-cpp
Merge pull request #94 from jmirabel/develop Fix bug in qpOASESWrapper.
Add two more test cases to check for controllable and parametrization.
Fix qpOASESWrapper when i == N.
Fix test_poly_geometric_path.cpp
Add test for the full algorithm with PYthon code.
Add another test for geometric path comparing results with scipy.
Fix bug in solver wrapper initialization.
Add a simple logging method with macro.
Update changelog
Change index type from int to size_t.
Fix bug in qpOASESWrapper.
Disable failing test (temporary).
Format code with clang.
Update function docstring.
Shift algorithm data to data struct.
Implement TOPPRA forward pass.
Commit missing file.
Use return code in the parametrization algorithm.
Bug in polynomial path fixed.
public API for allgorithm base class
Minor changes based on review.
Setup the basic public interface.
Add a failing test showing usage.
Include compilation instruction.
Merge pull request #86 from jmirabel/develop Add Solver + solver::qpOASESWrapper + JointTorque + jointTorque::Pinocchio
Make qpOASES box bound on variable modifyable.
Make LinearConstraint::allocateParams not mandatory.
[Doc] Add a brief main page.
[Doc] enable EXTRACT_PRIVATE
Fix test_poly_geometric_path.cpp
Fix unit test using Pinocchio
Fix cpp/cmake/FindqpOASES.cmake
Merge branch ‘develop’ into feat-traj-quality
Enable make test
Add a todo.
Use std::unique_ptr
Rename class attributes
Prepend test_ to test files
Merge pull request #88 from hungpham2511/ci/github-action Setup github action for linting C++ codebase
Fix API of computeParams and computeParams_impl
Improve tests
Update unit-test to use PiecewisePolyPath.
Use GeometricPath in constraints.
[GeometricPath] Add config size + store dimension in abstract class + doc.
[GeometricPath] Add missing const + virtual destructor.
[CMake] Remove unnecessary line.
Merge remote-tracking branch ‘origin/develop’ into develop
Fix typo in CMake file.
Merge pull request #87 from hungpham2511/feat-cpp Add CI configure to check C++ codebase
Configure CMake to work with eigen < 3.3
Downgrade CMAke required version.
Merge pull request #85 from hungpham2511/feat-cpp Feature: GeometricPath and PiecewisePolyPath (WIP)
Add missing source file.
Minor.
Provide a default implementation for GeometricPath.
Fix abstract interface.
Add virtual methods to base class.
Reorganize and refactor piecewise poly.
Implement a test case to profile poly evaluation.
Clean up CMakeList.txt
Separate source / implementation.
Fix compilation with optional dependencies
Add cmake/FindqpOASES.cmake
Add unit-test for qpOASESWrapper
Add implementation of JointTorque using Pinocchio.
Handle friction in JointTorque
Add virtual desctrutor and make constructor protected.
Add JointTorque constraint.
Implement ppoly evaluation.
Add linking to cmake list.
Merge pull request #83 from jmirabel/develop First draft of LinearConstraint
Update Solver to removal of BoxConstraint
Merge branch ‘develop’ into solver
Fix handling of Interpolation case.
Remove class BoxConstraint
Add first version of solver::qpOASESWrapper
Make some attribute of Solver protected.
Add missing virtual destructors.
Add base class Solver.
Add forward declarations.
Add LinearJointAcceleration
Handle Interpolation discretization type.
Rework print functions.
When Constraint::constantF, both F and g are constant.
Add basic test for LinearJointVelocity
Add LinearJointVelocity
Add missing throw + minor fix.
Split LinearConstraint into LinearConstraint and BoxConstraint.
Add LinearConstraint::constantF This implements the Python Constraint.identical attribute.
Add generation of documentation.
Add LinearConstraint.
Merge branch ‘feat-cpp’ into develop Initial setup for toppra-cpp
Update README.md to include build instruction.
Remove submodule. Use the officially recommended approach.
Add googletest as a submodule.
Add a single empty gtest executable.
Add some standard headers.
Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel