OpenOCL Versions Save

Open Optimal Control Library for Matlab. Trajectory Optimization and non-linear Model Predictive Control (MPC) toolbox.

v4.32

5 years ago

v4.29

5 years ago

v4.28

5 years ago

OpenOCL is now available as a .mltbx (Matlab toolbox package). Dependencies (CasADi, ipopt) will be downloaded and installed automatically for the most common systems.

v4.20

5 years ago

fixed overconstrained ocp issue with parameters. Moved solver construction to the setup part.

v4.10

5 years ago

Nlp now has block sparse structure. This should enable the use of better structure exploiting solvers. Ipopt's performance might improve as well. Parameters do not destroy the block sparsity structure.

Known issues:

  • block sparse structure might be destroyed when boundary conditions on both x0 and xF are defined

v.4.00

5 years ago

With this new release we only support the new style of declaring systems and optimal control problems which means that systems are created by using function handles like

system = OclSystem(@varsfun, @eqfun);

you can also use named parameter list (in arbitrary order) like:

system = OclSystem('varsfun', @varsfun, 'eqfun'@eqfun);

The same holds for creating optimal control problems e.g.

ocp = OclOCP('arrivalcosts', @arrivalcosts, 'pathconstraints', @pathconstraints);

Have a look at the updated examples!

v.3.21

5 years ago

You can now set feedback controls in the simulation callback

v.3.20

5 years ago
  • fix Simulator for systems with more than one control input

v.3.11

5 years ago

The release includes many changes to the API. Some class names, method names, and the way the solver is created are changed. If you come from an earlier version you need to adapt your model/code for this version. Below you find a list of changes. Also look at the examples how they are implemented (and look at the API documentation at openocl.org). This is also the first release to support Octave, and this release will become the first stable release.

The URL of the github repository has changed. Change your remote URL with: git remote set-url origin https://github.com/OpenOCL/OpenOCL.git

API changes:

  • Solver.getNLP and Solver.getSolver are replaced by OclSolver(T,system,ocp,options)
  • System became OclSystem
  • OCP(system) became OclOCP()
  • Solver OclSolver takes 1 more argument T, new signature OclSolver OclSolver(T, system, ocp, options)
  • There is no explicit time dependents in OCP definition, new signatures: pathCosts(ch, x, z, u, p), arrivalCosts(ch, x, p), pathConstraints(ch, x, p). #83
  • In OclSystem: setupEquation became setupEquations #85
  • OclSystem and OclOCP: it is possible to implement systems and OCP by in functions, and pass the function handles to the constructors. See Example. This is an alternative way to the existing approach of inheriting from OclOCP and OclSystem. #74
  • OclOCP methods pathConstraints, pathCosts have to be declared as Static when inheriting from OclOCP #74
  • OclSystem methods setupVariables. setupEquations have to be declared as Static when inheriting from OclSystem #74
  • There is no more dependency on z and u in pathConstraints #80
  • Slicing for OclVariables works now like in Matlab. #73 In initial guess and solution state/control trajectory are extended in the third dimension, e.g. shape of sol.p is 3x1x(N+1), slice with sol.p(:,1,4:6)

Important algorithm changes:

  • Path constraints are enforced for every control interval at the beginning and the end. Before path constraint were only enforced at the end of each control interval. With option path_constraints_at_boundary=false pathconstraint are not enforced on the first state and the final state. This can be used if you have potentially conflicting boundary conditions with your path constraints. #80
  • A default control regularization of 1e-6*u.'*u has been introduced. It can be deactivate with option options.disable_regularization = false; #79
  • Initial guess is now of type OclValue. The integrator variables for the initial guess are automatically interpolated if no integrator variables has been retreived or set (a warning will be issued in this case). Option options.nlp.auto_interpolation = false disabled auto interpolation.

API new features:

  • You can set ocl.setBounds('x', xTraj) where xTraj is a vector with the length of N+1 if x is a state, or N if x is a control variable (with N the number of control interval). #82
  • New argument T see OclSolver, can set end time and enables to pass custom discretization points for the OCP. #83
  • OclSolver.solve returns times or independent variables as structured variables
  • You can set variable limits in OclSystem, #69, VanDerPol
  • option opt.system_casadi_mx = true enables the use of casadi MX symbolics for the system

Other changes:

  • There is a new example Cartpole Swingup
  • Race car example introduce du control
  • Unit tests for OclSystem, OclOCP, CollocationIntegrator #72
  • Tests are automatically checked by Travis CI
  • Subsasgn has been fixed. An issue #77 with octave persists.
  • Solving times are reported for profiling in tests #61
  • Use of casdiSX symbolics #40
  • API docs are in the website #58
  • There are warnings issued for compatibility
  • Refactorization of the main Variable types
  • Better display for variables
  • Consistent slicing/indexing of variables
  • Solution consists of trajectories for each variable
  • Octave support

v3-01-pre

5 years ago

This is a pre-release of OpenOCL v3.0X. For the final release of v.3.0X you will find an API documentation on the website (expected mid January 2019). This is also the first release to support Octave. The release includes some changes in the API. In this version some class names and the way solver is created are changed. If you come from an earlier version adapt you model/code for this version. Below you find a list of changes. Also look at the examples how they are implemented (and look at the API documentation once it is ready on openocl.org).

  • Solver.getNLP and Solver.getSolver are replaced by OclSolver(system,ocp,options)
  • System -> OclSystem
  • OCP(system) -> OclOCP()

Other changes include:

  • Refactorization of the main Variable types
  • Better display for variables
  • Consistent slicing/indexing of variables
  • Solution consists of trajectories for each variable
  • Octave support

Features to come with the official release:

  • Export of the solution to JSON
  • API docs for classes/methods/functions on the website
  • Parser for TACO/AMPL problem definitions