Skip to content

Commit

Permalink
[sysid] Remove obsolete WPILib presets, rename CTRE presets (wpilibsu…
Browse files Browse the repository at this point in the history
  • Loading branch information
DeltaDizzy authored and chauser committed May 30, 2024
1 parent 717b787 commit 5f6b8c7
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 24 deletions.
9 changes: 4 additions & 5 deletions sysid/src/main/native/cpp/view/Analyzer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
//
Expand Down Expand Up @@ -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
Expand Down
9 changes: 4 additions & 5 deletions sysid/src/main/native/include/sysid/view/Analyzer.h
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
4 changes: 2 additions & 2 deletions sysid/src/test/native/cpp/analysis/FeedbackAnalysisTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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.
Expand Down

0 comments on commit 5f6b8c7

Please sign in to comment.