From 4be809499ddc7fc59493597dd820c4e60c244222 Mon Sep 17 00:00:00 2001 From: Tyler Veness Date: Fri, 4 Sep 2020 20:52:03 -0700 Subject: [PATCH] [wpimath] Use more specific Eigen includes in headers (#2693) This helps reduce compilation overhead. I tried slimming down includes of , but the householderQr() function we use from there requires including dependency headers from Eigen that don't fit with lexographic ordering. It didn't seem worth the effort to work around. This won't affect user code at all since all the Eigen feature usage here is internal only; users generally only need . --- wpimath/src/main/native/include/frc/StateSpaceUtil.h | 2 +- .../frc/controller/ControlAffinePlantInversionFeedforward.h | 1 + .../include/frc/controller/LinearPlantInversionFeedforward.h | 1 + .../native/include/frc/controller/LinearQuadraticRegulator.h | 2 +- .../main/native/include/frc/estimator/ExtendedKalmanFilter.h | 2 +- wpimath/src/main/native/include/frc/estimator/KalmanFilter.h | 1 + .../main/native/include/frc/estimator/MerweScaledSigmaPoints.h | 2 +- .../main/native/include/frc/estimator/UnscentedKalmanFilter.h | 2 +- wpimath/src/main/native/include/frc/system/Discretization.h | 3 ++- wpimath/src/test/native/cpp/system/DiscretizationTest.cpp | 1 + 10 files changed, 11 insertions(+), 6 deletions(-) diff --git a/wpimath/src/main/native/include/frc/StateSpaceUtil.h b/wpimath/src/main/native/include/frc/StateSpaceUtil.h index 3de8da3182..e19dd1a443 100644 --- a/wpimath/src/main/native/include/frc/StateSpaceUtil.h +++ b/wpimath/src/main/native/include/frc/StateSpaceUtil.h @@ -13,8 +13,8 @@ #include #include "Eigen/Core" -#include "Eigen/Eigenvalues" #include "Eigen/QR" +#include "Eigen/src/Eigenvalues/EigenSolver.h" #include "frc/geometry/Pose2d.h" namespace frc { diff --git a/wpimath/src/main/native/include/frc/controller/ControlAffinePlantInversionFeedforward.h b/wpimath/src/main/native/include/frc/controller/ControlAffinePlantInversionFeedforward.h index 7d88e77ddd..134ed97791 100644 --- a/wpimath/src/main/native/include/frc/controller/ControlAffinePlantInversionFeedforward.h +++ b/wpimath/src/main/native/include/frc/controller/ControlAffinePlantInversionFeedforward.h @@ -11,6 +11,7 @@ #include #include "Eigen/Core" +#include "Eigen/QR" #include "frc/system/NumericalJacobian.h" #include "units/time.h" diff --git a/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h b/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h index 9f0d7f2061..4bdfff13bc 100644 --- a/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h +++ b/wpimath/src/main/native/include/frc/controller/LinearPlantInversionFeedforward.h @@ -11,6 +11,7 @@ #include #include "Eigen/Core" +#include "Eigen/QR" #include "frc/system/Discretization.h" #include "frc/system/LinearSystem.h" #include "units/time.h" diff --git a/wpimath/src/main/native/include/frc/controller/LinearQuadraticRegulator.h b/wpimath/src/main/native/include/frc/controller/LinearQuadraticRegulator.h index 31f60bd3f1..f448957803 100644 --- a/wpimath/src/main/native/include/frc/controller/LinearQuadraticRegulator.h +++ b/wpimath/src/main/native/include/frc/controller/LinearQuadraticRegulator.h @@ -10,7 +10,7 @@ #include #include "Eigen/Core" -#include "Eigen/QR" +#include "Eigen/src/Cholesky/LLT.h" #include "drake/math/discrete_algebraic_riccati_equation.h" #include "frc/StateSpaceUtil.h" #include "frc/system/Discretization.h" diff --git a/wpimath/src/main/native/include/frc/estimator/ExtendedKalmanFilter.h b/wpimath/src/main/native/include/frc/estimator/ExtendedKalmanFilter.h index a9137760a5..8d60ba8271 100644 --- a/wpimath/src/main/native/include/frc/estimator/ExtendedKalmanFilter.h +++ b/wpimath/src/main/native/include/frc/estimator/ExtendedKalmanFilter.h @@ -10,8 +10,8 @@ #include #include -#include "Eigen/Cholesky" #include "Eigen/Core" +#include "Eigen/src/Cholesky/LDLT.h" #include "drake/math/discrete_algebraic_riccati_equation.h" #include "frc/StateSpaceUtil.h" #include "frc/system/Discretization.h" diff --git a/wpimath/src/main/native/include/frc/estimator/KalmanFilter.h b/wpimath/src/main/native/include/frc/estimator/KalmanFilter.h index dc522e60d7..1d97c91b36 100644 --- a/wpimath/src/main/native/include/frc/estimator/KalmanFilter.h +++ b/wpimath/src/main/native/include/frc/estimator/KalmanFilter.h @@ -11,6 +11,7 @@ #include #include "Eigen/Core" +#include "Eigen/src/Cholesky/LDLT.h" #include "drake/math/discrete_algebraic_riccati_equation.h" #include "frc/StateSpaceUtil.h" #include "frc/system/Discretization.h" diff --git a/wpimath/src/main/native/include/frc/estimator/MerweScaledSigmaPoints.h b/wpimath/src/main/native/include/frc/estimator/MerweScaledSigmaPoints.h index 62ef9bac5e..72abb80b1a 100644 --- a/wpimath/src/main/native/include/frc/estimator/MerweScaledSigmaPoints.h +++ b/wpimath/src/main/native/include/frc/estimator/MerweScaledSigmaPoints.h @@ -9,8 +9,8 @@ #include -#include "Eigen/Cholesky" #include "Eigen/Core" +#include "Eigen/src/Cholesky/LLT.h" namespace frc { diff --git a/wpimath/src/main/native/include/frc/estimator/UnscentedKalmanFilter.h b/wpimath/src/main/native/include/frc/estimator/UnscentedKalmanFilter.h index e69ae9196d..f07d480115 100644 --- a/wpimath/src/main/native/include/frc/estimator/UnscentedKalmanFilter.h +++ b/wpimath/src/main/native/include/frc/estimator/UnscentedKalmanFilter.h @@ -10,8 +10,8 @@ #include #include -#include "Eigen/Cholesky" #include "Eigen/Core" +#include "Eigen/src/Cholesky/LDLT.h" #include "frc/StateSpaceUtil.h" #include "frc/estimator/MerweScaledSigmaPoints.h" #include "frc/estimator/UnscentedTransform.h" diff --git a/wpimath/src/main/native/include/frc/system/Discretization.h b/wpimath/src/main/native/include/frc/system/Discretization.h index 8910dd2a46..72d022619b 100644 --- a/wpimath/src/main/native/include/frc/system/Discretization.h +++ b/wpimath/src/main/native/include/frc/system/Discretization.h @@ -8,8 +8,9 @@ #pragma once #include "Eigen/Core" +#include "Eigen/src/LU/PartialPivLU.h" #include "units/time.h" -#include "unsupported/Eigen/MatrixFunctions" +#include "unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h" namespace frc { diff --git a/wpimath/src/test/native/cpp/system/DiscretizationTest.cpp b/wpimath/src/test/native/cpp/system/DiscretizationTest.cpp index ef6b44dc30..dbeb518ea2 100644 --- a/wpimath/src/test/native/cpp/system/DiscretizationTest.cpp +++ b/wpimath/src/test/native/cpp/system/DiscretizationTest.cpp @@ -10,6 +10,7 @@ #include #include "Eigen/Core" +#include "Eigen/Eigenvalues" #include "frc/system/Discretization.h" #include "frc/system/RungeKutta.h"