CHANGELOG

Changelog

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

The format is based on Keep a Changelog.

Unreleased

  • Fixed the compiler-flag definition used for action codegen + updated default compilation flags in https://github.com/loco-3d/crocoddyl/pull/1469

  • CMake: make example-robot-data more optional for ROS in https://github.com/loco-3d/crocoddyl/pull/1467

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 ActivationBounds in 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

  • Fixed notebooks

  • Fixed build on aarch64-linux

  • Fixed CMake for OpenMP with conda

  • Fixed lints

  • Updated for example-robot-data 4.0.7

  • Added support for 18.04 back: CMake 3.10, Boost 1.65, Python 3.6

2.0.0 - 2023-05-13

  • Changed stopping criteria to better evaluate the converge criteria

  • Extended numdiff routines to compute second-order derivatives + other minor improvements

  • Improved the overall project documentation (still many things to be done)

  • Added collision residual unit tests and missing Python bindings

  • Allowed accuracy configuration of verbose callback

  • Closed gaps once feasibility is achieved in FDDP

  • Supported different Python versions

  • Added procedure to check example log files

  • Added support to M1 apple chip + fixed compilation issues with Clang

  • Fixed a small issue in the solver’s Armijo condition

  • Added shareMemory unit tests

  • Introduced the notion of resizing data in solvers

  • Added unit test for impulse actions

  • Deprecated set_id functions in contact residuals

  • Supported Ipopt solver with Python bindings

  • Extended (diff)-action API to handle arbitrary constraints + unit tests

  • Introduce the notion of ConstraintManager and used it in diff-actions + unit tests + integrated action support

  • Added the HyQ robot for extra unit testing

  • Updated doxygen documentation in many parts of the project

  • Used std::set for storing cost/constraint activation status

  • Fixed small issues in terminal-node computations

  • Supported Meshcat display of contact forces, friction cone and foot-swing trajectories

  • Introduced the notion of equality constraint feasibility in solvers

  • Created a data collector to store joint effort and accelerations

  • Created joint-effort/acceleration residuals + unit tests

  • Created inverse-dynamics action models + unit tests

  • Added the SolverIntro which handles inverse-dynamics OC problems + unit tests

  • Added invdyn examples and log files + cleaned up filenames

  • Enabled copyable for various objects used in Python

  • Supported different contact/impulse frames + unit test + changes in example/logfiles.

  • Removed deprecated FrameXX code.

  • Updated readme file.

  • Updated CMake configuration

  • Updated numpy usage

1.9.0 - 2022-03-03

  • Introduced the control parametrization notion and three polynomial parametrization (PolyZero, PolyOne, PolyTwoRK)

  • Improved the documentation of the actuation model and especially the floating-base actuation

  • Improved the efficiency of the RK integrator (added to the benchmarks)

  • Improved the documentation of Euler and RK integrators

  • Added unittests for checking the analytical derivatives of the contact forces/impulses

  • Computed the dynamic feasibility in solvers (also print this relevant information)

  • Improved the documentation of solvers

  • Removed dynamic memory allocation in ContactModel3D

  • Added the notion of terminal (calc, calcDiff) computations (fixed some tiny inaccuracies in the problem formulation + reduced useless computations)

  • Added a class to easily profile the computation cost of any block code (included relevant blocks in the solvers and shooting problem)

  • Fixed error in the documentation of ActivationModel2NormBarrier

  • Added the 2d contact

  • Added method to resized solver data (e.g., it is not needed to allocate the biggest control dimension)

  • Fixed issue in the Gepetto viewer display

  • Improved the CI and fixed a few errors that appears in unittests code compiled with clang

  • Removed dynamics memory allocation in LQR action and CostModelResidual

  • Removed Travis buildfarm and substituted by ROS one

  • Used std::set for contact/impulse active/inactive set (added bindings)

  • Added Python bindings to be able to set state dimensions from a Python derived class.

  • Added Python bindings of StateNumDiff class

1.8.1 - 2021-08-01

  • Fixed Vx computation

  • Fixed memory allocations

  • Fixed linkage of the python library

  • Deprecated FramXX in constructors and frames.hpp

  • Cleaned up code

