[wpimath] Fix ElevatorSim::GetCurrentDraw() in C++ (#8370)

The Kv calculation in C++ was missing a negative sign compared to the Java implementation.
This commit is contained in:
Benjamin Hall
2025-11-13 13:48:43 -05:00
committed by GitHub
parent b8d6bc2eb1
commit 95cb38e6df
3 changed files with 25 additions and 1 deletions

View File

@@ -92,3 +92,15 @@ TEST(ElevatorSimTest, Stability) {
frc::Vectord<1>{12.0}, 20_ms * 50)(0)},
sim.GetPosition(), 1_cm);
}
TEST(ElevatorSimTest, CurrentDraw) {
auto const motor = frc::DCMotor::KrakenX60(2);
frc::sim::ElevatorSim sim(motor, 20, 8_kg, 0.1_m, 0_m, 1_m, true, 0_m,
{0.01, 0.0});
EXPECT_DOUBLE_EQ(0.0, sim.GetCurrentDraw().value());
sim.SetInputVoltage(motor.Voltage(motor.Torque(60_A), 0_rad_per_s));
sim.Update(100_ms);
// current draw should start at 60 A and decrease as the back emf catches up
EXPECT_TRUE(0_A < sim.GetCurrentDraw() && sim.GetCurrentDraw() < 60_A);
}