diff --git a/wpimath/src/main/native/include/frc/system/plant/LinearSystemId.h b/wpimath/src/main/native/include/frc/system/plant/LinearSystemId.h index dcc6786e13..89ceb6dc3a 100644 --- a/wpimath/src/main/native/include/frc/system/plant/LinearSystemId.h +++ b/wpimath/src/main/native/include/frc/system/plant/LinearSystemId.h @@ -42,15 +42,15 @@ class LinearSystemId { static LinearSystem<2, 1, 1> ElevatorSystem(DCMotor motor, units::kilogram_t m, units::meter_t r, double G) { - auto A = frc::MakeMatrix<2, 2>( + Eigen::Matrix A = frc::MakeMatrix<2, 2>( 0.0, 1.0, 0.0, (-std::pow(G, 2) * motor.Kt / (motor.R * units::math::pow<2>(r) * m * motor.Kv)) .to()); - auto B = frc::MakeMatrix<2, 1>( + Eigen::Matrix B = frc::MakeMatrix<2, 1>( 0.0, (G * motor.Kt / (motor.R * r * m)).to()); - auto C = frc::MakeMatrix<1, 2>(1.0, 0.0); - auto D = frc::MakeMatrix<1, 1>(0.0); + Eigen::Matrix C = frc::MakeMatrix<1, 2>(1.0, 0.0); + Eigen::Matrix D = frc::MakeMatrix<1, 1>(0.0); return LinearSystem<2, 1, 1>(A, B, C, D); } @@ -68,13 +68,13 @@ class LinearSystemId { */ static LinearSystem<2, 1, 1> SingleJointedArmSystem( DCMotor motor, units::kilogram_square_meter_t J, double G) { - auto A = frc::MakeMatrix<2, 2>( + Eigen::Matrix A = frc::MakeMatrix<2, 2>( 0.0, 1.0, 0.0, (-std::pow(G, 2) * motor.Kt / (motor.Kv * motor.R * J)).to()); - auto B = + Eigen::Matrix B = frc::MakeMatrix<2, 1>(0.0, (G * motor.Kt / (motor.R * J)).to()); - auto C = frc::MakeMatrix<1, 2>(1.0, 0.0); - auto D = frc::MakeMatrix<1, 1>(0.0); + Eigen::Matrix C = frc::MakeMatrix<1, 2>(1.0, 0.0); + Eigen::Matrix D = frc::MakeMatrix<1, 1>(0.0); return LinearSystem<2, 1, 1>(A, B, C, D); } @@ -105,11 +105,12 @@ class LinearSystemId { static LinearSystem<1, 1, 1> IdentifyVelocitySystem( decltype(1_V / Velocity_t(1)) kV, decltype(1_V / Acceleration_t(1)) kA) { - auto A = frc::MakeMatrix<1, 1>(-kV.template to() / - kA.template to()); - auto B = frc::MakeMatrix<1, 1>(1.0 / kA.template to()); - auto C = frc::MakeMatrix<1, 1>(1.0); - auto D = frc::MakeMatrix<1, 1>(0.0); + Eigen::Matrix A = frc::MakeMatrix<1, 1>( + -kV.template to() / kA.template to()); + Eigen::Matrix B = + frc::MakeMatrix<1, 1>(1.0 / kA.template to()); + Eigen::Matrix C = frc::MakeMatrix<1, 1>(1.0); + Eigen::Matrix D = frc::MakeMatrix<1, 1>(0.0); return LinearSystem<1, 1, 1>(A, B, C, D); } @@ -140,11 +141,12 @@ class LinearSystemId { static LinearSystem<2, 1, 1> IdentifyPositionSystem( decltype(1_V / Velocity_t(1)) kV, decltype(1_V / Acceleration_t(1)) kA) { - auto A = frc::MakeMatrix<2, 2>( + Eigen::Matrix A = frc::MakeMatrix<2, 2>( 0.0, 1.0, 0.0, -kV.template to() / kA.template to()); - auto B = frc::MakeMatrix<2, 1>(0.0, 1.0 / kA.template to()); - auto C = frc::MakeMatrix<1, 2>(1.0, 0.0); - auto D = frc::MakeMatrix<1, 1>(0.0); + Eigen::Matrix B = + frc::MakeMatrix<2, 1>(0.0, 1.0 / kA.template to()); + Eigen::Matrix C = frc::MakeMatrix<1, 2>(1.0, 0.0); + Eigen::Matrix D = frc::MakeMatrix<1, 1>(0.0); return LinearSystem<2, 1, 1>(A, B, C, D); } @@ -174,10 +176,10 @@ class LinearSystemId { double B1 = 1.0 / kAlinear.to() + 1.0 / kAangular.to(); double B2 = 1.0 / kAlinear.to() - 1.0 / kAangular.to(); - auto A = 0.5 * frc::MakeMatrix<2, 2>(A1, A2, A2, A1); - auto B = 0.5 * frc::MakeMatrix<2, 2>(B1, B2, B2, B1); - auto C = frc::MakeMatrix<2, 2>(1.0, 0.0, 0.0, 1.0); - auto D = frc::MakeMatrix<2, 2>(0.0, 0.0, 0.0, 0.0); + Eigen::Matrix A = 0.5 * frc::MakeMatrix<2, 2>(A1, A2, A2, A1); + Eigen::Matrix B = 0.5 * frc::MakeMatrix<2, 2>(B1, B2, B2, B1); + Eigen::Matrix C = frc::MakeMatrix<2, 2>(1.0, 0.0, 0.0, 1.0); + Eigen::Matrix D = frc::MakeMatrix<2, 2>(0.0, 0.0, 0.0, 0.0); return LinearSystem<2, 2, 2>(A, B, C, D); } @@ -235,9 +237,10 @@ class LinearSystemId { double G) { auto A = frc::MakeMatrix<1, 1>( (-std::pow(G, 2) * motor.Kt / (motor.Kv * motor.R * J)).to()); - auto B = frc::MakeMatrix<1, 1>((G * motor.Kt / (motor.R * J)).to()); - auto C = frc::MakeMatrix<1, 1>(1.0); - auto D = frc::MakeMatrix<1, 1>(0.0); + Eigen::Matrix B = + frc::MakeMatrix<1, 1>((G * motor.Kt / (motor.R * J)).to()); + Eigen::Matrix C = frc::MakeMatrix<1, 1>(1.0); + Eigen::Matrix D = frc::MakeMatrix<1, 1>(0.0); return LinearSystem<1, 1, 1>(A, B, C, D); } @@ -263,18 +266,18 @@ class LinearSystemId { (motor.Kv * motor.R * units::math::pow<2>(r)); auto C2 = G * motor.Kt / (motor.R * r); - auto A = frc::MakeMatrix<2, 2>( + Eigen::Matrix A = frc::MakeMatrix<2, 2>( ((1 / m + units::math::pow<2>(rb) / J) * C1).to(), ((1 / m - units::math::pow<2>(rb) / J) * C1).to(), ((1 / m - units::math::pow<2>(rb) / J) * C1).to(), ((1 / m + units::math::pow<2>(rb) / J) * C1).to()); - auto B = frc::MakeMatrix<2, 2>( + Eigen::Matrix B = frc::MakeMatrix<2, 2>( ((1 / m + units::math::pow<2>(rb) / J) * C2).to(), ((1 / m - units::math::pow<2>(rb) / J) * C2).to(), ((1 / m - units::math::pow<2>(rb) / J) * C2).to(), ((1 / m + units::math::pow<2>(rb) / J) * C2).to()); - auto C = frc::MakeMatrix<2, 2>(1.0, 0.0, 0.0, 1.0); - auto D = frc::MakeMatrix<2, 2>(0.0, 0.0, 0.0, 0.0); + Eigen::Matrix C = frc::MakeMatrix<2, 2>(1.0, 0.0, 0.0, 1.0); + Eigen::Matrix D = frc::MakeMatrix<2, 2>(0.0, 0.0, 0.0, 0.0); return LinearSystem<2, 2, 2>(A, B, C, D); }