1.7.0 - 2021-05-05

  • Updated the examples based on new API in example-robot-data

  • Removed reference in std::sized_t (and other primitives)

  • Improved computation and handled richer conditions in friction and wrench cone (e.g., inner/outer apprx. in wrench cone, and rotation matrix in friction cone)

  • Added more unit-tests for cones

  • Included the CoP support notion

  • Updated minimal version of EigenPy as it fixes a bug with 4x6 matrices

  • Developed a gravity-based cost function for both free and in contact conditions (included its unit-test code)

  • Added assignment operator in FrameXXX structures

  • Replaced isMuchSmallerThan by isZero in all the unit-tests

  • Enabled free-flyer joint in full actuation model

  • Improved multicopter actuation API + unit-tests

  • Exposed in Python ActionModelUnicyle::dt_

  • Fixed multithreading support: running the correct number of threads

  • Enabled that the user can set the number of threads (also in Python)

  • Added publication list and updated README file

  • Registered in Python the shared pointers of all the model classes

  • Fixed Meshcat visualizer after update

  • Added Github Action CI with ROS dependency resolution

  • Improved efficiency of backward pass by defining properly RowMajor matrices

  • Activated all warnings and Werror

  • Improved documentation

1.6.0 - 2021-02-01

  • Refactored the Cost API with breaking compatibility (cost depends on state abstract, not multibody state)

  • Fixed issue in c++98 compatibility

  • Added shared_ptr registers for solver classes (Python bindings)

  • Initialized missed data in SolverQP (not really producing a bug)

  • Fixed issue with FrameXXX allocators (Python bindings)

  • Created aligned std vectors for FrameXXX (Python bindings)

  • Used the proper nu-dimension in shooting problem and solvers

  • Doxygen documentation of smooth-abs activation

  • Renamed the activation model: smooth-abs to smooth-1norm (deprecated old names)

  • Added the smooth-2norm activation model with Python bindings

  • Updated README file with Credits and committee information

  • Added throw_pretty in Python bindings of action models (checks x,u dimensions)

  • Improved the documentation (doxygen, docstrings), and fixed grammar, of various classes

  • Cleaned up a few things related with cost classes

  • Cleaned up unnecessary typedef in cost models

  • Extended the differential action model for contacts to handle any actuation model (not just floating-base derived ones)

  • Added conda support

  • Added the quadratic-flat activation models

  • Fixed issue with gepetto viewer display (appearing in some OS)

  • Added contact/impulse action unit tests

  • Added contact/impulse cost unit tests

  • Added a proper gap threshold (it was too big and created different behavior in feasibility-driven solvers)

  • Improved the copyright starting year for many files

1.5.0 - 2020-09-23

  • Improved and cleaned up the bench-marking code for code-generation

  • Fixed bug for computing quasicStatic torques under inactive contacts

  • Added unit-test code that disables contacts

  • Created CoP cost with Python bindings and unit-test

  • Multi-threading support for quasicStatic computation in shooting problem

  • Modifications in Travis CI + included Gepgitlab CI

  • Created contact wrench cone (CWC) cost with Python bindings and unit-test

  • Created RK4 integrator with Python bindings and unit-test

  • Throw exception for setting candidates xs/us in solvers

  • Fixed a few spelling errors in the docstring documentation

  • Exposed the KKT solver in Python

  • Checked the dimension of the warm-start vectors for xs and us

  • Cleaned up some part of the Python code that were using Numpy Matrix (now Numpy Array!)

  • Created the 2d contact

  • Checked the feasibility by the gap values

  • Created the Crocoddyl logo + integrated in the README file

1.4.0 - 2020-08-05

  • Allowed different values of nu in action models

  • Adapted the contact force cost to accept 3d contacts.

  • Added CppAD support to (weighted) quadratic barrier activation

  • Added the contact impulse cost

  • Added contact CoP cost,

  • fixes:

  • Fixed display of contact forces in Gepetto viewer

  • Fixed a bug in the definition of the terminal node in updateNode (defined in ShootingProblem)

  • Fixed memory allocation produced by Python binds.

  • Fixed printed error message in ShootingProblem

  • and improvements:

  • Added documentation of the differential action model

  • Deprecated legacy functions to define reference in cost functions.

  • Set to zero inactive contact forces for correctness

  • Simplified FDDP code by using calcDiff from DDP solver

  • Improved the display of benchmark timings

  • Improved the documentation of contact force cost

  • Improved few notebooks and added an extra one

  • Removed legacy Python unittest

