Open Optimal Control Library for Matlab. Trajectory Optimization and non-linear Model Predictive Control (MPC) toolbox.
OpenOCL is now available as a .mltbx (Matlab toolbox package). Dependencies (CasADi, ipopt) will be downloaded and installed automatically for the most common systems.
fixed overconstrained ocp issue with parameters. Moved solver construction to the setup part.
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:
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!
You can now set feedback controls in the simulation callback
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)
OclSolver
takes 1 more argument T, new signature OclSolver
OclSolver(T, system, ocp, options)pathCosts(ch, x, z, u, p)
, arrivalCosts(ch, x, p)
, pathConstraints(ch, x, p)
. #83setupEquation
became setupEquations
#85pathConstraints
, pathCosts
have to be declared as Static when inheriting from OclOCP #74setupVariables
. setupEquations
have to be declared as Static when inheriting from OclSystem #74Important algorithm changes:
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. #801e-6*u.'*u
has been introduced. It can be deactivate with option options.disable_regularization = false;
#79options.nlp.auto_interpolation = false
disabled auto interpolation.API new features:
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). #82times
or independent variables as structured variablesopt.system_casadi_mx = true
enables the use of casadi MX symbolics for the systemOther changes:
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).
Other changes include:
Features to come with the official release: