System Definitions
Background
The starting point for most the utilities in this package is the ControlAffineSystem
type. This type represents a nonlinear control affine system described by:
\[\dot{x} = f(x) + g(x)u,\]
where $x\in\mathbb{R}^n$ is the system state, $u\in\mathbb{R}^n$ is the control input, $f\,:\,\mathbb{R}^n\rightarrow\mathbb{R}^n$ is a vector field characterizing the drift dynamics, and $g\,:\,\mathbb{R}^n\rightarrow\mathbb{R}^{n\times m}$ is a matrix whose columns capture the control directions. A control affine system can be constructed with:
Σ = ControlAffineSystem(name, n, m, f, g)
where name::String
is a string describing the system, n::Int
is an integer denoting the state dimension, m::Int
is an integer denoting the control dimension, and f::Function
and g::Function
are functions of the form f(x)
and g(x)
which take as input an n-dimensional vector x
or a scalar if n=1
. Alternatively, if you do not want to assign a name to system you can use:
Σ = ControlAffineSystem(n, m, f, g)
to construct a system without a name.
Implementation
ControlBarrierFunctions.ControlAffineSystem
— TypeControlAffineSystem
Control affine system described by the dynamics $ẋ = f(x) + g(x)u$ where $x ∈ ℝⁿ$ is the system state, $u ∈ ℝᵐ$ is the control input and $f : ℝⁿ → ℝⁿ$ and $g : ℝⁿ → ℝⁿˣᵐ$ represent the dynamics.
Fields
name::String
: name of system, e.g., "double integrator", "unicycle", "quadrotor", etc.n::Int
: state dimensionm::Int
: control dimensionf::Function
: drift dynamicsg::Function
: control directions
ControlBarrierFunctions.ControlAffineSystem
— MethodControlAffineSystem(n::Int, m::Int, f::Function, g::Function)
Construct a control affine system. Name defaults to missing
if not provided.