Releases: Simple-Robotics/aligator
Releases · Simple-Robotics/aligator
aligator v0.9.0
Version 0.9.0 of aligator brings a host of changes:
- some for performance (cycling problems properly, with big thanks to @edantec),
- some for convenience,
- some for the ProxDDP algorithm,
- and big changes to the dynamics class hierarchy
Users should assume these changes are API-breaking (in both C++ and Python). Namely:
- the
StageFunction
methods (e.g.evaluate
andcomputeJacobians
) now take arguments(x,u)
, no morey
(corresponding to the next state in the OCP);StageData
objects no longer have the Jacobian fieldStageData::Jy_
- the
DynamicsModel
class and its subclasses are no longer subclasses ofStageFunction
following this change. These are now distinct class hierarchies - the
BCLParams
struct is no longer used inSolverProxDDP
. Now there is an innerAlmParams
struct with its own fields - scaling of constraints in ProxDDP has completely changed. Non-dynamics constraints are driven by the overall
mu
parameter, with dynamics being scaled down according to the value ofsolver.bcl_params.dyn_al_scale_
Checking the changes to the unit tests and examples is strongly recommended.
Known issues
- cycling the
ParallelRiccatiSolver
linear solver is still broken. This requires a more in-depth look, coming in the next version.
What's Changed
- Change all map types to boost::unordered_map by @ManifoldFR in #203
- [core | modelling] Add templated getters for cost and dynamics by @ManifoldFR in #205
- [tests/python] Restore Pinocchio 3 tests, add check for Pinocchio features from Python by @ManifoldFR in #206
- [ci] Cancel PR workflow on new push by @ManifoldFR in #210
- [autodiff] separate out CostFiniteDifferenceHelper by @ManifoldFR in #212
- [solvers] Remove constraint prox scalers by @ManifoldFR in #214
- Fix the cycling of problem data in MPC by @edantec in #215
- Force API updates by @edantec in #216
- Re-define ALM params struct internally to
aligator
by @ManifoldFR in #219 - core/constraint.hpp : add cast-getter by @ManifoldFR in #222
- SolverProxDDP: remove solver parameter
rho_
by @ManifoldFR in #221 - Scale the dynamics' AL parameter instead of the constraints, remove deprecated functions, rename
TrajOptProblemTpl::init_condition_
toinit_constraint_
by @ManifoldFR in #223 - Cycle the Riccati solver by @edantec in #217
- Deprecate struct
StageConstraint
, add option to set dual tolerance onSolverProxDDP
, re-implementTrajOptProblemTpl::checkIntegrity()
by @ManifoldFR in #226 - Switch from cmake-format to gersemi for CMake formatting by @ManifoldFR in #227
- Make
DynamicsModelTpl
separate fromStageFunctionTpl
class hierarchy by @ManifoldFR in #229 - Change formatting of exceptions, using variadic macro and type-erased implementation by @ManifoldFR in #230
- Fix support for fmt version 10 by @ManifoldFR in #231
Full Changelog: v0.8.0...v0.9.0 (commits) | CHANGELOG
aligator v0.8.0
This is a majorly API-breaking release following the corresponding proxsuite-nlp release, which started the work on introducing value semantics for all models in the library (without requiring clone()
methods everywhere)
What's Changed
- Switch
shared_ptr<T>
forpolymorphic<T>
for several classes by @edantec in #159 - [modelling/costs] Add getResidual() templated getter for composite cost functions by @ManifoldFR in #198
- Fixing include of LU from Eigen by @quentinll in #200
- [modelling] Change CostStack backend to an unordered_map type by @ManifoldFR in #199
Full Changelog: v0.7.0...v0.8.0
aligator v0.7.0
What's Changed
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #161
- Simplify CMake by @jorisv in #162
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #163
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #164
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #165
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #166
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #167
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #171
- Update CITATION.cff by @ManifoldFR in #170
- Fix RiccatiSolverDense initialization by @jorisv in #174
- Update minimal fmt version by @jorisv in #173
- Enable jrl-cmakemodules workspace compatiblity by @jorisv in #172
- Set policy CMP0167 and CMP0169 to avoid warnings with CMake 3.30 by @jorisv in #176
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #175
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #181
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #182
- [solvers] use placement-new for creating worksapce and results structs by @ManifoldFR in #183
- [fwd.hpp] add deprecations for uses of Eigen::aligned_allocator by @ManifoldFR in #184
- Remove Tracy from link interface, change it to a submodule, install selected headers to new aligator/third-party include dir by @ManifoldFR in #186
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #190
- Call destructor first before doing placement-new on workspace and results objects by @ManifoldFR in #192
- Use tracy.cmake to easily set/remove tracy dependency by @jorisv in #191
Full Changelog: v0.6.1...v0.7.0
v0.6.1
What's Changed
Added
- Add force and wrench cone costs #151
- Add centroidal momentum cost
Changed
- Do not compile or use
gar::ParallelRiccatiSolver<>
when OpenMP support is disabled (#160)
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's changed
Added
- Added constrained LQR example (#145)
- Adds tracy as a profiling tool
- Adds a new sublibrary called
gar
to represent and solve time-varying linear-quadratic subproblems - Adds a parallel, block-sparse factorization for the implicit/proximal Riccati algorithm
- Integrates the CHOLMOD solver from the SuiteSparse library into
gar
- Add a C++ example and benchmark of Talos walking by @edantec
- Add a
BlkMatrix<>
template class for dealing with block Eigen matrices effectively - Copy the headers from boost::core::span
- Add SE2 car benchmark
bench/se2-car.cpp
- Split part of
macros.hpp
into new headereigen-macros.hpp
, addALIGATOR_NOMALLOC_SCOPED
macro to disable Eigen's malloc per-scope and a caching system to restore the malloc status - Add
context.hpp
file foraligator/modelling/dynamics
Changed
- Standardized CMake output directories (#147)
- Split derivative computation into first- and second-order functions per stage by @fabinsch
- Changed minimum version of C++ to C++17 (no longer use
boost::optional
orboost::filesystem
) - SolverProxDDP now uses linear solvers provided by
gar
(API breaking), addLQSolverChoice
enum - Minimum version of eigenpy upgraded to 3.4 (for supporting
std::unique_ptr
) - Move cost functions to
aligator/modelling/costs
- Deprecate
ControlBoxFunction
- Remove
LDLTChoice
enum (API breaking) - Refactor computation of problem Lagrangian's gradient
- Remove
aligator/core/stage-data.hxx
- StageModel/StageData now store dynamics model/data separate from other constraints, add
dynamics_data
toStageData
- Rewrite the
Logger
class (rename fromBaseLogger
) using map data structures to store line formatting info + content - Merge struct ODEData into ContinousDynamicsData, rename continous-base.hpp header to continuous-dynamics-abstract
- Optimize a few includes for faster compilation:
aligator/modelling/dynamics/fwd.hpp
aligator/core/stage-model.hpp
no longer includesaligator/core/cost-abstract.hpp
- Split
traj-opt-data.hpp
out oftraj-opt-problem.hpp
Python API
- Rename
ContinousDynamicsBase
toContinousDynamicsAbstract
- Rename
CostBase
toCostAbstract
- Expose
TrajOptData.init_data
- Remove
LDLTChoice
enum andSolverProxDDP.ldlt_solver_choice
attribute
Full Changelog: v0.5.1...v0.6.0
aligator v0.5.1 - kinodynamical models for robots
What's changed
Fixed
- Fix finite difference function in python unittest (#128)
Added
- Add kinodynamics forward scheme
- Add centroidal dynamics derivative cost to regularize the time derivative of centroidal dynamics
- Add Python example of Solo stepping in place
- Add wrench cone cost for 6D contact in centroidal dynamics
- Add a 6D contact formulation for every centroidal cost and dynamics, including kinodynamics
Full Changelog: v0.5.0...v0.5.1
aligator v0.5.0 - Nonlinear centroidal dynamics and filter line-search
What's Changed
Added
- Add a pair filter strategy as an alternative to linesearch methods
- Add a python example of a locomotion OCP with the robot Talos
- Add two nonlinear centroidal dynamical models, where the control is respectively contact forces and their time derivative
- Add a set of cost functions to generate a centroidal problem with user-defined contacts
- Add unittests and example of typical centroidal problem
Full Changelog: v0.4.1...v0.5.0
aligator v0.4.1
What's Changed
Changed
- CMake: fetch submodule if not available in (#103)
- CMake: move benchmark dependency speecification in main file
- Document and simplify the LQR example
- Finish the se2-car.cpp example (#110)
- Add template instantiation for IntegratorAbstract, ExplicitIntegratorAbstract and IntegratorRK2 (#114)
- Don't output numpy matrices in
example-talos-arm
Fixed
- Fix name of frame parent attribute in examples
- Export C++ definitions in CMake config file
- Fix Doxyfile python bindings directory (#110)
- Fix for eigenpy 3.3 (#121)
Full Changelog: v0.4.0...v0.4.1
aligator v0.4.0
What's Changed
- This is the first release of
aligator
. This library is a joint effort between INRIA and LAAS-CNRS, and will be maintained and expanded in the future. Please provide constructive feedback and contribute!
Full Changelog: v0.3.0...v0.4.0