[wpimath] Remove rho overload from LinearQuadraticRegulator constructors (#2687)

It was added as part of Bryson's rule described in
https://file.tavsys.net/control/controls-engineering-in-frc.pdf. It
doesn't really simplify usage though, and the same thing can be
replicated by multiplying the elements of Q by rho manually. It's easier
to do it that way, it's how 3512 has been doing controller debugging for
a while, and it's probably what other teams will do as well instead of
using the "more structured" way.

Removing these unhelpful overloads also simplifies the LQR interface.
This commit is contained in:
Tyler Veness
2020-09-03 20:53:17 -07:00
committed by GitHub
parent 8edc17dac9
commit 35790a8990
10 changed files with 16 additions and 216 deletions

View File

@@ -13,14 +13,8 @@ LinearQuadraticRegulator<1, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 1, 1>& A, const Eigen::Matrix<double, 1, 1>& B,
const std::array<double, 1>& Qelems, const std::array<double, 1>& Relems,
units::second_t dt)
: LinearQuadraticRegulator(A, B, Qelems, 1.0, Relems, dt) {}
LinearQuadraticRegulator<1, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 1, 1>& A, const Eigen::Matrix<double, 1, 1>& B,
const std::array<double, 1>& Qelems, const double rho,
const std::array<double, 1>& Relems, units::second_t dt)
: detail::LinearQuadraticRegulatorImpl<1, 1>{A, B, Qelems,
rho, Relems, dt} {}
: LinearQuadraticRegulator(A, B, MakeCostMatrix(Qelems),
MakeCostMatrix(Relems), dt) {}
LinearQuadraticRegulator<1, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 1, 1>& A, const Eigen::Matrix<double, 1, 1>& B,
@@ -32,14 +26,8 @@ LinearQuadraticRegulator<2, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 1>& B,
const std::array<double, 2>& Qelems, const std::array<double, 1>& Relems,
units::second_t dt)
: LinearQuadraticRegulator(A, B, Qelems, 1.0, Relems, dt) {}
LinearQuadraticRegulator<2, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 1>& B,
const std::array<double, 2>& Qelems, const double rho,
const std::array<double, 1>& Relems, units::second_t dt)
: detail::LinearQuadraticRegulatorImpl<2, 1>{A, B, Qelems,
rho, Relems, dt} {}
: LinearQuadraticRegulator(A, B, MakeCostMatrix(Qelems),
MakeCostMatrix(Relems), dt) {}
LinearQuadraticRegulator<2, 1>::LinearQuadraticRegulator(
const Eigen::Matrix<double, 2, 2>& A, const Eigen::Matrix<double, 2, 1>& B,