[ANN] PeriodicSystems.jl - Analysis and design of linear periodic time-varying systems

Many control system applications are formulated as genuine periodic control problems, as for example, satellite attitude control, helicopter forward flight control, orbital stabilization of underactuated systems, etc. Besides that, periodic systems represent a general framework to analyze and design multi-rate sampled-data systems. To address analysis and controller synthesis problems for linear periodic time-varying (LPTV) systems the PeriodicSystems.jl package has been implemented. This package relies on the periodic matrix objects defined in the PeriodicMatrices.jl package and on the solvers of differential and difference periodic matrix equations in the PeriodicMatrixEquations.jl package. PeriodicSystems.jl can be seen as an extension of both the ControlSystems.jl and DescriptorSystems.jl packages dedicated to handle linear time-invariant (LTI) systems.

The available functions cover both continuous-time and discrete-time settings, by focussing on the main basic analysis and controller design problems. The available functions address the following main areas:

  • Model building: Constructors of periodic systems for all periodic matrix types defined in PeriodicMatrices.jl are available. Also LPTV systems can be constructed from LTI systems, as well as LTI systems with multi-rate sampling.

  • Model conversions: Conversions between LPTV system representations with different periodic matrix types are supported; additionally, conversions from continuous-time to discrete-time representations can be performed. Several functions allow to obtain equivalent LTI representations using time- and frequency-lifting techniques. In this way, many analysis problems for LPTV systems can be also performed using the lifted LTI representations using the functions of the DescriptorSystems.jl package.

  • System connections and operations: Basic system connections, such as, parallel, series and feedback connections, as well as system concatenations can be performed for LPTV systems with all periodic matrix types.
    Operations corresponding to input-output mappings with LPTV systems, such as, sums, products, row/column concatennations can be performed when one of the systems is a constant gain (i.e., matrix, UniformScaling, scalar). The inversion of periodic systems with invertible feedthrough matrix is also possible.

  • System analysis: The analysis of LPTV systems covers the computation of system poles and zeros, stability assessment, evaluation of system norms (Hankel-, L2- and H∞-norms), computation of time responses for step or arbitrary input signals.

  • Controller design: The focus of controller design is on the stabilization of LPTV systems using periodic controllers. Several stabilization approaches are implemented, such as, the solution of linear-quadratic-gaussian optimization problem using controllers based on periodic time-varying state feedback and Kalman state estimators, or periodic output feeback gains. For output feedback stabilization the periodic controller gains are determined using optimization based techniques based either on explicitly computed gradients or employing direct search techniques for suitably parameterized periodic gains, such as, switching periodic gains or harmonic representation gains.

The current release of this package covers the basic needs of the analysis and synthesis of LPTV systems. All functions are available for both continuous- and discrete-time systems. The planned new developments target the implementation of tools for eigenvalue assignment using state feedback based on the solution of a periodic Sylvester equation. Tools will be also implemented to determine the steady-state (periodic) solutions of linear periodic differential equations with periodic inputs. The computation of minimal realizations of discrete-time LPTV systems is intended to be implemented (no viable approaches available for continuous-time systems).

The PeriodicSystems.jl package relies on countless contributions from the community of Julia package developers and of some general purpose libraries. Here is a (hopefully complete) list of aditionally employed main packages: ApproxFun.jl, DescriptorSystems.jl,FastLapackInterface.jl, FFTW.jl, IRKGaussLegendre.jl, Interpolations.jl, LAPACK, LinearMaps.jl,MatrixEquations.jl, MatrixPencils.jl, Optim.jl, OrdinaryDiffEq.jl, PeriodicSchurDecompositions.jl, Polynomials.jl, Primes.jl, QuadGK.jl, SLICOT, SparseArrays.jl, Symbolics.jl. The interaction with many of the package authors helped me a lot to overcome various difficulties encountered during the development of PeriodicSystems.jl. Many thanks to all of you!

8 Likes