Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
Messages
Services
Plugins
Recent questions tagged crocoddyl at Robotics Stack Exchange
Package Summary
| Tags | No category tags. |
| Version | 3.2.0 |
| License | BSD-3-Clause |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | Crocoddyl is an optimal control library for robot control under contact sequence. Its solver is based on various efficient Differential Dynamic Programming (DDP)-like algorithms |
| Checkout URI | https://github.com/loco-3d/crocoddyl.git |
| VCS Type | git |
| VCS Version | devel |
| Last Updated | 2025-12-09 |
| Dev Status | MAINTAINED |
| Released | UNRELEASED |
| Tags | robotics conda motion-planning ros code-generation trajectory-optimization optimal-control differential-dynamic-programming legged-robotics model-predictive-control crocoddyl |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Carlos Mastalli
- Wolfgang Merkt
- Guilhem Saurel
Authors
</p>
##
Introduction
**[Crocoddyl](https://cmastalli.github.io/publications/crocoddyl20icra.html)** is an optimal control library for robot control under contact sequence. Its solvers are based on novel and efficient differential dynamic programming (DDP) algorithms. **Crocoddyl** computes optimal trajectories and feedback gains. It uses **[Pinocchio](https://github.com/stack-of-tasks/pinocchio)** for fast computation of robot dynamics and analytical derivatives.
If you want to learn more about **Crocoddyl** and its solvers, we suggest reading [[1]](#1) [[2]](#2) [[3]](#3) and visiting [PUBLICATIONS.md](https://github.com/loco-3d/crocoddyl/blob/master/PUBLICATIONS.md). If you want to follow the current developments and contribute, please directly refer to the [devel branch](https://github.com/loco-3d/cddp/tree/devel).
## :crocodile: Crocoddyl features
![]() |
|
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
[Unreleased]
[3.2.0] - 2025-12-09
- Introduced the actuation limits to handle thrusters and general action models in https://github.com/loco-3d/crocoddyl/pull/1455
- Introduced safe difference and integration functions for states in https://github.com/loco-3d/crocoddyl/pull/1448
- ROS: jrl_cmakemodules dependency + kilted CI in https://github.com/loco-3d/crocoddyl/pull/1441
[3.1.0] - 2025-10-02
- Allow use of BUILD_STANDALONE_PYTHON_INTERFACE CMake option in https://github.com/loco-3d/crocoddyl/pull/1434
- Migrated notebooks to Meshcat in https://github.com/loco-3d/crocoddyl/pull/1404
- Updated the rotation transpose in contact wrench cone to re-use the same object to avoid additional transpose operations. https://github.com/loco-3d/crocoddyl/pull/1343
- Switched to a multiply operation instead of divide for efficiency. https://github.com/loco-3d/crocoddyl/pull/1343
- Fix Python bindings of action getters in https://github.com/loco-3d/crocoddyl/pull/1374
- Created independent Python modules associated to each scalar in https://github.com/loco-3d/crocoddyl/pull/1372
- Introduced CodeGen and AutoDiff in Python + pre-compiled headers in https://github.com/loco-3d/crocoddyl/pull/1370
- Introduced explicit template instantiation in https://github.com/loco-3d/crocoddyl/pull/1367
- Fixed error message building crocoddyl.launch crocoddyl.rviz as Python files in https://github.com/loco-3d/crocoddyl/pull/1369
- Created Python bindings for (diff)-action getters in https://github.com/loco-3d/crocoddyl/pull/1362
- Enabled casting and multi-scalar Python bindings in https://github.com/loco-3d/crocoddyl/pull/1346
- Compute LU decomposition using permutationP in https://github.com/loco-3d/crocoddyl/pull/1351
- Force DifferentialActionDataContactInvDynamics to update df_du for all contacts in https://github.com/loco-3d/crocoddyl/pull/1348
- Add a nix shortcut start jupyter lab, with eg. `nix run .#jupyter in https://github.com/loco-3d/crocoddyl/pull/1396
[3.0.1] - 2025-03-21
- Add install version in https://github.com/loco-3d/crocoddyl/pull/1355
- Removed absolute path for boost library in https://github.com/loco-3d/crocoddyl/pull/1353
- Fixed checking of positive semi-define condition in LQR problems in https://github.com/loco-3d/crocoddyl/pull/1352
[3.0.0] - 2025-03-19
- :warning: BREAKING: replaced boost shared pointers by std ones in https://github.com/loco-3d/crocoddyl/pull/1339
- :warning: BREAKING: require pinocchio >= 3.4.0
[2.2.0] - 2025-02-10
- Changed return policy in std::vector of Eigen’s vector and matrices to be compliant with Pinocchio in https://github.com/loco-3d/crocoddyl/pull/1338
- Prevent users to improperly setting residual references in https://github.com/loco-3d/crocoddyl/pull/1332
- Fixed the inequality constraints’ feasibility computation by incorporating bounds into the calculation in https://github.com/loco-3d/crocoddyl/pull/1307
- Improved the action factory used for unit testing in https://github.com/loco-3d/crocoddyl/pull/1300
- Ignore ruff issues in ipython notebook files in https://github.com/loco-3d/crocoddyl/pull/1297
- Improved efficiency for computing impulse-dynamics derivatives in https://github.com/loco-3d/crocoddyl/pull/1294
- Fixed bug of wrench cone fields not being updated with setters in https://github.com/loco-3d/crocoddyl/pull/1274
- Replaced parent by parentJoint (which was introduced in Pinocchio 3) in https://github.com/loco-3d/crocoddyl/pull/1271
- Introduced the notion of terminal dimension, residuals and constraints in https://github.com/loco-3d/crocoddyl/pull/1269
- General clean ups about std::size_t in https://github.com/loco-3d/crocoddyl/pull/1265
- Fixed issues in LQR extensions in https://github.com/loco-3d/crocoddyl/pull/1263
- Computed dynamic feasibility everytime in https://github.com/loco-3d/crocoddyl/pull/1262
- Extend LQR actions in https://github.com/loco-3d/crocoddyl/pull/1261
- Print log with grad absolute + updated logs with Pinocchio 3 in https://github.com/loco-3d/crocoddyl/pull/1260
[2.1.0] - 2024-05-31
- Updated black + isort + flake8 to ruff in https://github.com/loco-3d/crocoddyl/pull/1256
- Exported version for Python in https://github.com/loco-3d/crocoddyl/pull/1254
- Added pinocchio 3 preliminary support in https://github.com/loco-3d/crocoddyl/pull/1253
- Updated CMake packaging in https://github.com/loco-3d/crocoddyl/pull/1249
- Fixed ruff reported error in https://github.com/loco-3d/crocoddyl/pull/1248
- Fixed yapf reported errors in https://github.com/loco-3d/crocoddyl/pull/1238
- Tested Python stubs in Conda CI in https://github.com/loco-3d/crocoddyl/pull/1228
- Fixed Rviz display in https://github.com/loco-3d/crocoddyl/pull/1227
- Improved CI, updated cmake and fixed launch file in https://github.com/loco-3d/crocoddyl/pull/1220
- Introduced a Rviz display in https://github.com/loco-3d/crocoddyl/pull/1216
- Enabled display of thrust and simplied displayers code in https://github.com/loco-3d/crocoddyl/pull/1215
- Introduced floating base thruster actuation model in https://github.com/loco-3d/crocoddyl/pull/1213
- Fixed quadruped and biped examples in https://github.com/loco-3d/crocoddyl/pull/1208
- Fixed terminal computation in Python models in https://github.com/loco-3d/crocoddyl/pull/1204
- Fixed handling of unbounded values for
ActivationBoundsin https://github.com/loco-3d/crocoddyl/pull/1191
[2.0.2] - 2023-12-07
- Added nu, ng, and nh setters for Python bindings in https://github.com/loco-3d/crocoddyl/pull/1192
- Added CHANGELOG.md in https://github.com/loco-3d/crocoddyl/pull/1188
- Supported nu==0 in actuation models in https://github.com/loco-3d/crocoddyl/pull/1188
- Included Python bindings for Crocoddyl exceptions by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1186
- Updated cmake submodule update by @jcarpentier in https://github.com/loco-3d/crocoddyl/pull/1186
- Fixed getters for contraints bounds by skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1180
- Extended solver abstract and callbacks for arbitrary solvers by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1179
- Fixed the check of pair_id in collision residual by @ArthurH91 in https://github.com/loco-3d/crocoddyl/pull/1178
- Exploited control-residual structure when computing Lu, Luu by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1176
- Added LWA fram convention and introduced different axis for 1d contacts by @skleff1994 in https://github.com/loco-3d/crocoddyl/pull/1172
- Python bindings for setting control bounds by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1171
- Fixed missed scalar in cost sum and activation data by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1165
- Added actuation unit tests by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1161
- Introduced method for obtaining the dimension of floating-bases by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1160
- Fixed set_reference in state residual by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1158
- Enabled CONDA CI jobs with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1156
- Added other CI jobs by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1152
- Fixed compiltation issue when building with CppADCodeGen by @cmastalli in https://github.com/loco-3d/crocoddyl/pull/1151
- Fixed include order used in frames.cpp by @ManifoldFR in https://github.com/loco-3d/crocoddyl/pull/1150
[2.0.1] - 2023-06-17
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| jrl_cmakemodules | |
| ament_cmake | |
| example-robot-data | |
| eigenpy | |
| pinocchio |
System Dependencies
Dependant Packages
Launch files
- bindings/python/crocoddyl/crocoddyl.launch
-
- filename [default: $(eval env('PWD'))]
