Features
Lodestar's feature list.
On this page
- Automatic resolution of circular data-dependencies (algebraic loops).
- Transparent compile-time error checking, as well as run-time checks prior to executing code.
- Easy extensibility with a simple yet powerful
Block
API based on template metaprogramming. - Clean C++ code generation with predetermined function execution order, as well as resolved data-dependencies.
- Zero-overhead abstraction using templated classes; it does not matter if you have a thousand inputs, or just one.
- Out-of-the-box networking support, with efficient serialization.
- Automatic direct encryption and decryption of messages for enhanced security using state-of-the-art elliptic curve algorithms.
Control Routines
For now, this section will be a checkboxed list; more details will follow. We adhere in most cases to the classification system used in SLICOT1. Cursive identifiers are extensions to the SLICOT system that we devised for additional features that Lodestar provides.
A: Analysis Routines
- AB: State-Space Analysis
- AB04: Continuous/Discrete Time
- AB04MD: Discrete-time <-> continuous-time
conversion by bilinear transformation.
- Generalized bilinear transformations have been
implemented, with specialization for Tustin, Euler,
and backward differencing transforms.
ls::analysis::BilinearTransformation
- Beyond the SLICOT spec, zero-order hold transformations based on exponential and logarithmic matrices have been implemented.ls::analysis::ZeroOrderHold
- AB04MD: Discrete-time <-> continuous-time
conversion by bilinear transformation.
- Generalized bilinear transformations have been
implemented, with specialization for Tustin, Euler,
and backward differencing transforms.
- AB07: Inverse and Dual Systems
- AB07ND: Inverse of a given state-space representation
- Continuous-time state space inverses have been
implement, but error handling is not properly done.
ls::analysis::LinearSystemInverse
- Continuous-time state space inverses have been
implement, but error handling is not properly done.
- AB07ND: Inverse of a given state-space representation
- AB04: Continuous/Discrete Time
- AB: State-Space Analysis
F: Filtering
- FB: Kalman Filters
- FB01: N/A
- FB01VD: One recursion of the conventional Kalman
filter
- We currently have an implementation for finite
horizon Kalman gain computation for
discrete-time linear time invariant systems.
ls::filter::DiscreteLQE
- FB01VD: One recursion of the conventional Kalman
filter
- We currently have an implementation for finite
horizon Kalman gain computation for
discrete-time linear time invariant systems.
- FB01: N/A
- FB: Kalman Filters
S: Synthesis Routines
- SB: State-Space Synthesis
- SB02: Riccati Equations
- SB02MD: Solution of continuous- or discrete-time
algebraic Riccati equations (Schur vectors method)
- A discrete-time ARE solver is currently in
development.
ls::synthesis::AlgebraicRiccatiEquation::solveDARE
- SB02MD: Solution of continuous- or discrete-time
algebraic Riccati equations (Schur vectors method)
- A discrete-time ARE solver is currently in
development.
- SB02: Riccati Equations
- SB: State-Space Synthesis
T: Transformation Routines
- TD: Rational Matrix
- TD05: Rational Matrix to State-Space Conversion
- TD05AD: Minimal state-space representation for a
proper transfer matrix
- This is currently implemented for scalar transfer
functions, but can easily be extended to
transfer function matrices.
ls::systems::TransferFunction::toStateSpace
- TD05AD: Minimal state-space representation for a
proper transfer matrix
- This is currently implemented for scalar transfer
functions, but can easily be extended to
transfer function matrices.
- TD05: Rational Matrix to State-Space Conversion
- TD: Rational Matrix
U: Utility Routines
- UD: Numerical Data Handling
- UD01: N/A
- UD01BD: Reading a matrix polynomial
- This is achieved using GiNaC2 routines; currently
only scalar transfer functions are implemented, but
this is easily extendable.
ls::systems::TransferFunction::copyFromExpression
- This is achieved using GiNaC2 routines; currently
only scalar transfer functions are implemented, but
this is easily extendable.
- UD01BD: Reading a matrix polynomial
- UD01: N/A
- US: Symbolic Manipulation/Data Handling
- US01: Ordinary Differential Equations
- UD: Numerical Data Handling
SLICOT: Subroutine Library in Systems and Control Theory. ↩︎
GiNaC: GiNac is Not a CAS (Computer Algebra System). ↩︎