double y = 0.0;
Transfer function utilities for linear systems and nonlinear elements.
Definition Discretize.hpp:5
FirstOrderCoeffs< Scalar > first_order(double tau, double K, double dt)
Compute first-order discrete-time system coefficients.
Definition FirstOrder.hpp:37
Scalar first_order_response(double tau, double K, const Scalar &t)
Compute analytical step response at time t.
Definition FirstOrder.hpp:73
Scalar first_order_step(const FirstOrderCoeffs< Scalar > &coeffs, const Scalar &state, const Scalar &input)
Compute next state for first-order system (stateless).
Definition FirstOrder.hpp:56
Eigen::Vector2d x = Eigen::Vector2d::Zero();
Eigen::Matrix< Scalar, 2, 1 > second_order_step(const SecondOrderCoeffs< Scalar > &coeffs, const Eigen::Matrix< Scalar, 2, 1 > &state, const Scalar &input)
Compute next state for second-order system (stateless).
Definition SecondOrder.hpp:126
SecondOrderCoeffs< Scalar > second_order(double omega_n, double zeta, double K, double dt)
Compute second-order discrete-time system coefficients.
Definition SecondOrder.hpp:40
std::tuple< double, double, double > second_order_characteristics(double omega_n, double zeta)
Compute theoretical system characteristics.
Definition SecondOrder.hpp:159
Scalar second_order_output(const SecondOrderCoeffs< Scalar > &coeffs, const Eigen::Matrix< Scalar, 2, 1 > &state, const Scalar &input)
Extract output from state (stateless).
Definition SecondOrder.hpp:144
double next =
rate_limit(current, commanded, rate_max, dt);
double hyst =
hysteresis(input, last_output, width);
Scalar deadband(const Scalar &input, double deadband_width)
Apply deadband (stateless).
Definition Nonlinear.hpp:52
Scalar rate_limit(const Scalar ¤t, const Scalar &commanded, double rate_max, double dt)
Apply rate limiting to a value change (stateless).
Definition Nonlinear.hpp:20
Scalar saturate(const Scalar &value, const Scalar &min, const Scalar &max)
Apply saturation/clamping (stateless).
Definition Nonlinear.hpp:37
Scalar hysteresis(const Scalar &input, const Scalar &last_output, double hysteresis_width)
Apply hysteresis (stateless computation).
Definition Nonlinear.hpp:73
Eigen::Matrix2d A_c, A_d;
Eigen::Vector2d B_c, B_d;
void discretize_zoh(const Eigen::Matrix< double, N, N > &A_c, const Eigen::Matrix< double, N, 1 > &B_c, double dt, Eigen::Matrix< double, N, N > &A_d, Eigen::Matrix< double, N, 1 > &B_d)
Zero-order hold (ZOH) discretization.
Definition Discretize.hpp:80
void discretize_tustin(const Eigen::Matrix< double, N, N > &A_c, const Eigen::Matrix< double, N, 1 > &B_c, double dt, Eigen::Matrix< double, N, N > &A_d, Eigen::Matrix< double, N, 1 > &B_d)
Tustin (bilinear) discretization.
Definition Discretize.hpp:100
void discretize_euler(const Eigen::Matrix< double, N, N > &A_c, const Eigen::Matrix< double, N, 1 > &B_c, double dt, Eigen::Matrix< double, N, N > &A_d, Eigen::Matrix< double, N, 1 > &B_d)
Forward Euler discretization.
Definition Discretize.hpp:117