[wpimath] Add LQR template specialization for 2x2 system

A differential drive has this dimensionality (2 velocity states and 2
voltage inputs).
This commit is contained in:
Tyler Veness
2021-06-01 12:26:11 -07:00
committed by Peter Johnson
parent edd2f0232c
commit a5c471af7e
2 changed files with 55 additions and 0 deletions

View File

@@ -44,4 +44,23 @@ LinearQuadraticRegulator<2, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 1>& N, units::second_t dt)
: detail::LinearQuadraticRegulatorImpl<2, 1>(A, B, Q, R, N, dt) {}
LinearQuadraticRegulator<2, 2>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 2>& B,
const wpi::array<double, 2>& Qelems, const wpi::array<double, 2>& Relems,
units::second_t dt)
: LinearQuadraticRegulator(A, B, MakeCostMatrix(Qelems),
MakeCostMatrix(Relems), dt) {}
LinearQuadraticRegulator<2, 2>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 2>& B,
const Eigen::Matrix<double, 2, 2>& Q, const Eigen::Matrix<double, 2, 2>& R,
units::second_t dt)
: detail::LinearQuadraticRegulatorImpl<2, 2>(A, B, Q, R, dt) {}
LinearQuadraticRegulator<2, 2>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 2>& B,
const Eigen::Matrix<double, 2, 2>& Q, const Eigen::Matrix<double, 2, 2>& R,
const Eigen::Matrix<double, 2, 2>& N, units::second_t dt)
: detail::LinearQuadraticRegulatorImpl<2, 2>(A, B, Q, R, N, dt) {}
} // namespace frc