[wpimath] Fix C++ feedforward constructors and add tests (#6873)

This commit is contained in:
Joseph Eng
2024-07-27 16:28:59 -07:00
committed by GitHub
parent 03b332d3cf
commit e83a432731
9 changed files with 87 additions and 28 deletions

View File

@@ -139,3 +139,9 @@ TEST(ArmFeedforwardTest, AchievableAcceleration) {
.value(),
-5.25, 0.002);
}
TEST(ArmFeedforwardTest, NegativeGains) {
frc::ArmFeedforward armFF{Ks, Kg, -Kv, -Ka};
EXPECT_EQ(armFF.GetKv().value(), 0);
EXPECT_EQ(armFF.GetKa().value(), 0);
}

View File

@@ -58,3 +58,9 @@ TEST(ElevatorFeedforwardTest, AchievableAcceleration) {
EXPECT_NEAR(elevatorFF.MinAchievableAcceleration(12_V, -2_m / 1_s).value(),
-4.75, 0.002);
}
TEST(ElevatorFeedforwardTest, NegativeGains) {
frc::ElevatorFeedforward elevatorFF{Ks, Kg, -Kv, -Ka};
EXPECT_EQ(elevatorFF.GetKv().value(), 0);
EXPECT_EQ(elevatorFF.GetKa().value(), 0);
}

View File

@@ -42,4 +42,15 @@ TEST(SimpleMotorFeedforwardTest, Calculate) {
simpleMotor.Calculate(2_mps, 3_mps).value(), 2.0);
}
TEST(SimpleMotorFeedforwardTest, NegativeGains) {
constexpr auto Ks = 0.5_V;
constexpr auto Kv = -3_V / 1_mps;
constexpr auto Ka = -0.6_V / 1_mps_sq;
constexpr units::second_t dt = 0_ms;
frc::SimpleMotorFeedforward<units::meter> simpleMotor{Ks, Kv, Ka, dt};
EXPECT_EQ(simpleMotor.GetKv().value(), 0);
EXPECT_EQ(simpleMotor.GetKa().value(), 0);
EXPECT_EQ(simpleMotor.GetDt().value(), 0.02);
}
} // namespace frc