mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-26 01:51:41 +00:00
[wpimath] SwerveDriveKinematics: Add reset method (#5398)
Adds a reset method where teams can pass in module headings for the kinematics object to use if it gets an all-zero ChassisSpeeds while converting ChassisSpeeds to module states. Also removes internal states array, replacing it with an internal headings array.
This commit is contained in:
@@ -125,6 +125,25 @@ TEST_F(SwerveDriveKinematicsTest, ConserveWheelAngle) {
|
||||
EXPECT_NEAR(bl.angle.Degrees().value(), -135.0, kEpsilon);
|
||||
EXPECT_NEAR(br.angle.Degrees().value(), -45.0, kEpsilon);
|
||||
}
|
||||
TEST_F(SwerveDriveKinematicsTest, ResetWheelAngle) {
|
||||
Rotation2d fl = {0_deg};
|
||||
Rotation2d fr = {90_deg};
|
||||
Rotation2d bl = {180_deg};
|
||||
Rotation2d br = {270_deg};
|
||||
m_kinematics.ResetHeadings(fl, fr, bl, br);
|
||||
auto [flMod, frMod, blMod, brMod] =
|
||||
m_kinematics.ToSwerveModuleStates(ChassisSpeeds{});
|
||||
|
||||
EXPECT_NEAR(flMod.speed.value(), 0.0, kEpsilon);
|
||||
EXPECT_NEAR(frMod.speed.value(), 0.0, kEpsilon);
|
||||
EXPECT_NEAR(blMod.speed.value(), 0.0, kEpsilon);
|
||||
EXPECT_NEAR(brMod.speed.value(), 0.0, kEpsilon);
|
||||
|
||||
EXPECT_NEAR(flMod.angle.Degrees().value(), 0.0, kEpsilon);
|
||||
EXPECT_NEAR(frMod.angle.Degrees().value(), 90.0, kEpsilon);
|
||||
EXPECT_NEAR(blMod.angle.Degrees().value(), 180.0, kEpsilon);
|
||||
EXPECT_NEAR(brMod.angle.Degrees().value(), 270.0, kEpsilon);
|
||||
}
|
||||
|
||||
TEST_F(SwerveDriveKinematicsTest, TurnInPlaceForwardKinematics) {
|
||||
SwerveModuleState fl{106.629_mps, 135_deg};
|
||||
|
||||
Reference in New Issue
Block a user