Skip to main content

Utility classes for testing (robust) equilibrium of a system in contact with the environment, and other centroidal dynamics methods.

Reason this release was yanked:

missing python bindings

Project description

HPP Centroidal Dynamics

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

Utility classes to check the (robust) equilibrium of a system in contact with the environment. Comes with python bindings. The main class that collects all the equilibrium-related algorithms is Equilibrium. All the algorithms take as input:

  • A list of contact points
  • A list of contact normals
  • The contact friction coefficient
  • The number of generators used for the linear approximations of the friction cones
  • The mass of the system

Once these input parameters have been specified, the user has access to four algorithms implemented in the following four methods of the class Equilibrium:

  • computeEquilibriumRobustness: compute the robustness of the equilibrium of a given a CoM (center of mass) position (negative values mean the system can not be in equilibrium).
  • checkRobustEquilibrium: checks whether the system can be in equilibrium in a specified CoM position and with a specified robustness level.
  • findExtremumOverLine: Find the extremum com position that is in robust equilibrium along the specified line.
  • findExtremumInDirection: Find the extremum com position that is in robust equilibrium in the specified direction.

All these problems boil down to solving Linear Programs. Different formulations are implemented and tested in test_static_equilibrium. More details can be found in the code documentation. In the end, we found that most of the times the dual LP formulation (DLP) is the fastest.

The test test_LP_solvers tries to solve some LP problems using qpOases and checks that the results are correct.

Dependencies

Additional dependencies for python bindings

Installation Steps for Ubuntu 12.04, 14.04 and 16.04

You can install cdd lib with the following command:

sudo apt-get install libcdd-dev

You can install Eigen3 with the following command:

 sudo apt-get install libeigen3-dev

For qpOases you have to install the pkg-config version you can find here: https://github.com/humanoid-path-planner/qpoases

git clone --recursive https://github.com/humanoid-path-planner/qpoases
mkdir qpoases/build
cd qpoases/build
cmake -DCMAKE_INSTALL_PREFIX=${DEVEL_DIR}/install ..
make install

Then you can clone this repository using ssh:

git clone --recursive git@github.com:andreadelprete/robust-equilibrium-lib.git $ROBUST_EQUI_LIB_DIR

or using http:

git clone --recursive https://github.com/andreadelprete/robust-equilibrium-lib.git $ROBUST_EQUI_LIB_DIR

And you can build this library using CMake:

mkdir $ROBUST_EQUI_LIB_DIR/build
cd $ROBUST_EQUI_LIB_DIR/build
cmake -DCMAKE_INSTALL_PREFIX=${DEVEL_DIR}/install ..
make install

Optional: CLP installation

As an alternative to qpOases you can use CLP to solve linear programs. However, we found qpOases to be faster (especially when solving a series of problems that are similar to each other, because it can exploit warm start) and more reliable, so we suggest you to stick with qpOases. In particular, we found that CLP sometimes fails to find the real optimum when using the DLP formulation.

Optional: Python bindings installation

To install the Python bindings, in the CMakeLists.txt file, first enable the BUILD_PYTHON_INTERFACE option:

OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON)

Then rebuild the library:

cd $ROBUST_EQUI_LIB_DIR/build
cmake -DCMAKE_INSTALL_PREFIX=${DEVEL_DIR}/install ..
make install

The python bindings should then be accessible through the package centroidal_dynamics. To see example of use, you can refer to the test file which is rather self explanatory:

In spite of an exhaustive documentation, please refer to the C++ documentation, which mostly applies to python.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hpp_centroidal_dynamics-9.0.0.tar.gz (83.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_x86_64.whl (153.7 kB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_aarch64.whl (149.4 kB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_11_0_arm64.whl (135.2 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_10_9_x86_64.whl (138.5 kB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file hpp_centroidal_dynamics-9.0.0.tar.gz.

File metadata

  • Download URL: hpp_centroidal_dynamics-9.0.0.tar.gz
  • Upload date:
  • Size: 83.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hpp_centroidal_dynamics-9.0.0.tar.gz
Algorithm Hash digest
SHA256 c35556dc58446ffd65c288d5e1348d26747a17257d3c91de69be7b03acc17f11
MD5 2d7c675595f984aee3269b4d69ade17f
BLAKE2b-256 7655c7420309087483dd931da821df398098049148f6448e42280be91d8d470f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_centroidal_dynamics-9.0.0.tar.gz:

Publisher: release.yml on cmake-wheel/hpp-centroidal-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e6d325f992ccbd6d2471a5862aa5b4a44114fd59df84c52274dca323a0b9f535
MD5 6bc4e9fb15e4979ffe4ead69a3a07650
BLAKE2b-256 a55fb0c04aa71c5c6c3673a1c51ed2eccaabc0e4c967cf3276af246d434f0203

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-centroidal-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a9adca3fe07a3000f0af7e7350ae97b1bd856481eed2d10758be23807432bb61
MD5 6d55f57e16f4d7334ebbaabcd8ab7625
BLAKE2b-256 0967a34ca4736470cd15d26a737e69b5f8633b98bbb5a0a5ecfef59c8c96fcce

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_centroidal_dynamics-9.0.0-0-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on cmake-wheel/hpp-centroidal-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 262f6e1fa965f462fc25d9d25b28826ce3340304522e86ce4a9ff2cd583815a2
MD5 09f7128e2d7124d26d4024f633d1b937
BLAKE2b-256 ca3c929f6755d4e041e31fd059f32d94a50644f05c6bf99d11a0d88f1cfbac69

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on cmake-wheel/hpp-centroidal-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4c16e7f81272caf6d57f9c9575f87e5b17b4b87661df7394f63dbcb4f5cb3a0b
MD5 2a4ec9fd816ab4615cb228db932e4a13
BLAKE2b-256 457cf392e7a1d78f69fcb808f9d61b740802031936548e451e3994813399a2fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for hpp_centroidal_dynamics-9.0.0-0-py3-none-macosx_10_9_x86_64.whl:

Publisher: release.yml on cmake-wheel/hpp-centroidal-dynamics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page