[sysid] Remove obsolete WPILib presets, rename CTRE presets (#6460)

This commit is contained in:
DeltaDizzy
2024-04-27 08:55:19 -05:00
committed by GitHub
parent 427b7dcc11
commit 2cd3935aa8
4 changed files with 19 additions and 24 deletions

View File

@@ -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;

View File

@@ -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

View File

@@ -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",

View File

@@ -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.