3#include "math/eigen_interface.h"
4#include <Eigen/unsupported/Eigen/MatrixFunctions>
20template <
int STATES,
int INPUTS>
21std::tuple<EMat<STATES, STATES>, EMat<STATES, INPUTS>> discretize_AB(EMat<STATES, STATES> Ac, EMat<STATES, INPUTS> Bc,
const double &dt) {
27 EMat<STATES + INPUTS, STATES + INPUTS> M;
28 M.template block<STATES, STATES>(0, 0) = Ac;
29 M.template block<STATES, INPUTS>(0, STATES) = Bc;
30 M.template block<INPUTS, STATES + INPUTS>(STATES, 0).setZero();
36 EMat<STATES + INPUTS, STATES + INPUTS> phi = (M * dt).exp();
39 return std::make_tuple(phi.template block<STATES, STATES>(0, 0), phi.template block<STATES, INPUTS>(0, STATES));