Skip to content

aligator v0.16.0

Latest

Choose a tag to compare

@jorisv jorisv released this 15 Oct 13:54
· 107 commits to main since this release
v0.16.0
d199d3b

What's Changed

This release brings a major change to the ProxDDP solver, which no longer uses proximal iteration the co-state (the dynamics' Lagrange multiplies). This choice is made to increase the solver's overall performance.

The ProxDDP solver now defaults to using a linear rollout for the state-control trajectory update.

Furthermore, on a temporary basis, implicit discrete dynamics are no longer supported in the API and solvers.

One major new addition is the ArenaMatrix template class, which is a allocator-aware class which manages an Eigen matrix-like object and is compatible with Eigen operations. The design is inspired from stan-dev/math's arena_matrix class.

Fixed

  • gar : fix missing move assignment operator in LqrProblemTpl
  • Fix C++20 support. Fix consteval compilation errors related to fmt
  • Fix aligator::gar::ParallelRiccatiSolver missing from docs
  • Fix missing set of Pinocchio-support (cost, dynamics, etc) classes
  • solver-proxddp : fix return type of LinesearchVariant::isValid()
  • memory : added template class ArenaMatrix (#348)

Changed

  • gar : allow setting number of refinement iterations for condensed KKT solver
  • ProxDDP solver : change default rollout type to RolloutType::LINEAR/ROLLOUT_LINEAR
  • solvers/proxddp : make Workspace an allocator-aware class
  • add [[nodiscard]] attribute to several functions in:
    • core/manifold-base
    • gar/lqr-problem
    • gar/utils
    • modelling/spaces/cartesian-product
    • solvers/proxddp/solver-proxddp
  • readme/cmake : update actually expected minimum version of eigenpy to 3.9
  • solvers : make proxddp algo's Results class copyable again (in C++ and Python) (#322)
  • python/visitors : also set __copy__ method on exposed class with CopyableVisitor (#322)
  • python : make Results copyable (using CopyableVisitor) (#322)
  • ProxDDP solver : remove proximal iteration/ALM over co-states
  • ProxDDP solver : throw when given invalid linesearch enum value
  • core/linesearches : move LinesearchOptions struct out of the Linesearch template class, add CTAD
  • Change all tests to use Catch2 instead of Boost.Test
  • The Riccati algorithms now run faster after the dual-regularisation on co-states and the QR for the implicit dynamics have been removed. The algos might be less numerically accurate.
    • the base interface and derived solvers no longer take the scalar argument mudyn (dual regularisation on the costate)
  • Several classes are now allocator-aware:
    • the Riccati-based solvers in gar (ProximalRiccatiSolver, ParallelRiccatiSolver)
    • WorkspaceTpl in aligator/solvers/proxddp
  • cmake/pixi: update maximum version for fmt library to v12 included (#355)

Changes to dynamics

  • Remove explicit dynamics (incl. explicit integrators) from DynamicsModel class hierarchy
  • Make ExplicitDynamicsModel used everywhere in API (e.g. StageModel now takes/stores polymorphic<ExplicitDynamicsModel>)
  • Directly store state space repr dim and actual dim (nx and ndx) in ManifoldAbstract class

Added

  • gar: add CTAD for the ParallelRiccatiSolver and ProximalRiccatiSolver classes
  • testing: added a test_mpc.py script to test parallel and serial mpc implementations (#331)
  • modelling : added wheeled inverted pendulum dynamics (#326)
  • CMake option to BUILD_STANDALONE_PYTHON_INTERFACE (#347)
  • utils: add free function forwardDynamics() (replaces previous struct) in aligator/utils/forward-dyn.hpp

Removed

  • fwd.hpp : remove deprecated typedef ODEDataTpl
  • gar: remove Cholmod backend (#345)
  • cmake / pixi : remove Cholmod dependency (#345)
  • gar: remove support for implicit dynamics in LQ solver interface
    • remove member LqrKnotTpl::E
    • simplify Riccati kernel algorithm
  • memory : removed template class ManagedMatrix (#348)
  • removed several .txx template instantiation declaration files
  • third-party : remove headers related to boost::span: boost/core/data.hpp, boost/core/make_span.hpp, boost/core/span.hpp
  • removed header aligator/tags.hpp

Full Changelog: v0.15.0...v0.16.0