Merge branch 'main' into 2027

This commit is contained in:
Peter Johnson
2026-02-27 14:24:41 -08:00
13 changed files with 317 additions and 19 deletions

View File

@@ -13,8 +13,8 @@ import org.wpilib.math.util.MathSharedStore;
* org.wpilib.math.trajectory.TrapezoidProfile} instead.
*/
public class SlewRateLimiter {
private final double m_positiveRateLimit;
private final double m_negativeRateLimit;
private double m_positiveRateLimit;
private double m_negativeRateLimit;
private double m_prevVal;
private double m_prevTime;
@@ -81,4 +81,29 @@ public class SlewRateLimiter {
m_prevVal = value;
m_prevTime = MathSharedStore.getTimestamp();
}
/**
* Sets the rate-of-change limit to the given positive and negative rate limits.
*
* @param positiveRateLimit The rate-of-change limit in the positive direction, in units per
* second. This is expected to be positive.
* @param negativeRateLimit The rate-of-change limit in the negative direction, in units per
* second. This is expected to be negative.
*/
public void setLimit(double positiveRateLimit, double negativeRateLimit) {
m_positiveRateLimit = positiveRateLimit;
m_negativeRateLimit = negativeRateLimit;
}
/**
* Sets the rate-of-change limit to the given positive rate limit and negative rate limit of
* -rateLimit.
*
* @param rateLimit The rate-of-change limit in both directions, in units per second. This is
* expected to be positive.
*/
public void setLimit(double rateLimit) {
m_positiveRateLimit = rateLimit;
m_negativeRateLimit = -rateLimit;
}
}

View File

@@ -92,6 +92,32 @@ class SlewRateLimiter {
m_prevTime = wpi::math::MathSharedStore::GetTimestamp();
}
/**
* Sets the rate-of-change limit to the given positive and negative rate
* limits.
*
* @param positiveRateLimit The rate-of-change limit in the positive
* direction, in units per second. This is expected to be positive.
* @param negativeRateLimit The rate-of-change limit in the negative
* direction, in units per second. This is expected to be negative.
*/
void SetLimit(Rate_t positiveRateLimit, Rate_t negativeRateLimit) {
m_positiveRateLimit = positiveRateLimit;
m_negativeRateLimit = negativeRateLimit;
}
/**
* Sets the rate-of-change limit to the given positive rate limit and negative
* rate limit of -rateLimit.
*
* @param rateLimit The rate-of-change limit in both directions, in units per
* second. This is expected to be positive.
*/
void SetLimit(Rate_t rateLimit) {
m_positiveRateLimit = rateLimit;
m_negativeRateLimit = -rateLimit;
}
private:
Rate_t m_positiveRateLimit;
Rate_t m_negativeRateLimit;