1.3.0 - 2020-05-25

  • Minor improvement in state-base class (enabling limits once we define only one component)

  • Added functions to print the active/inactive status of costs, contacts and impulses

  • Running computations in the contact / impulse dynamics using the active number of contacts / impulses, respectively

  • Used NumPy Array in examples / notebooks

  • Initial integration of Meshcat viewer and used in notebooks

  • Improved efficiency of Jdiff, Jintegrate in multibody state

  • Added an extra operator in Jintegrate signature (state classes)

  • Added an extra function parallel transport in the state class (i.e. JintegrateTransport)

  • Added functions to retrieve the inactive costs, contacts and impulses

  • Fixed target_link_libraries use

  • Improved efficiency of few activation models

  • Added the action-base class for code generation + unittest

  • Added codegen bench for 4 dof arm and biped

  • Renamed all bench files

  • Updated dependency versions for Pinocchio and example-robot-data

  • Fixed bug in the impulse dynamics that appears in multiple threads

  • Fixed various issues regarding data alignment

  • Added doxygen file with the documentation state-base class

  • Fixed an issue when we updates reference in frame-placement and frame-rotation costs

  • Fixed an issue with Python3 compatibility in few examples

  • Proper display of friction cones + do not display when the contact / impulse is inactive/

  • Extended the computation of impulses derivatives

  • Added a friction cost for impulse dynamics

1.2.1 - 2020-04-21

  • Fixed backup files inside notebook folder

  • Fixed an issue with the friction cone display

  • Added quadcopter actuation model

1.2.0 - 2020-04-03

  • Templatized all the classes and structures with the scalar (for codegen and autodiff)

  • Fixed a bug in the formulation for the quadrupedal problem (state bounds)

  • Reduced the compilation time in Python bindings (re-structured the code)

  • Fixed error in the expected improvement computation for terminal action in SolverFDDP

  • Added unittest code for cost classes (included cost factory)

  • Reorganized the various factories used for c++ unittesting

  • Developed the pinocchio model factory for c++ unittesting

  • Added unittest code for contact classes (included the contact factory)

  • Described cost items through shared_ptr

  • Described contact items through shared_ptr

  • Described impulse items through shared_ptr

  • Fixed Gauss-Newton approach for cost num-diff

  • Added contact num-diff class

  • Used virtual keyword in declaration of derived functions

  • Added the unittest code for free forward dynamics action model

  • Added the unittest code for contact forward dynamics action model

  • Included the cost status in cost sum for global memory allocation

  • Included the contact status in cost sum for global memory allocation

  • Included the impulse status in cost sum for global memory allocation

  • Removed duplication function for retrieving models and datas in solvers (now we do only through shooting problem interface)

  • Allowed to write internal data of Numpy-EigenPy objects

  • Added a general method for setting and getting cost reference

  • Added squashing function abstraction

  • Added unittest code for testing cost, contact and impulse status

  • Moved to CMake exports

1.1.0 - 2020-02-14

  • Added few cost functions related to forces and impulses (e.g. friction-cone, com impulse)

  • Improved the display tools (friction cone, contact forces and end-effector trajectories)

  • Fixed a problem in the printed message by the callback

  • Fixed a problem in the box-qp

  • Improved the box-ddp

  • Added a new solver called box-fddp

  • Added extra examples (box-ddp vs box-fddp, taichi task, humanoid manipulation)

  • Added a script for automatically updating the log files

  • Checked that all examples runs in the CI (for release mode only)

  • Improved the quadrupedal and bipedal examples by adding all the constraints

  • Improved the efficiency in differential free-forward dynamics

  • Added extra setter functions in action models

  • Improved efficiency in all solvers (removed extra computation)

  • Improved plot functions

  • Fixed a bug in few notebooks

1.0.0 - 2019-08-30

Initial release