Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |
Launch files
Messages
Services
Plugins
Recent questions tagged toppra at Robotics Stack Exchange
Package Summary
| Version | 0.6.5 |
| License | MIT |
| Build type | CATKIN |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/hungpham2511/toppra.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-03-30 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Hung Pham
- Sebastian Castro
Authors
- Hung Pham
- Joseph Mirabel
Description
This is a C++ implementation of the TOPP-RA algorithm.
Building
# clone
git clone -b develop https://github.com/hungpham2511/toppra
# build
mkdir -p cpp/build && cd cpp/build
cmake ..
make -j4
# run test
./tests/all_tests
Running test with pinocchio
pinocchio is used in toppra to calculate kinematical quantities such
as end-effector pose jacobians, required for task-space velocity
consraint.
Install pinocchio bindings (see below) and example from robotpkg,
then setup environment variables before building
# Building
export LD_LIBRARY_PATH=/opt/openrobots/lib:${LD_LIBRARY_PATH}
export CMAKE_PREFIX_PATH=/opt/openrobots
Add -DBUILD_WITH_PINOCCHIO=ON to the cmake command.
To run the tests
# Running
export ROS_PACKAGE_PATH=/opt/openrobots/share
export PYTHONPATH=/opt/openrobots/lib/python3.6/site-packages:$PYTHONPATH
# or any python version that you install
How to install optional dependencies:
- GLPK:
sudo apt install libglpk-dev - qpOASES:
sudo apt install robotpkg-qpoases(follow http://robotpkg.openrobots.org/debian.html for robotpkg) - pinocchio:
sudo apt install robotpkg-pinocchio(follow http://robotpkg.openrobots.org/debian.html for robotpkg)
Building Python bindings
We use pybind11 to provide the bindings. To build the bindings you
need to first install pybind11 version 2.5.0.
cd ~/ && git clone https://github.com/pybind/pybind11
cd pybind11 && git checkout v2.5.0
mkdir build && cd build && cmake -DPYBIND11_TEST=false .. && sudo make install
Build toppra with Python bindings and all optional dependencies:
cmake -DBUILD_WITH_PINOCCHIO=ON -DBUILD_WITH_qpOASES=ON -DBUILD_WITH_GLPK=ON -DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 ..
make
Running this step shall build the shared library libtoppra.so and create a CPython
module at toppra/cpp/ that linked to this shared library.
Issues during build
/usr/local/include/pybind11/detail/common.h:112:10: fatal error: Python.h: No such file or directory
#include <Python.h>
^~~~~~~~~~
compilation terminated.
This is because during compilation, pybind11 can not find the Python header files.
Check that you have libpython-dev or libpython3-dev installed and whether the
correct Python executable is found during cmake step. You should see something similar to
below:
-- Found PythonInterp: /usr/bin/python3.7 (found suitable version "3.7.4", minimum required is "3.7")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.7m.so
-- Found /usr/include/python3.7m /usr/bin/python3.7
If this error persists, try give more hint to CMake FindPython
module by adding these flags to the cmake command:
-DPYTHON_BINDINGS=ON -DPYBIND11_PYTHON_VERSION=3.7 -DPython_EXECUTABLE=/usr/bin/python3.7
Building doxygen doc
Make sure that doxygen is installed and available. Running cmake
normally will create a rule for building doc with doxygen.
``` sh
Run cmake normally
File truncated at 100 lines see the full file
Changelog for package toppra
0.6.5 (2026-03-27)
- [python]: Go back to master branch of hungpham2511 qpOASES repo (#273)
- Prepare for ROS build farm (#277)
- Contributors: Sebastian Castro
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)
- Release version 0.6.2 (#242)
- 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)
- chore: Bump toppra version: '0.6.1' --> '0.6.2'
- feat: warn when solver fails (#241)
- Contributors: Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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)
- chore: Bump toppra version: '0.5.2' --> '0.6.0'
- feat(cpp): Add initial gridpoints to proposeGridpoints (#227)
- feat(cpp,constraint): Make Interpolation the default method (#225)
- Contributors: Hung, Hung Pham (Phạm Tiến Hùng), Joseph Mirabel
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
File truncated at 100 lines see the full file
Dependant Packages
| Name | Deps |
|---|---|
| roboplan_toppra |