Lodestar
An integrated real-time control package in C++
|
|
5 #ifndef LODESTAR_DISCRETESTATESPACE_HPP
6 #define LODESTAR_DISCRETESTATESPACE_HPP
8 #include "StateSpace.hpp"
9 #include "Lodestar/analysis/ZeroOrderHold.hpp"
10 #include "Lodestar/analysis/BilinearTransformation.hpp"
14 template<
typename TScalar =
double,
int TStateDim = Eigen::Dynamic,
int TInputDim = Eigen::Dynamic,
int TOutputDim = Eigen::Dynamic>
52 const Eigen::MatrixXd &B,
53 const Eigen::MatrixXd &C,
54 const Eigen::MatrixXd &D)
71 const Eigen::MatrixXd &B,
72 const Eigen::MatrixXd &C,
73 const Eigen::MatrixXd &D,
86 StateSpace<TScalar, TStateDim, TInputDim, TOutputDim>(other)
109 bool isStable(
double tolerance = 0)
const;
114 template<
typename TScalar,
int TStateDim,
int TInputDim,
int TOutputDim>
122 Base::setSamplingPeriod(dt);
125 template<
typename TScalar,
int TStateDim,
int TInputDim,
int TOutputDim>
133 Base::setSamplingPeriod(dt);
136 template<
typename TScalar,
int TStateDim,
int TInputDim,
int TOutputDim>
139 auto eig = Base::A_->eigenvalues();
140 double tol = (tolerance < 0 ? -tolerance * tolerance : tolerance *
143 for (
int i = 0; i < eig.size(); i++) {
144 if (eig(i).real() * eig(i).real() + eig(i).imag() * eig(i).imag() > 1 + tol)
151 #endif //LODESTAR_DISCRETESTATESPACE_HPP
Definition: DiscreteStateSpace.hpp:15
bool isDiscrete_
Sampling period.
Definition: StateSpace.hpp:385
DiscreteStateSpace(double dt)
Constructs empty discrete state space system with given sampling period.
Definition: DiscreteStateSpace.hpp:35
Main Lodestar code.
Definition: BilinearTransformation.hpp:12
void setDiscreteParams(double dt)
Sets the discrete time system parameters.
Definition: StateSpace.hpp:609
DiscreteStateSpace(const DiscreteStateSpace &other)
Copy constructor.
Definition: DiscreteStateSpace.hpp:85
Definition: StateSpace.hpp:15
void resampleFast(double dt)
Resamples the system.
Definition: DiscreteStateSpace.hpp:126
DiscreteStateSpace(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &C, const Eigen::MatrixXd &D, double dt)
Constructs a discrete state space system with the given matrices.
Definition: DiscreteStateSpace.hpp:70
void resample(double dt)
Resamples the system.
Definition: DiscreteStateSpace.hpp:115
double dt_
Feedforward matrix.
Definition: StateSpace.hpp:384
DiscreteStateSpace()
Default constructor.
Definition: DiscreteStateSpace.hpp:24
static systems::StateSpace< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::Dynamic > d2c(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &C, const Eigen::MatrixXd &D, double dt)
Reverts a zero-order hold discretization on a discrete-time state space system.
Definition: ZeroOrderHold.cpp:62
DiscreteStateSpace(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &C, const Eigen::MatrixXd &D)
Constructs a discrete state space system with the given matrices.
Definition: DiscreteStateSpace.hpp:51
static systems::StateSpace c2d(const Eigen::MatrixXd &A, const Eigen::MatrixXd &B, const Eigen::MatrixXd &C, const Eigen::MatrixXd &D, double dt)
Generates zero-order hold discretization from a continuous-time state space system.
Definition: ZeroOrderHold.cpp:8