From 2cd3935aa89741bd4b4b840322cc1bec63c2b2a1 Mon Sep 17 00:00:00 2001 From: DeltaDizzy Date: Sat, 27 Apr 2024 08:55:19 -0500 Subject: [PATCH] [sysid] Remove obsolete WPILib presets, rename CTRE presets (#6460) --- sysid/src/main/native/cpp/view/Analyzer.cpp | 9 ++++---- .../sysid/analysis/FeedbackControllerPreset.h | 21 ++++++++----------- .../main/native/include/sysid/view/Analyzer.h | 9 ++++---- .../cpp/analysis/FeedbackAnalysisTest.cpp | 4 ++-- 4 files changed, 19 insertions(+), 24 deletions(-) diff --git a/sysid/src/main/native/cpp/view/Analyzer.cpp b/sysid/src/main/native/cpp/view/Analyzer.cpp index c0bbbae956..457a26295b 100644 --- a/sysid/src/main/native/cpp/view/Analyzer.cpp +++ b/sysid/src/main/native/cpp/view/Analyzer.cpp @@ -31,11 +31,10 @@ Analyzer::Analyzer(glass::Storage& storage, wpi::Logger& logger) : m_logger(logger) { // Fill the StringMap with preset values. m_presets["Default"] = presets::kDefault; - m_presets["WPILib (2020-)"] = presets::kWPILibNew; - m_presets["WPILib (Pre-2020)"] = presets::kWPILibOld; - m_presets["CANCoder"] = presets::kCTRECANCoder; - m_presets["CTRE"] = presets::kCTREDefault; - m_presets["CTRE (Pro)"] = presets::kCTREProDefault; + m_presets["WPILib"] = presets::kWPILib; + m_presets["CTRE Phoenix 5 CANcoder"] = presets::kCTREv5CANCoder; + m_presets["CTRE Phoenix 5"] = presets::kCTREv5; + m_presets["CTRE Phoenix 6"] = presets::kCTREv6; m_presets["REV Brushless Encoder Port"] = presets::kREVNEOBuiltIn; m_presets["REV Brushed Encoder Port"] = presets::kREVNonNEO; m_presets["REV Data Port"] = presets::kREVNonNEO; diff --git a/sysid/src/main/native/include/sysid/analysis/FeedbackControllerPreset.h b/sysid/src/main/native/include/sysid/analysis/FeedbackControllerPreset.h index d946c48f75..d30d80aae9 100644 --- a/sysid/src/main/native/include/sysid/analysis/FeedbackControllerPreset.h +++ b/sysid/src/main/native/include/sysid/analysis/FeedbackControllerPreset.h @@ -73,9 +73,7 @@ enum class FeedbackControllerLoopType { kPosition, kVelocity }; namespace presets { inline constexpr FeedbackControllerPreset kDefault{1.0, 1.0, 20_ms, true, 0_s}; -inline constexpr FeedbackControllerPreset kWPILibNew{kDefault}; -inline constexpr FeedbackControllerPreset kWPILibOld{1.0 / 12.0, 1.0, 50_ms, - false, 0_s}; +inline constexpr FeedbackControllerPreset kWPILib{kDefault}; // Measurement delay from a moving average filter: // @@ -117,20 +115,19 @@ inline constexpr FeedbackControllerPreset kWPILibOld{1.0 / 12.0, 1.0, 50_ms, * * Total delay = 50 ms + 31.5 ms = 81.5 ms. */ -inline constexpr FeedbackControllerPreset kCTRECANCoder{1.0 / 12.0, 60.0, 1_ms, - true, 81.5_ms}; -inline constexpr FeedbackControllerPreset kCTREDefault{1023.0 / 12.0, 0.1, 1_ms, - false, 81.5_ms}; +inline constexpr FeedbackControllerPreset kCTREv5CANCoder{1.0 / 12.0, 60.0, + 1_ms, true, 81.5_ms}; +inline constexpr FeedbackControllerPreset kCTREv5{1023.0 / 12.0, 0.1, 1_ms, + false, 81.5_ms}; /** * https://api.ctr-electronics.com/phoenixpro/release/cpp/classctre_1_1phoenixpro_1_1hardware_1_1core_1_1_core_c_a_ncoder.html#a718a1a214b58d3c4543e88e3cb51ade5 * - * Phoenix Pro uses standard units and Voltage output. This means the output + * Phoenix 6 uses standard units and Voltage output. This means the output * is 1.0, time factor is 1.0, and closed loop operates at 1 millisecond. All - * Pro devices make use of Kalman filters default-tuned to lowest latency, which - * in testing is roughly 1 millisecond + * Phoenix 6 devices make use of Kalman filters default-tuned to lowest latency, + * which in testing is roughly 1 millisecond */ -inline constexpr FeedbackControllerPreset kCTREProDefault{1.0, 1.0, 1_ms, true, - 1_ms}; +inline constexpr FeedbackControllerPreset kCTREv6{1.0, 1.0, 1_ms, true, 1_ms}; /** * https://github.com/wpilibsuite/sysid/issues/258#issuecomment-1010658237 diff --git a/sysid/src/main/native/include/sysid/view/Analyzer.h b/sysid/src/main/native/include/sysid/view/Analyzer.h index 302bf983fe..330bf0a61f 100644 --- a/sysid/src/main/native/include/sysid/view/Analyzer.h +++ b/sysid/src/main/native/include/sysid/view/Analyzer.h @@ -56,11 +56,10 @@ class Analyzer : public glass::View { * The different motor controller timing presets that can be used. */ static constexpr const char* kPresetNames[] = {"Default", - "WPILib (2020-)", - "WPILib (Pre-2020)", - "CANCoder", - "CTRE (Pro)", - "CTRE", + "WPILib", + "CTRE Phoenix 5 CANcoder", + "CTRE Phoenix 5", + "CTRE Phoenix 6", "REV Brushless Encoder Port", "REV Brushed Encoder Port", "REV Data Port", diff --git a/sysid/src/test/native/cpp/analysis/FeedbackAnalysisTest.cpp b/sysid/src/test/native/cpp/analysis/FeedbackAnalysisTest.cpp index 511950ed96..acb9785284 100644 --- a/sysid/src/test/native/cpp/analysis/FeedbackAnalysisTest.cpp +++ b/sysid/src/test/native/cpp/analysis/FeedbackAnalysisTest.cpp @@ -55,7 +55,7 @@ TEST(FeedbackAnalysisTest, VelocityCTRE) { sysid::LQRParameters params{1, 1.5, 7}; auto [Kp, Kd] = sysid::CalculateVelocityFeedbackGains( - sysid::presets::kCTRECANCoder, params, Kv, Ka); + sysid::presets::kCTREv5CANCoder, params, Kv, Ka); EXPECT_NEAR(Kp, 0.000417, 0.00005); EXPECT_NEAR(Kd, 0.00, 0.05); @@ -68,7 +68,7 @@ TEST(FeedbackAnalysisTest, VelocityCTREConversion) { sysid::LQRParameters params{1, 1.5, 7}; auto [Kp, Kd] = sysid::CalculateVelocityFeedbackGains( - sysid::presets::kCTRECANCoder, params, Kv, Ka, 3.0); + sysid::presets::kCTREv5CANCoder, params, Kv, Ka, 3.0); // This should have the same Kp as the test above, but scaled by a factor // of 3.