mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-21 01:01:43 +00:00
[wpilib] Rename MotorController setDutyCycle() to setThrottle() (#8720)
Fixes #8716.
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user