No version for distro humble showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro jazzy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro kilted showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro lyrical showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro ardent showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro bouncy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro crystal showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro eloquent showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro dashing showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro galactic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro foxy showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro iron showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro lunar showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro jade showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro indigo showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro hydro showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro kinetic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro melodic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange

No version for distro noetic showing rolling. Known supported distros are highlighted in the buttons above.
Package symbol

ndcurves package from ndcurves repo

ndcurves

ROS Distro
rolling

Package Summary

Version 2.3.0
License BSD-2-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/loco-3d/ndcurves.git
VCS Type git
VCS Version devel
Last Updated 2026-06-19
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

A template-based Library for creating curves of arbitrary order and dimension

Additional Links

Maintainers

  • Guilhem Saurel

Authors

  • Pierre Fernbach
  • Steve Tonneau
  • Jason Chemin

NDCurves

Pipeline status Coverage report PyPI version Code style: black Ruff pre-commit.ci status

A template-based Library for creating curves of arbitrary order and dimension, eventually subject to derivative constraints. The main use of the library is the creation of end-effector trajectories for legged robots.

To do so, tools are provided to:

  • create exact splines of arbitrary order (that pass exactly by an arbitrary number waypoints)
  • constrain initial / end velocities and acceleration for the spline.
  • constrain take-off and landing phases to follow a straight line along a given normal (to avoid undesired collisions between the effector and the contact surface)
  • automatically handle 3d rotation of the effector.
  • create curves in SO3
  • support partial symbolic differentiation of curves. You can represent control points as linear variables, and integrate / differentiate those variable curves. You can also compute the cross product of two curves, which is relevant for centroidal dynamics.

Several type of formulation are provided:

  • Polynomials
  • Bezier
  • Hermite (only cubic hermite for now)

The library is template-based, thus generic: the curves can be of any dimension, and can be implemented in double or float and can work with kind variables like Vector, Transform, Matrix, …

Installation

Installation through robotpkg

You can install this package through robotpkg. robotpkg is a package manager tailored for robotics softwares. It greatly simplifies the release of new versions along with the management of their dependencies. You just need to add the robotpkg apt repository to your sources.list and then use sudo apt install robotpkg-py3\*-ndcurves.

If you have never added robotpkg as a softwares repository, please follow first the instructions from 1 to 3; otherwise, go directly to instruction 4. Those instructions are similar to the installation procedures presented in http://robotpkg.openrobots.org/debian.html.

  1. Add robotpkg as source repository to apt:
sudo tee /etc/apt/sources.list.d/robotpkg.list <<EOF
deb [arch=amd64] http://robotpkg.openrobots.org/wip/packages/debian/pub $(lsb_release -sc) robotpkg
deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -sc) robotpkg
EOF

  1. Register the authentication certificate of robotpkg:
curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add -

  1. You need to run at least once apt update to fetch the package descriptions:
sudo apt-get update

  1. The installation of nd-curves:
sudo apt install robotpkg-py3\*-ndcurves # for Python 3

sudo apt install robotpkg-py27-ndcurves # for Python 2

Finally you will need to configure your environment variables, e.g.:

export PATH=/opt/openrobots/bin:$PATH
export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH
export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH

Installation from source

Dependencies

Additional dependencies for python bindings

To handle this with cmake, use the recursive option to clone the repository. For instance, using http:

git clone --recursive https://github.com/loco-3d/ndcurves $NDCURVES_DIR

Where $NDCURVES_DIR is to be replaced to your selected source folder. The library is header only, so the build only serves to build the tests and python bindings:

cd $NDCURVES_DIR && mkdir build && cd build
cmake -DBUILD_PYTHON_INTERFACE=ON .. && make && make test

Switch the BUILD_PYTHON argument to OFF if you don’t want to use the python bindings of the package.

File truncated at 100 lines see the full file

CHANGELOG

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[2.3.0] - 2026-04-14

  • CMake: remove submodule
  • nix: switch to flakoboros
  • format: switch to gersemi

[2.1.1] - 2026-02-11

  • Add jrl-cmakemodules to the package.xml as “depend”

[2.1.0] - 2025-10-07

  • tooling & packaging updates

[2.0.0] - 2024-12-05

  • :warning: BREAKING: switch from boost smart pointers to std ones
  • setup nix
  • setup mergify

[1.4.1] - 2024-04-12

  • tests: fix use of np.random in tests
  • CMake: enable python bindings by default

[1.4.0] - 2024-04-12

  • Add a SO3 curves which is C2. It’s called S03Smooth
  • Add some typedef on using 3D curves.
  • Fix typos around the package
  • Add some tests on polynomials and the new structs.
  • update tooling
  • update packaging
  • add pip CI

[1.3.1] - 2023-11-29

Changed

  • ⚠️ require CMake 3.10 ⚠️

Added

  • python: define CopyableVisitor, fix SerializableVisitor and use them

Fixed

  • cmake generation on macosx
  • Supporting pinocchio installed with cppad (#108)
  • fix E721

[1.3.0] - 2023-07-19

  • add stubs support
  • fix RPATH for OSX

[1.2.0] - 2023-05-13

  • [python] Enabled support to copy and deepcopy
  • [python] Removed deprecated macros in eigenpy
  • update for eigenpy v3
  • pre-commit update
  • sync submodule
  • CMake: fetch submodule, set default build type, bump standard

[1.1.6] - 2023-01-24

  • don’t build python bindings by default, to be more gentle with PAL robotics buildfarm.

[1.1.5] - 2022-08-29

  • fix allocator
  • modernize cmake

[1.1.4] - 2022-06-29

  • remove unary function, deprecated since C++11 and removed in C++17

[1.1.3] - 2022-05-31

[1.1.2] - 2022-02-09

  • [cmake] Improve Eigen detection/usage
  • fix format

[1.1.1] - 2022-01-06

  • fix virtual functions
  • fix optional dependency to pinocchio
  • primitive now accept initial value\n

File truncated at 100 lines see the full file

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ndcurves at Robotics Stack Exchange