Exported functions and types

Index

Docstrings

IterativeLearningControl2.ILCProblemType
ILCProblem

Fields:

  • r: Reference signal, a matrix of size (ny, N) where ny is the number of outputs and N is the number of time points.
  • Gr: Closed-loop transfer function from reference to output. May be either an LTISystem model from ControlSystemsBase, such as those created using tf or ss, or an LTVSystem model.
  • Gu: Closed-loop transfer function from plant input to output
source
IterativeLearningControl2.ILCSolutionType
ILCSolution

A structure representing the solution to an ILC problem.

Fields:

  • Y: Plant responses. Y[i] is the response during the ith iteration. The first response is recorded before any ILC input is applied, while the last response is recorded before the last ILC adjustment signal has been computed, i.e., Y[end] corresponds to the response to the ILC input A[end-1].
  • E: Errors. E[i] is the error during the ith iteration, i.e., E[i] = r - Y[i] where r is the reference signal.
  • A: ILC inputs. A[i] is the ILC input during the ith iteration.
  • prob: The ILCProblem that was solved
  • alg: The ILCAlgorithm that was used
source
ControlSystemsBase.linearizeMethod
linearize(m::NonlinearSystem, x0::AbstractVector, a0::AbstractVector, args...)

Linearize a nonlinear system m around the operating point (x0, a0).

Arguments

  • m::NonlinearSystem: The nonlinear system to be linearized.
  • x0::AbstractVector: The operating point of the state variables.
  • a0::AbstractVector: The operating point of the ILC input variables.
  • args...: Additional arguments to be passed to the dynamics functions (such as r, p, t).

Returns

An instance of ControlSystemsBase.StateSpace representing the linearized system.

source
IterativeLearningControl2.compute_inputMethod
compute_input(prob, alg::ILCAlgorithm, workspace, a, e)

Compute the next ILC input using the learning rule

Arguments:

  • alg: The ILC algorithm
  • workspace: A workspace created by calling init on the algorithm: workspace = init(prob, alg).
  • a: Previous ILC input
  • e: Error r - y
source
IterativeLearningControl2.hankel_operatorMethod
hankel(sys::LTISystem{<:Discrete}, N::Int)

Return a matrix operator $H$ such that $Hu^T = y^T$ where y = lsim(sys, u). $H$ is a Hankel matrix containing the Markov parameters of the system (scaled impulse response).

source
IterativeLearningControl2.ilcMethod
ilc(prob, alg; iters = 5, actual=prob)

Run the ILC algorithm for iters iterations. Returns a ILCSolution structure.

To manually perform ILC iterations, see the functions

To simulate the effect of plant-model mismatch, one may provide a different instance of the ILCProblem using the actual keyword argument which is used to simulate the plant response. The ILC update will be performed using the plant model from prob, while simulated data will be acquired from the plant models in the actual problem.

source
IterativeLearningControl2.ilc_theoremFunction
ilc_theorem(alg::HeuristicILC, Gc, Gcact = nothing)

Plot the stability boundary for the ILC algorithm.

Arguments:

  • alg: Containing the filters $Q$ and $L$
  • Gc: The closed-loop system from ILC signal to output. If alg.location = :ref, this is typically given by feedback(P*C) while if alg.location = :input, this is typically given by feedback(P, C).
  • Gcact: If provided, this is the "actual" closed-loop system which may be constructed using a different plant model than Gc. This is useful when trying to determine if the filter choises will lead to a robust ILC algorithm. Gc may be constructed using, e.g., uncertain parameters, see https://juliacontrol.github.io/RobustAndOptimalControl.jl/dev/uncertainty/ for more details.
source
IterativeLearningControl2.initMethod
workspace = init(prob, alg)

Initialize the ILC algorithm. This function is called internally by the funciton ilc but manual iterations require the user to initialize the workspace explicitly.

source
IterativeLearningControl2.linearize!Method
linearize(m::NonlinearSystem, x0::AbstractMatrix, a0::AbstractMatrix, r, p)

Linearizes a nonlinear system m around the trajectory defined by x0, a0, r, and p. The resulting linear time-varying (LTV) system is returned.

Arguments

  • m::NonlinearSystem: The nonlinear system to be linearized.
  • x0::AbstractMatrix: The state matrix of size (nx, N) where nx is the number of states and N is the number of time points.
  • a0::AbstractMatrix: The input matrix of size (na, N) where na is the number of adjustment inputs.
  • r: The reference signal matrix.
  • p: The parameter object.
source
IterativeLearningControl2.mv_hankel_operatorFunction
mv_hankel_operator(sys::LTISystem{<:Discrete}, N::Int)

Return a matrix operator $H$ such that y == reshape(H*vec(u'), :, sys.ny)' where y = lsim(sys, u). $H$ is a block Hankel matrix containing the Markov parameters of the system (scaled impulse response).

Use of this function requires the user to manually install and load the packages using JuMP, BlockArrays.

source