mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-20 00:51:42 +00:00
[wpilib] Make drive classes follow NWU axes convention (#4079)
All trigonometric functions and vector classes assume North-West-Up axes convention, so using North-East-Down convention with them is really error-prone. We've broken something every time we touched the drive classes. We originally used North-East-Down to match the joystick convention, but the volume of long-lived bugs has made this not worth it in retrospect. The rest of WPILib also uses North-West-Up, so this makes things consistent. KilloughDrive was removed since no one uses it.
This commit is contained in:
@@ -13,12 +13,12 @@ TEST(DifferentialDriveTest, ArcadeDriveIK) {
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Forward left turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, -0.5, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.5, speeds.right);
|
||||
|
||||
// Forward right turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, 0.5, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.5, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
@@ -28,32 +28,32 @@ TEST(DifferentialDriveTest, ArcadeDriveIK) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Backward left turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, -0.5, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.5, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
// Backward right turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, 0.5, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-0.5, speeds.right);
|
||||
|
||||
// Left turn (xSpeed with negative sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, -1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, 1.0, false);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Left turn (xSpeed with positive sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, -1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, 1.0, false);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Right turn (xSpeed with negative sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, 1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, -1.0, false);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Right turn (xSpeed with positive sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, 1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, -1.0, false);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
}
|
||||
@@ -65,12 +65,12 @@ TEST(DifferentialDriveTest, ArcadeDriveIKSquared) {
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Forward left turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, -0.5, true);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.25, speeds.right);
|
||||
|
||||
// Forward right turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, 0.5, true);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.25, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
@@ -80,32 +80,32 @@ TEST(DifferentialDriveTest, ArcadeDriveIKSquared) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Backward left turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, -0.5, true);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(-0.25, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
// Backward right turn
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, 0.5, true);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-0.25, speeds.right);
|
||||
|
||||
// Left turn (xSpeed with negative sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, -1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, 1.0, false);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Left turn (xSpeed with positive sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, -1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, 1.0, false);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Right turn (xSpeed with negative sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, 1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(-0.0, -1.0, false);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Right turn (xSpeed with positive sign)
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, 1.0, false);
|
||||
speeds = frc::DifferentialDrive::ArcadeDriveIK(0.0, -1.0, false);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
}
|
||||
@@ -117,12 +117,12 @@ TEST(DifferentialDriveTest, CurvatureDriveIK) {
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Forward left turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, -0.5, false);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.25, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.75, speeds.right);
|
||||
|
||||
// Forward right turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, 0.5, false);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.75, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.25, speeds.right);
|
||||
|
||||
@@ -132,12 +132,12 @@ TEST(DifferentialDriveTest, CurvatureDriveIK) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Backward left turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, -0.5, false);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.75, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-0.25, speeds.right);
|
||||
|
||||
// Backward right turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, 0.5, false);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.25, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-0.75, speeds.right);
|
||||
}
|
||||
@@ -149,12 +149,12 @@ TEST(DifferentialDriveTest, CurvatureDriveIKTurnInPlace) {
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Forward left turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, -0.5, true);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.right);
|
||||
|
||||
// Forward right turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, 0.5, true);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
@@ -164,12 +164,12 @@ TEST(DifferentialDriveTest, CurvatureDriveIKTurnInPlace) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
|
||||
// Backward left turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, -0.5, true);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.right);
|
||||
|
||||
// Backward right turn
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, 0.5, true);
|
||||
speeds = frc::DifferentialDrive::CurvatureDriveIK(-0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, speeds.left);
|
||||
EXPECT_DOUBLE_EQ(-1.0, speeds.right);
|
||||
}
|
||||
@@ -250,12 +250,12 @@ TEST(DifferentialDriveTest, ArcadeDrive) {
|
||||
EXPECT_DOUBLE_EQ(1.0, right.Get());
|
||||
|
||||
// Forward left turn
|
||||
drive.ArcadeDrive(0.5, -0.5, false);
|
||||
drive.ArcadeDrive(0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.5, right.Get());
|
||||
|
||||
// Forward right turn
|
||||
drive.ArcadeDrive(0.5, 0.5, false);
|
||||
drive.ArcadeDrive(0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.5, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
@@ -265,12 +265,12 @@ TEST(DifferentialDriveTest, ArcadeDrive) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, right.Get());
|
||||
|
||||
// Backward left turn
|
||||
drive.ArcadeDrive(-0.5, -0.5, false);
|
||||
drive.ArcadeDrive(-0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.5, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
// Backward right turn
|
||||
drive.ArcadeDrive(-0.5, 0.5, false);
|
||||
drive.ArcadeDrive(-0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(-0.5, right.Get());
|
||||
}
|
||||
@@ -287,12 +287,12 @@ TEST(DifferentialDriveTest, ArcadeDriveSquared) {
|
||||
EXPECT_DOUBLE_EQ(1.0, right.Get());
|
||||
|
||||
// Forward left turn
|
||||
drive.ArcadeDrive(0.5, -0.5, true);
|
||||
drive.ArcadeDrive(0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.25, right.Get());
|
||||
|
||||
// Forward right turn
|
||||
drive.ArcadeDrive(0.5, 0.5, true);
|
||||
drive.ArcadeDrive(0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.25, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
@@ -302,12 +302,12 @@ TEST(DifferentialDriveTest, ArcadeDriveSquared) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, right.Get());
|
||||
|
||||
// Backward left turn
|
||||
drive.ArcadeDrive(-0.5, -0.5, true);
|
||||
drive.ArcadeDrive(-0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(-0.25, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
// Backward right turn
|
||||
drive.ArcadeDrive(-0.5, 0.5, true);
|
||||
drive.ArcadeDrive(-0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(-0.25, right.Get());
|
||||
}
|
||||
@@ -324,12 +324,12 @@ TEST(DifferentialDriveTest, CurvatureDrive) {
|
||||
EXPECT_DOUBLE_EQ(1.0, right.Get());
|
||||
|
||||
// Forward left turn
|
||||
drive.CurvatureDrive(0.5, -0.5, false);
|
||||
drive.CurvatureDrive(0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.25, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.75, right.Get());
|
||||
|
||||
// Forward right turn
|
||||
drive.CurvatureDrive(0.5, 0.5, false);
|
||||
drive.CurvatureDrive(0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(0.75, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.25, right.Get());
|
||||
|
||||
@@ -339,12 +339,12 @@ TEST(DifferentialDriveTest, CurvatureDrive) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, right.Get());
|
||||
|
||||
// Backward left turn
|
||||
drive.CurvatureDrive(-0.5, -0.5, false);
|
||||
drive.CurvatureDrive(-0.5, 0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.75, left.Get());
|
||||
EXPECT_DOUBLE_EQ(-0.25, right.Get());
|
||||
|
||||
// Backward right turn
|
||||
drive.CurvatureDrive(-0.5, 0.5, false);
|
||||
drive.CurvatureDrive(-0.5, -0.5, false);
|
||||
EXPECT_DOUBLE_EQ(-0.25, left.Get());
|
||||
EXPECT_DOUBLE_EQ(-0.75, right.Get());
|
||||
}
|
||||
@@ -361,12 +361,12 @@ TEST(DifferentialDriveTest, CurvatureDriveTurnInPlace) {
|
||||
EXPECT_DOUBLE_EQ(1.0, right.Get());
|
||||
|
||||
// Forward left turn
|
||||
drive.CurvatureDrive(0.5, -0.5, true);
|
||||
drive.CurvatureDrive(0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(1.0, right.Get());
|
||||
|
||||
// Forward right turn
|
||||
drive.CurvatureDrive(0.5, 0.5, true);
|
||||
drive.CurvatureDrive(0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(1.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
@@ -376,12 +376,12 @@ TEST(DifferentialDriveTest, CurvatureDriveTurnInPlace) {
|
||||
EXPECT_DOUBLE_EQ(-1.0, right.Get());
|
||||
|
||||
// Backward left turn
|
||||
drive.CurvatureDrive(-0.5, -0.5, true);
|
||||
drive.CurvatureDrive(-0.5, 0.5, true);
|
||||
EXPECT_DOUBLE_EQ(-1.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(0.0, right.Get());
|
||||
|
||||
// Backward right turn
|
||||
drive.CurvatureDrive(-0.5, 0.5, true);
|
||||
drive.CurvatureDrive(-0.5, -0.5, true);
|
||||
EXPECT_DOUBLE_EQ(0.0, left.Get());
|
||||
EXPECT_DOUBLE_EQ(-1.0, right.Get());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user