v0.4.0
Dear acados
community π
we are excited to announce acados v0.4.0 which comes with significant changes and lots of new features in particular for MATLAB users! π
New MATLAB interface
The new MATLAB interface fully aligns the solver creation with the python interface for which extensive documentation is available. The solver creation through the legacy interface is still supported but will be deprecated in future releases. Please refer to our announcement in the forum for up-to-date instructions on how to port existing code to the new interface.
Please note that the alignment with the python interface comes with some changes in default values:
- Default constraints type is now
'BGH'
- default cost type is now
'LINEAR_LS'
qp_solver_ric_alg
= 1qp_solver_cond_ric_alg
= 1nlp_solver_max_iter
= 100- dynamic defaults as in Python for:
alpha_min
,alpha_reduction
,eps_sufficient_descent
,eval_residual_max_iter
,full_step_dual
Other breaking changes:
acados_ocp
returns anAcadosOcpSolver
object which no longer provides the fieldsmodel_struct
andopts_struct
, but the propertyocp
which is an object of typeAcadosOcp
Global parameters with precomputation
With this release, the acados
problem formulation is extended with global parameters. In contrast to the existing problem parameters, global parameters cannot change stage-wise and most importantly allow for precomputation, i.e. whenever global parameter values are updated all potentially expensive terms within the CasADi problem functions which only depend on these parameters are precomputed.
Multi-phase OCP solver in MATLAB
The multi-phase interface which was only available in python is now also supported by the MATLAB interface.
Breaking changes
In addition to the breaking changes listed above, this release introduces the following breaking changes:
- python interface: rename
AcadosSimOpts
->AcadosSimOptions
- MATLAB interface: see above
- The number of shooting nodes is now specified using
AcadosOcp.solver_options.N_horion
for both MATLAB and Python, previously viadims.N
.
What's Changed
- Matlab interface overhaul by @FreyJo in #1193
- migrate
dims.N
tosolver_options.N_horizon
by @FreyJo in #1203 - Matlab interface: improve error messages by @sandmaennchen in #1204
- MATLAB: minor cleanup of examples, rewrite to new interface by @sandmaennchen in #1206
- MATLAB: change default cost type from AUTO to BGH by @sandmaennchen in #1205
- Matlab: Fix
qp_diagnostics
for partially condensed QP by @FreyJo in #1208 - MALTAB: switch back to generated Make, keep using CMake on Octave by @FreyJo in #1210
- Add option
qp_solver_mu0
toAcadosOcpOptions
by @FreyJo in #1214 - Update HPIPM to version with new Matlab debug functionality by @FreyJo in #1212
- Update jsonlab with improved error messages by @FreyJo in #1215
- Add option
qp_print_level
for HPIPM solvers by @FreyJo in #1213 - New MATLAB frontend: change defaults to match Python by @FreyJo in #1216
- MATLAB multiphase OCP solver by @FreyJo in #1218
- Correction: Torsion calculation in quadrotor_nav example by @JohnTGZ in #1217
- Python: rename AcadosSimOpts -> AcadosSimOptions by @FreyJo in #1222
- Python: cleanup example generic_disc_dyn by @sandmaennchen in #1225
- MATLAB: custom update and zoRO interfacing by @FreyJo in #1223
- No code generation for integrator and related files if dynamics are DISCRETE by @sandmaennchen in #1226
- Update Simulink examples to be based on new interface by @FreyJo in #1228
- Remove OCP related things in templated Make and CMake when creating integrators by @FreyJo in #1229
- SQP: fix
time_lin
by includingocp_nlp_approximate_qp_vectors_sqp
by @FreyJo in #1230 - Include external function needed for ERK adjoints properly in solver templates by @FreyJo in #1231
- MATLAB/Octave: add note on interfaces to examples by @sandmaennchen in #1232
- Add vde_adj in make_sfun.in.m by @FreyJo in #1233
- Add stage info in dynamics, cost and constraints submodules by @FreyJo in #1236
- Fix compiler warning, forgot to change header in #1236 by @FreyJo in #1238
- Add
p_global
to problem formulation in Python by @FreyJo in #1234 - Update problem formulation by @sandmaennchen in #1221
- A few typo fixes and minor changes in the problem formulation document by @josipkh in #1242
- MATLAB: fixes in
make_consistent
, getting started examples using new interface by @sandmaennchen in #1239 - Python: improvements to MHE example by @FreyJo in #1244
- Simplify casadi_function_generation logic by @jgillis in #1245
- MATLAB: add p_global and GenerateContext by @sandmaennchen in #1241
- MATLAB: Simple DAE example uses new interface by @sandmaennchen in #1247
- Fix Multiphase with nondefault
code_export_directory
by @FreyJo in #1240 - MATLAB: remove codgen_model by @sandmaennchen in #1248
- MATLAB: migrate MHE example to new interface by @FreyJo in #1249
- Fix compilation with
EXT_DEP=OFF
and test it on Github actions by @FreyJo in #1235 - Rename
set_p_global
toset_p_global_and_precompute_dependencies
by @sandmaennchen in #1251 - Add common subexpression elimination to CasADi function creation by @sandmaennchen in #1246
- Update matlab install script to install CasADi v3.6.6 by @sandmaennchen in #1252
- Update documentation for python API by @sandmaennchen in #1253
New Contributors
Full Changelog: v0.3.6...v0.4.0