# convexInterpolationControl

Implementation of the convex interpolation control algorithm in [1]

## Contents

- Syntax
- Description
- Input Arguments
- Output Arguments
- See Also
- References

## Syntax

objContr = convexInterpolationControl(benchmark,Param)
objContr = convexInterpolationControl(benchmark,Param,Opts)
objContr = convexInterpolationControl(benchmark,Param,Opts,Post)

## Description

Offline-phase computations for the Convex Interpolation Control Algorithm.

## Input Arguments

benchmark | name of the considered benchmark model (see; "aroc/benchmarks/dynamics/...")
Param | a structure containing the benchmark parameters
.R0 | initial set of states (class: interval)
.xf | goal state
.tFinal | final time after which the goal state should be reached
.U | set of admissible control inputs (class:; interval)
.W | set of uncertain disturbances (class: interval; or zonotope)
.V | set of measurement errors (class: interval or; zonotope)
.X | set of state constraints (class: mptPolytope)
Opts | a structure containing the algorithm settings
.controller | use exact convex interpolation control law or a linear or quadratic approximation [{`'linear'`} / `'quadratic'` / `'exact'`]
.N | number of time-steps [{10} / positive integer]
.Ninter | number of intermediate time steps during one time step [{4} / positive integer]
.reachSteps | number of reachability steps in one time step [{20} / positive integer]
.Q | state weighting matrix for the cost function of the optimal control problem [{eye(nx)} / positive-definite square matrix]
.R | input weighting matrix for the cost function of the optimal control problem [{zeros(nu)} / positive-definite square matrix]
.parallel | use parallel computing [{false} / true]
.approx.method | method used to determine the approximated control law [{`'scaled'`} / `'optimized'` / `'center'`]
.approx.lambda | tradeoff betwen vertex inputs and difference from the exact control law [{0.5} / value between 0 and 1]
.polyZono.N | number of reference trajectory time steps after which the polynomial zontope is over-approximated with a parallelotope [{Opts.N/2} / positive integer]
.polyZono.orderDep | maximum zonotope order for the dependent part of the polynomial zonotope (for function restructure) [{10} / positive integer]
.polyZono.order | maximum zonotope order for the overall polynomial zonotope (for; function restructure) [{20} / positive integer]
.extHorizon.active | use extended optimization horizon for optimal control problems [{false} / true]
.extHorizon.horizon | length of the extended optimization horizon in reference trajectory time steps [{`'all'`} / positive integer]
.extHorizon.decay | decay function for the objective function of the optimization problem with extended optimization horizon [{`'fall+End'`} / `'uniform'` / `'fall'` /; `'fallLinear'` / `'fallLinear+End'` /; `'fallEqDiff'` / `'fallEqDiff+End'` /; `'rise'` / `'quad'` / `'riseLinear'` /; `'riseEqDiff'` / `'end'`]
.refTraj.Q | state weighting matrix for the cost function of optimal control problem (dimension:[nx,nx])
.refTraj.R | input weighting matrix for the cost function of optimal control problem (dimension:[nu,nu])
.refTraj.x | user provided reference trajectory (dimension: [nx,Opts.N + 1])
-.refTraj.u inputs for the user provided reference trajectory (dimension: [nu,Opts.N])
.cora.alg | reachability algorithm that is used (`'lin'` or `'poly'`)
.cora.tensorOrder | taylor order for the abstraction of the nonlinear function (2 or 3)
.cora.taylorTerms | taylor order for computing e^At [{20} / positive integer]
.cora.zonotopeOrder | upper bound for the zonotope order [{100} / positive integer]
.cora.errorOrder | upper bound for the zonotope order before comp. the abstraction error [{5} / positive integer]
.cora.intermediateOrder | upper bound for the zonotope order during internal computations [{50} / positive integer]
Post | function handle to the postprocessing function that is used to compute the occupancy set

## Output Arguments

objContr | resulting controller storing the data computed during the offline phase (class: objConvInterContr)
res | results object storing the computed reachable set and the reference trajectory

## See Also

`objConvInterContr`

## References

- [1] Schuermann et al. (2017), Convex interpolation control with formal guarantees for disturbed and constrained nonlinear systems

© 2018-2023 I6 Technische Universität München `•` Website `•` License