diff --git a/wpilibc/src/test/native/cpp/simulation/DifferentialDriveSimTest.cpp b/wpilibc/src/test/native/cpp/simulation/DifferentialDriveSimTest.cpp index a8c5f41646..3eeb4ef49a 100644 --- a/wpilibc/src/test/native/cpp/simulation/DifferentialDriveSimTest.cpp +++ b/wpilibc/src/test/native/cpp/simulation/DifferentialDriveSimTest.cpp @@ -64,8 +64,10 @@ TEST(DifferentialDriveSim, Convergence) { groundTruthX, voltages, 20_ms); } - EXPECT_NEAR(groundTruthX(0, 0), sim.GetPose().X().to(), 0.01); - EXPECT_NEAR(groundTruthX(1, 0), sim.GetPose().Y().to(), 0.01); + // 2 inch tolerance is OK since our ground truth is an approximation of the + // ODE solution using RK4 anyway + EXPECT_NEAR(groundTruthX(0, 0), sim.GetPose().X().to(), 0.05); + EXPECT_NEAR(groundTruthX(1, 0), sim.GetPose().Y().to(), 0.05); EXPECT_NEAR(groundTruthX(2, 0), sim.GetHeading().Radians().to(), 0.01); } diff --git a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSimTest.java b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSimTest.java index 246236ae0d..62fdcc965b 100644 --- a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSimTest.java +++ b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/DifferentialDrivetrainSimTest.java @@ -79,15 +79,20 @@ class DifferentialDrivetrainSimTest { groundTruthX = NumericalIntegration.rk4(sim::getDynamics, groundTruthX, voltages, 0.020); } + // 2 inch tolerance is OK since our ground truth is an approximation of the + // ODE solution using RK4 anyway assertEquals( groundTruthX.get(DifferentialDrivetrainSim.State.kX.value, 0), - sim.getState(DifferentialDrivetrainSim.State.kX)); + sim.getState(DifferentialDrivetrainSim.State.kX), + 0.05); assertEquals( groundTruthX.get(DifferentialDrivetrainSim.State.kY.value, 0), - sim.getState(DifferentialDrivetrainSim.State.kY)); + sim.getState(DifferentialDrivetrainSim.State.kY), + 0.05); assertEquals( groundTruthX.get(DifferentialDrivetrainSim.State.kHeading.value, 0), - sim.getState(DifferentialDrivetrainSim.State.kHeading)); + sim.getState(DifferentialDrivetrainSim.State.kHeading), + 0.01); } @Test