[wpilib] Rename MotorController setDutyCycle() to setThrottle() (#8720)

Fixes #8716.
This commit is contained in:
Tyler Veness
2026-04-09 22:28:01 -07:00
committed by GitHub
parent a4e035ba64
commit b6849a8da3
160 changed files with 659 additions and 706 deletions

View File

@@ -244,232 +244,232 @@ TEST(DifferentialDriveTest, ArcadeDrive) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.ArcadeDrive(1.0, 0.0, false);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.ArcadeDrive(0.5, 0.5, false);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.5, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.5, right.GetThrottle());
// Forward right turn
drive.ArcadeDrive(0.5, -0.5, false);
EXPECT_DOUBLE_EQ(0.5, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.5, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward
drive.ArcadeDrive(-1.0, 0.0, false);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.ArcadeDrive(-0.5, 0.5, false);
EXPECT_DOUBLE_EQ(-0.5, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.5, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward right turn
drive.ArcadeDrive(-0.5, -0.5, false);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.5, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-0.5, right.GetThrottle());
}
TEST(DifferentialDriveTest, ArcadeDriveSquared) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.ArcadeDrive(1.0, 0.0, true);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.ArcadeDrive(0.5, 0.5, true);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.25, right.GetThrottle());
// Forward right turn
drive.ArcadeDrive(0.5, -0.5, true);
EXPECT_DOUBLE_EQ(0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward
drive.ArcadeDrive(-1.0, 0.0, true);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.ArcadeDrive(-0.5, 0.5, true);
EXPECT_DOUBLE_EQ(-0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward right turn
drive.ArcadeDrive(-0.5, -0.5, true);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-0.25, right.GetThrottle());
}
TEST(DifferentialDriveTest, CurvatureDrive) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.CurvatureDrive(1.0, 0.0, false);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.CurvatureDrive(0.5, 0.5, false);
EXPECT_DOUBLE_EQ(0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.75, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.75, right.GetThrottle());
// Forward right turn
drive.CurvatureDrive(0.5, -0.5, false);
EXPECT_DOUBLE_EQ(0.75, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.75, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.25, right.GetThrottle());
// Backward
drive.CurvatureDrive(-1.0, 0.0, false);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.CurvatureDrive(-0.5, 0.5, false);
EXPECT_DOUBLE_EQ(-0.75, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.75, left.GetThrottle());
EXPECT_DOUBLE_EQ(-0.25, right.GetThrottle());
// Backward right turn
drive.CurvatureDrive(-0.5, -0.5, false);
EXPECT_DOUBLE_EQ(-0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.75, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(-0.75, right.GetThrottle());
}
TEST(DifferentialDriveTest, CurvatureDriveTurnInPlace) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.CurvatureDrive(1.0, 0.0, true);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.CurvatureDrive(0.5, 0.5, true);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward right turn
drive.CurvatureDrive(0.5, -0.5, true);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward
drive.CurvatureDrive(-1.0, 0.0, true);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.CurvatureDrive(-0.5, 0.5, true);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.0, right.GetThrottle());
// Backward right turn
drive.CurvatureDrive(-0.5, -0.5, true);
EXPECT_DOUBLE_EQ(0.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
}
TEST(DifferentialDriveTest, TankDrive) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.TankDrive(1.0, 1.0, false);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.TankDrive(0.5, 1.0, false);
EXPECT_DOUBLE_EQ(0.5, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.5, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward right turn
drive.TankDrive(1.0, 0.5, false);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.5, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.5, right.GetThrottle());
// Backward
drive.TankDrive(-1.0, -1.0, false);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.TankDrive(-0.5, -1.0, false);
EXPECT_DOUBLE_EQ(-0.5, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.5, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward right turn
drive.TankDrive(-0.5, 1.0, false);
EXPECT_DOUBLE_EQ(-0.5, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.5, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
}
TEST(DifferentialDriveTest, TankDriveSquared) {
wpi::MockPWMMotorController left;
wpi::MockPWMMotorController right;
wpi::DifferentialDrive drive{
[&](double output) { left.SetDutyCycle(output); },
[&](double output) { right.SetDutyCycle(output); }};
[&](double output) { left.SetThrottle(output); },
[&](double output) { right.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.TankDrive(1.0, 1.0, true);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward left turn
drive.TankDrive(0.5, 1.0, true);
EXPECT_DOUBLE_EQ(0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, right.GetThrottle());
// Forward right turn
drive.TankDrive(1.0, 0.5, true);
EXPECT_DOUBLE_EQ(1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(0.25, right.GetThrottle());
// Backward
drive.TankDrive(-1.0, -1.0, true);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward left turn
drive.TankDrive(-0.5, -1.0, true);
EXPECT_DOUBLE_EQ(-0.25, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, left.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, right.GetThrottle());
// Backward right turn
drive.TankDrive(-1.0, -0.5, true);
EXPECT_DOUBLE_EQ(-1.0, left.GetDutyCycle());
EXPECT_DOUBLE_EQ(-0.25, right.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, left.GetThrottle());
EXPECT_DOUBLE_EQ(-0.25, right.GetThrottle());
}

View File

@@ -87,46 +87,46 @@ TEST(MecanumDriveTest, Cartesian) {
wpi::MockPWMMotorController rl;
wpi::MockPWMMotorController fr;
wpi::MockPWMMotorController rr;
wpi::MecanumDrive drive{[&](double output) { fl.SetDutyCycle(output); },
[&](double output) { rl.SetDutyCycle(output); },
[&](double output) { fr.SetDutyCycle(output); },
[&](double output) { rr.SetDutyCycle(output); }};
wpi::MecanumDrive drive{[&](double output) { fl.SetThrottle(output); },
[&](double output) { rl.SetThrottle(output); },
[&](double output) { fr.SetThrottle(output); },
[&](double output) { rr.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.DriveCartesian(1.0, 0.0, 0.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Left
drive.DriveCartesian(0.0, -1.0, 0.0);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
// Right
drive.DriveCartesian(0.0, 1.0, 0.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CCW
drive.DriveCartesian(0.0, 0.0, -1.0);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CW
drive.DriveCartesian(0.0, 0.0, 1.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
}
TEST(MecanumDriveTest, CartesianGyro90CW) {
@@ -134,46 +134,46 @@ TEST(MecanumDriveTest, CartesianGyro90CW) {
wpi::MockPWMMotorController rl;
wpi::MockPWMMotorController fr;
wpi::MockPWMMotorController rr;
wpi::MecanumDrive drive{[&](double output) { fl.SetDutyCycle(output); },
[&](double output) { rl.SetDutyCycle(output); },
[&](double output) { fr.SetDutyCycle(output); },
[&](double output) { rr.SetDutyCycle(output); }};
wpi::MecanumDrive drive{[&](double output) { fl.SetThrottle(output); },
[&](double output) { rl.SetThrottle(output); },
[&](double output) { fr.SetThrottle(output); },
[&](double output) { rr.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward in global frame; left in robot frame
drive.DriveCartesian(1.0, 0.0, 0.0, 90_deg);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
// Left in global frame; backward in robot frame
drive.DriveCartesian(0.0, -1.0, 0.0, 90_deg);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
// Right in global frame; forward in robot frame
drive.DriveCartesian(0.0, 1.0, 0.0, 90_deg);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CCW
drive.DriveCartesian(0.0, 0.0, -1.0, 90_deg);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CW
drive.DriveCartesian(0.0, 0.0, 1.0, 90_deg);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
}
TEST(MecanumDriveTest, Polar) {
@@ -181,44 +181,44 @@ TEST(MecanumDriveTest, Polar) {
wpi::MockPWMMotorController rl;
wpi::MockPWMMotorController fr;
wpi::MockPWMMotorController rr;
wpi::MecanumDrive drive{[&](double output) { fl.SetDutyCycle(output); },
[&](double output) { rl.SetDutyCycle(output); },
[&](double output) { fr.SetDutyCycle(output); },
[&](double output) { rr.SetDutyCycle(output); }};
wpi::MecanumDrive drive{[&](double output) { fl.SetThrottle(output); },
[&](double output) { rl.SetThrottle(output); },
[&](double output) { fr.SetThrottle(output); },
[&](double output) { rr.SetThrottle(output); }};
drive.SetDeadband(0.0);
// Forward
drive.DrivePolar(1.0, 0_deg, 0.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Left
drive.DrivePolar(1.0, -90_deg, 0.0);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
// Right
drive.DrivePolar(1.0, 90_deg, 0.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CCW
drive.DrivePolar(0.0, 0_deg, -1.0);
EXPECT_DOUBLE_EQ(-1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rr.GetThrottle());
// Rotate CW
drive.DrivePolar(0.0, 0_deg, 1.0);
EXPECT_DOUBLE_EQ(1.0, fl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, rl.GetDutyCycle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetDutyCycle());
EXPECT_DOUBLE_EQ(1.0, fl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, fr.GetThrottle());
EXPECT_DOUBLE_EQ(1.0, rl.GetThrottle());
EXPECT_DOUBLE_EQ(-1.0, rr.GetThrottle());
}

View File

@@ -6,12 +6,12 @@
using namespace wpi;
void MockMotorController::SetDutyCycle(double dutyCycle) {
m_dutyCycle = m_isInverted ? -dutyCycle : dutyCycle;
void MockMotorController::SetThrottle(double throttle) {
m_throttle = m_isInverted ? -throttle : throttle;
}
double MockMotorController::GetDutyCycle() const {
return m_dutyCycle;
double MockMotorController::GetThrottle() const {
return m_throttle;
}
void MockMotorController::SetInverted(bool isInverted) {
@@ -23,5 +23,5 @@ bool MockMotorController::GetInverted() const {
}
void MockMotorController::Disable() {
m_dutyCycle = 0;
m_throttle = 0;
}

View File

@@ -6,12 +6,12 @@
using namespace wpi;
void MockPWMMotorController::SetDutyCycle(double dutyCycle) {
m_dutyCycle = m_isInverted ? -dutyCycle : dutyCycle;
void MockPWMMotorController::SetThrottle(double throttle) {
m_throttle = m_isInverted ? -throttle : throttle;
}
double MockPWMMotorController::GetDutyCycle() const {
return m_dutyCycle;
double MockPWMMotorController::GetThrottle() const {
return m_throttle;
}
void MockPWMMotorController::SetInverted(bool isInverted) {
@@ -23,7 +23,7 @@ bool MockPWMMotorController::GetInverted() const {
}
void MockPWMMotorController::Disable() {
m_dutyCycle = 0;
m_throttle = 0;
}
void MockPWMMotorController::StopMotor() {

View File

@@ -37,7 +37,7 @@ TEST(DCMotorSimTest, VoltageSteadyState) {
// Then, SimulationPeriodic runs
wpi::sim::RoboRioSim::SetVInVoltage(
wpi::sim::BatterySim::Calculate({sim.GetCurrentDraw()}));
sim.SetInputVoltage(motor.GetDutyCycle() *
sim.SetInputVoltage(motor.GetThrottle() *
wpi::RobotController::GetBatteryVoltage());
sim.Update(20_ms);
encoderSim.SetRate(sim.GetAngularVelocity().value());
@@ -53,7 +53,7 @@ TEST(DCMotorSimTest, VoltageSteadyState) {
// Then, SimulationPeriodic runs
wpi::sim::RoboRioSim::SetVInVoltage(
wpi::sim::BatterySim::Calculate({sim.GetCurrentDraw()}));
sim.SetInputVoltage(motor.GetDutyCycle() *
sim.SetInputVoltage(motor.GetThrottle() *
wpi::RobotController::GetBatteryVoltage());
sim.Update(20_ms);
encoderSim.SetRate(sim.GetAngularVelocity().value());
@@ -80,12 +80,12 @@ TEST(DCMotorSimTest, PositionFeedbackControl) {
for (int i = 0; i < 140; i++) {
// RobotPeriodic runs first
motor.SetDutyCycle(controller.Calculate(encoder.GetDistance(), 750));
motor.SetThrottle(controller.Calculate(encoder.GetDistance(), 750));
// Then, SimulationPeriodic runs
wpi::sim::RoboRioSim::SetVInVoltage(
wpi::sim::BatterySim::Calculate({sim.GetCurrentDraw()}));
sim.SetInputVoltage(motor.GetDutyCycle() *
sim.SetInputVoltage(motor.GetThrottle() *
wpi::RobotController::GetBatteryVoltage());
sim.Update(20_ms);
encoderSim.SetDistance(sim.GetAngularPosition().value());

View File

@@ -30,9 +30,9 @@ TEST(ElevatorSimTest, StateSpaceSim) {
for (size_t i = 0; i < 100; ++i) {
controller.SetSetpoint(2.0);
auto nextVoltage = controller.Calculate(encoderSim.GetDistance());
motor.SetDutyCycle(nextVoltage / wpi::RobotController::GetInputVoltage());
motor.SetThrottle(nextVoltage / wpi::RobotController::GetInputVoltage());
wpi::math::Vectord<1> u{motor.GetDutyCycle() *
wpi::math::Vectord<1> u{motor.GetThrottle() *
wpi::RobotController::GetInputVoltage()};
sim.SetInput(u);
sim.Update(20_ms);

View File

@@ -15,13 +15,13 @@ TEST(PWMMotorControllerSimTest, TestMotor) {
wpi::Spark spark{0};
wpi::sim::PWMMotorControllerSim sim{spark};
spark.SetDutyCycle(0);
EXPECT_EQ(0, sim.GetDutyCycle());
spark.SetThrottle(0);
EXPECT_EQ(0, sim.GetThrottle());
spark.SetDutyCycle(0.354);
EXPECT_EQ(0.354, sim.GetDutyCycle());
spark.SetThrottle(0.354);
EXPECT_EQ(0.354, sim.GetThrottle());
spark.SetDutyCycle(-0.785);
EXPECT_EQ(-0.785, sim.GetDutyCycle());
spark.SetThrottle(-0.785);
EXPECT_EQ(-0.785, sim.GetThrottle());
}
} // namespace wpi::sim

View File

@@ -42,7 +42,7 @@ TEST(StateSpaceSimTest, FlywheelSim) {
wpi::sim::RoboRioSim::SetVInVoltage(
wpi::sim::BatterySim::Calculate({sim.GetCurrentDraw()}));
sim.SetInput(wpi::math::Vectord<1>{
motor.GetDutyCycle() * wpi::RobotController::GetInputVoltage()});
motor.GetThrottle() * wpi::RobotController::GetInputVoltage()});
sim.Update(20_ms);
encoderSim.SetRate(sim.GetAngularVelocity().value());
}