mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-19 00:41:43 +00:00
[wpilib] Rename MotorController setDutyCycle() to setThrottle() (#8720)
Fixes #8716.
This commit is contained in:
@@ -37,7 +37,7 @@ public class {{ name }} extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds({{ (pulse_width_ms.max * 1000) | int }}, {{ (pulse_width_ms.deadbandMax * 1000) | int }}, {{ (pulse_width_ms.center * 1000) | int }}, {{ (pulse_width_ms.deadbandMin * 1000) | int }}, {{ (pulse_width_ms.min * 1000) | int }});
|
||||
m_pwm.setOutputPeriod({{ OutputPeriod | default("5", true)}});
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "{{ ResourceName }}");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class Koors40 extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(20);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "Koors40");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMSparkFlex extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2003, 1550, 1500, 1460, 999);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "RevSparkFlexPWM");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMSparkMax extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2003, 1550, 1500, 1460, 999);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "RevSparkMaxPWM");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMTalonFX extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "TalonFX");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMTalonSRX extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "PWMTalonSRX");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMVenom extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "FusionVenom");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class PWMVictorSPX extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "PWMVictorSPX");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class Spark extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2003, 1550, 1500, 1460, 999);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "RevSPARK");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SparkMini extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2500, 1510, 1500, 1490, 500);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "RevSPARK");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class Talon extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2037, 1539, 1513, 1487, 989);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "Talon");
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ public class VictorSP extends PWMMotorController {
|
||||
|
||||
setBoundsMicroseconds(2004, 1520, 1500, 1480, 997);
|
||||
m_pwm.setOutputPeriod(5);
|
||||
setDutyCycle(0.0);
|
||||
setThrottle(0.0);
|
||||
|
||||
HAL.reportUsage("IO", getChannel(), "VictorSP");
|
||||
}
|
||||
|
||||
@@ -104,8 +104,8 @@ public class DifferentialDrive extends RobotDriveBase implements Sendable, AutoC
|
||||
@SuppressWarnings({"removal", "this-escape"})
|
||||
public DifferentialDrive(MotorController leftMotor, MotorController rightMotor) {
|
||||
this(
|
||||
(double output) -> leftMotor.setDutyCycle(output),
|
||||
(double output) -> rightMotor.setDutyCycle(output));
|
||||
(double output) -> leftMotor.setThrottle(output),
|
||||
(double output) -> rightMotor.setThrottle(output));
|
||||
SendableRegistry.addChild(this, leftMotor);
|
||||
SendableRegistry.addChild(this, rightMotor);
|
||||
}
|
||||
|
||||
@@ -120,10 +120,10 @@ public class MecanumDrive extends RobotDriveBase implements Sendable, AutoClosea
|
||||
MotorController frontRightMotor,
|
||||
MotorController rearRightMotor) {
|
||||
this(
|
||||
(double output) -> frontLeftMotor.setDutyCycle(output),
|
||||
(double output) -> rearLeftMotor.setDutyCycle(output),
|
||||
(double output) -> frontRightMotor.setDutyCycle(output),
|
||||
(double output) -> rearRightMotor.setDutyCycle(output));
|
||||
(double output) -> frontLeftMotor.setThrottle(output),
|
||||
(double output) -> rearLeftMotor.setThrottle(output),
|
||||
(double output) -> frontRightMotor.setThrottle(output),
|
||||
(double output) -> rearRightMotor.setThrottle(output));
|
||||
SendableRegistry.addChild(this, frontLeftMotor);
|
||||
SendableRegistry.addChild(this, rearLeftMotor);
|
||||
SendableRegistry.addChild(this, frontRightMotor);
|
||||
|
||||
@@ -151,14 +151,14 @@ public class ExpansionHubMotor implements AutoCloseable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the duty cycle.
|
||||
* Sets the throttle.
|
||||
*
|
||||
* @param dutyCycle The duty cycle between -1 and 1 (sign indicates direction).
|
||||
* @param throttle The throttle where -1 represents full reverse and 1 represents full forward.
|
||||
*/
|
||||
public void setDutyCycle(double dutyCycle) {
|
||||
public void setThrottle(double throttle) {
|
||||
setEnabled(true);
|
||||
m_modePublisher.set(kPercentageMode);
|
||||
m_setpointPublisher.set(dutyCycle);
|
||||
m_setpointPublisher.set(throttle);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -12,11 +12,11 @@ import org.wpilib.units.measure.Voltage;
|
||||
/** Interface for motor controlling devices. */
|
||||
public interface MotorController {
|
||||
/**
|
||||
* Sets the duty cycle of the motor controller.
|
||||
* Sets the throttle of the motor controller.
|
||||
*
|
||||
* @param dutyCycle The duty cycle between -1 and 1 (sign indicates direction).
|
||||
* @param throttle The throttle where -1 indicates full reverse and 1 indicates full forward.
|
||||
*/
|
||||
void setDutyCycle(double dutyCycle);
|
||||
void setThrottle(double throttle);
|
||||
|
||||
/**
|
||||
* Sets the voltage output of the motor controller.
|
||||
@@ -31,7 +31,7 @@ public interface MotorController {
|
||||
* @param voltage The voltage.
|
||||
*/
|
||||
default void setVoltage(double voltage) {
|
||||
setDutyCycle(voltage / RobotController.getBatteryVoltage());
|
||||
setThrottle(voltage / RobotController.getBatteryVoltage());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,11 +51,11 @@ public interface MotorController {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the duty cycle of the motor controller.
|
||||
* Gets the throttle of the motor controller.
|
||||
*
|
||||
* @return The duty cycle between -1 and 1 (sign indicates direction).
|
||||
* @return The throttle where -1 represents full reverse and 1 represents full forward.
|
||||
*/
|
||||
double getDutyCycle();
|
||||
double getThrottle();
|
||||
|
||||
/**
|
||||
* Sets the inversion state of the motor controller.
|
||||
|
||||
@@ -25,7 +25,7 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
protected PWM m_pwm;
|
||||
|
||||
private SimDevice m_simDevice;
|
||||
private SimDouble m_simDutyCycle;
|
||||
private SimDouble m_simThrottle;
|
||||
|
||||
private boolean m_eliminateDeadband;
|
||||
private int m_minPwm;
|
||||
@@ -47,7 +47,7 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
|
||||
m_simDevice = SimDevice.create("PWMMotorController", channel);
|
||||
if (m_simDevice != null) {
|
||||
m_simDutyCycle = m_simDevice.createDouble("DutyCycle", Direction.OUTPUT, 0.0);
|
||||
m_simThrottle = m_simDevice.createDouble("Throttle", Direction.OUTPUT, 0.0);
|
||||
m_pwm.setSimDevice(m_simDevice);
|
||||
}
|
||||
}
|
||||
@@ -61,7 +61,7 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
if (m_simDevice != null) {
|
||||
m_simDevice.close();
|
||||
m_simDevice = null;
|
||||
m_simDutyCycle = null;
|
||||
m_simThrottle = null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,8 +102,8 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
dutyCycle = 0.0;
|
||||
}
|
||||
|
||||
if (m_simDutyCycle != null) {
|
||||
m_simDutyCycle.set(dutyCycle);
|
||||
if (m_simThrottle != null) {
|
||||
m_simThrottle.set(dutyCycle);
|
||||
}
|
||||
|
||||
int rawValue;
|
||||
@@ -161,21 +161,21 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDutyCycle(double dutyCycle) {
|
||||
public void setThrottle(double throttle) {
|
||||
if (m_isInverted) {
|
||||
dutyCycle = -dutyCycle;
|
||||
throttle = -throttle;
|
||||
}
|
||||
setDutyCycleInternal(dutyCycle);
|
||||
setDutyCycleInternal(throttle);
|
||||
|
||||
for (var follower : m_followers) {
|
||||
follower.setDutyCycle(dutyCycle);
|
||||
follower.setThrottle(throttle);
|
||||
}
|
||||
|
||||
feed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDutyCycle() {
|
||||
public double getThrottle() {
|
||||
return getDutyCycleInternal() * (m_isInverted ? -1.0 : 1.0);
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
* @return The voltage of the motor controller, nominally between -12 V and 12 V.
|
||||
*/
|
||||
public double getVoltage() {
|
||||
return getDutyCycle() * RobotController.getBatteryVoltage();
|
||||
return getThrottle() * RobotController.getBatteryVoltage();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -202,8 +202,8 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
public void disable() {
|
||||
m_pwm.setDisabled();
|
||||
|
||||
if (m_simDutyCycle != null) {
|
||||
m_simDutyCycle.set(0.0);
|
||||
if (m_simThrottle != null) {
|
||||
m_simThrottle.set(0.0);
|
||||
}
|
||||
|
||||
for (var follower : m_followers) {
|
||||
@@ -263,6 +263,6 @@ public abstract class PWMMotorController extends MotorSafety
|
||||
public void initSendable(SendableBuilder builder) {
|
||||
builder.setSmartDashboardType("Motor Controller");
|
||||
builder.setActuator(true);
|
||||
builder.addDoubleProperty("Value", this::getDutyCycle, this::setDutyCycle);
|
||||
builder.addDoubleProperty("Value", this::getThrottle, this::setThrottle);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.wpilib.hardware.motor.PWMMotorController;
|
||||
|
||||
/** Class to control a simulated PWM motor controller. */
|
||||
public class PWMMotorControllerSim {
|
||||
private final SimDouble m_simDutyCycle;
|
||||
private final SimDouble m_simThrottle;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
@@ -27,15 +27,15 @@ public class PWMMotorControllerSim {
|
||||
*/
|
||||
public PWMMotorControllerSim(int channel) {
|
||||
SimDeviceSim simDevice = new SimDeviceSim("PWMMotorController", channel);
|
||||
m_simDutyCycle = simDevice.getDouble("DutyCycle");
|
||||
m_simThrottle = simDevice.getDouble("Throttle");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the motor duty cycle.
|
||||
* Gets the motor throttle.
|
||||
*
|
||||
* @return Duty cycle
|
||||
* @return Throttle
|
||||
*/
|
||||
public double getDutyCycle() {
|
||||
return m_simDutyCycle.get();
|
||||
public double getThrottle() {
|
||||
return m_simThrottle.get();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -253,227 +253,227 @@ class DifferentialDriveTest {
|
||||
void testArcadeDrive() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.arcadeDrive(1.0, 0.0, false);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.arcadeDrive(0.5, 0.5, false);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.5, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.5, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.arcadeDrive(0.5, -0.5, false);
|
||||
assertEquals(0.5, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.5, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.arcadeDrive(-1.0, 0.0, false);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.arcadeDrive(-0.5, 0.5, false);
|
||||
assertEquals(-0.5, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.5, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.arcadeDrive(-0.5, -0.5, false);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.5, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-0.5, right.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testArcadeDriveSquared() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.arcadeDrive(1.0, 0.0, true);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.arcadeDrive(0.5, 0.5, true);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.25, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.arcadeDrive(0.5, -0.5, true);
|
||||
assertEquals(0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.arcadeDrive(-1.0, 0.0, true);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.arcadeDrive(-0.5, 0.5, true);
|
||||
assertEquals(-0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.arcadeDrive(-0.5, -0.5, true);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-0.25, right.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCurvatureDrive() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.curvatureDrive(1.0, 0.0, false);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.curvatureDrive(0.5, 0.5, false);
|
||||
assertEquals(0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.75, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.75, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.curvatureDrive(0.5, -0.5, false);
|
||||
assertEquals(0.75, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.75, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.25, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.curvatureDrive(-1.0, 0.0, false);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.curvatureDrive(-0.5, 0.5, false);
|
||||
assertEquals(-0.75, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.75, left.getThrottle(), 1e-9);
|
||||
assertEquals(-0.25, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.curvatureDrive(-0.5, -0.5, false);
|
||||
assertEquals(-0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.75, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(-0.75, right.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testCurvatureDriveTurnInPlace() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.curvatureDrive(1.0, 0.0, true);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.curvatureDrive(0.5, 0.5, true);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.curvatureDrive(0.5, -0.5, true);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.curvatureDrive(-1.0, 0.0, true);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.curvatureDrive(-0.5, 0.5, true);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.curvatureDrive(-0.5, -0.5, true);
|
||||
assertEquals(0.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTankDrive() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.tankDrive(1.0, 1.0, false);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.tankDrive(0.5, 1.0, false);
|
||||
assertEquals(0.5, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.5, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.tankDrive(1.0, 0.5, false);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.5, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.5, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.tankDrive(-1.0, -1.0, false);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.tankDrive(-0.5, -1.0, false);
|
||||
assertEquals(-0.5, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.5, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.tankDrive(-0.5, 1.0, false);
|
||||
assertEquals(-0.5, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.5, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTankDriveSquared() {
|
||||
var left = new MockPWMMotorController();
|
||||
var right = new MockPWMMotorController();
|
||||
var drive = new DifferentialDrive(left::setDutyCycle, right::setDutyCycle);
|
||||
var drive = new DifferentialDrive(left::setThrottle, right::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.tankDrive(1.0, 1.0, true);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward left turn
|
||||
drive.tankDrive(0.5, 1.0, true);
|
||||
assertEquals(0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Forward right turn
|
||||
drive.tankDrive(1.0, 0.5, true);
|
||||
assertEquals(1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(0.25, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward
|
||||
drive.tankDrive(-1.0, -1.0, true);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward left turn
|
||||
drive.tankDrive(-0.5, -1.0, true);
|
||||
assertEquals(-0.25, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, left.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, right.getThrottle(), 1e-9);
|
||||
|
||||
// Backward right turn
|
||||
drive.tankDrive(-1.0, -0.5, true);
|
||||
assertEquals(-1.0, left.getDutyCycle(), 1e-9);
|
||||
assertEquals(-0.25, right.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, left.getThrottle(), 1e-9);
|
||||
assertEquals(-0.25, right.getThrottle(), 1e-9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,43 +95,43 @@ class MecanumDriveTest {
|
||||
var fr = new MockPWMMotorController();
|
||||
var rr = new MockPWMMotorController();
|
||||
var drive =
|
||||
new MecanumDrive(fl::setDutyCycle, rl::setDutyCycle, fr::setDutyCycle, rr::setDutyCycle);
|
||||
new MecanumDrive(fl::setThrottle, rl::setThrottle, fr::setThrottle, rr::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.driveCartesian(1.0, 0.0, 0.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Left
|
||||
drive.driveCartesian(0.0, -1.0, 0.0);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Right
|
||||
drive.driveCartesian(0.0, 1.0, 0.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CCW
|
||||
drive.driveCartesian(0.0, 0.0, -1.0);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CW
|
||||
drive.driveCartesian(0.0, 0.0, 1.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -141,43 +141,43 @@ class MecanumDriveTest {
|
||||
var fr = new MockPWMMotorController();
|
||||
var rr = new MockPWMMotorController();
|
||||
var drive =
|
||||
new MecanumDrive(fl::setDutyCycle, rl::setDutyCycle, fr::setDutyCycle, rr::setDutyCycle);
|
||||
new MecanumDrive(fl::setThrottle, rl::setThrottle, fr::setThrottle, rr::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward in global frame; left in robot frame
|
||||
drive.driveCartesian(1.0, 0.0, 0.0, Rotation2d.kCCW_Pi_2);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Left in global frame; backward in robot frame
|
||||
drive.driveCartesian(0.0, -1.0, 0.0, Rotation2d.kCCW_Pi_2);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Right in global frame; forward in robot frame
|
||||
drive.driveCartesian(0.0, 1.0, 0.0, Rotation2d.kCCW_Pi_2);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CCW
|
||||
drive.driveCartesian(0.0, 0.0, -1.0, Rotation2d.kCCW_Pi_2);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CW
|
||||
drive.driveCartesian(0.0, 0.0, 1.0, Rotation2d.kCCW_Pi_2);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -187,42 +187,42 @@ class MecanumDriveTest {
|
||||
var fr = new MockPWMMotorController();
|
||||
var rr = new MockPWMMotorController();
|
||||
var drive =
|
||||
new MecanumDrive(fl::setDutyCycle, rl::setDutyCycle, fr::setDutyCycle, rr::setDutyCycle);
|
||||
new MecanumDrive(fl::setThrottle, rl::setThrottle, fr::setThrottle, rr::setThrottle);
|
||||
drive.setDeadband(0.0);
|
||||
|
||||
// Forward
|
||||
drive.drivePolar(1.0, Rotation2d.kZero, 0.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Left
|
||||
drive.drivePolar(1.0, Rotation2d.kCW_Pi_2, 0.0);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Right
|
||||
drive.drivePolar(1.0, Rotation2d.kCCW_Pi_2, 0.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CCW
|
||||
drive.drivePolar(0.0, Rotation2d.kZero, -1.0);
|
||||
assertEquals(-1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rr.getThrottle(), 1e-9);
|
||||
|
||||
// Rotate CW
|
||||
drive.drivePolar(0.0, Rotation2d.kZero, 1.0);
|
||||
assertEquals(1.0, fl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, rl.getDutyCycle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getDutyCycle(), 1e-9);
|
||||
assertEquals(1.0, fl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, fr.getThrottle(), 1e-9);
|
||||
assertEquals(1.0, rl.getThrottle(), 1e-9);
|
||||
assertEquals(-1.0, rr.getThrottle(), 1e-9);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,17 +6,17 @@ package org.wpilib.hardware.motor;
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
public class MockMotorController implements MotorController {
|
||||
private double m_dutyCycle;
|
||||
private double m_throttle;
|
||||
private boolean m_isInverted;
|
||||
|
||||
@Override
|
||||
public void setDutyCycle(double dutyCycle) {
|
||||
m_dutyCycle = m_isInverted ? -dutyCycle : dutyCycle;
|
||||
public void setThrottle(double throttle) {
|
||||
m_throttle = m_isInverted ? -throttle : throttle;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDutyCycle() {
|
||||
return m_dutyCycle;
|
||||
public double getThrottle() {
|
||||
return m_throttle;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -31,6 +31,6 @@ public class MockMotorController implements MotorController {
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
m_dutyCycle = 0;
|
||||
m_throttle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,15 +5,15 @@
|
||||
package org.wpilib.hardware.motor;
|
||||
|
||||
public class MockPWMMotorController {
|
||||
private double m_dutyCycle;
|
||||
private double m_throttle;
|
||||
private boolean m_isInverted;
|
||||
|
||||
public void setDutyCycle(double dutyCycle) {
|
||||
m_dutyCycle = m_isInverted ? -dutyCycle : dutyCycle;
|
||||
public void setThrottle(double throttle) {
|
||||
m_throttle = m_isInverted ? -throttle : throttle;
|
||||
}
|
||||
|
||||
public double getDutyCycle() {
|
||||
return m_dutyCycle;
|
||||
public double getThrottle() {
|
||||
return m_throttle;
|
||||
}
|
||||
|
||||
public void setInverted(boolean isInverted) {
|
||||
@@ -25,7 +25,7 @@ public class MockPWMMotorController {
|
||||
}
|
||||
|
||||
public void disable() {
|
||||
m_dutyCycle = 0;
|
||||
m_throttle = 0;
|
||||
}
|
||||
|
||||
public void stopMotor() {
|
||||
|
||||
@@ -38,7 +38,7 @@ class DCMotorSimTest {
|
||||
// ------ SimulationPeriodic() happens after user code -------
|
||||
RoboRioSim.setVInVoltage(
|
||||
BatterySim.calculateDefaultBatteryLoadedVoltage(sim.getCurrentDraw()));
|
||||
sim.setInputVoltage(motor.getDutyCycle() * RobotController.getBatteryVoltage());
|
||||
sim.setInputVoltage(motor.getThrottle() * RobotController.getBatteryVoltage());
|
||||
sim.update(0.020);
|
||||
encoderSim.setRate(sim.getAngularVelocity());
|
||||
}
|
||||
@@ -51,7 +51,7 @@ class DCMotorSimTest {
|
||||
// ------ SimulationPeriodic() happens after user code -------
|
||||
RoboRioSim.setVInVoltage(
|
||||
BatterySim.calculateDefaultBatteryLoadedVoltage(sim.getCurrentDraw()));
|
||||
sim.setInputVoltage(motor.getDutyCycle() * RobotController.getBatteryVoltage());
|
||||
sim.setInputVoltage(motor.getThrottle() * RobotController.getBatteryVoltage());
|
||||
sim.update(0.020);
|
||||
encoderSim.setRate(sim.getAngularVelocity());
|
||||
}
|
||||
@@ -76,12 +76,12 @@ class DCMotorSimTest {
|
||||
encoderSim.resetData();
|
||||
|
||||
for (int i = 0; i < 140; i++) {
|
||||
motor.setDutyCycle(controller.calculate(encoder.getDistance(), 750));
|
||||
motor.setThrottle(controller.calculate(encoder.getDistance(), 750));
|
||||
|
||||
// ------ SimulationPeriodic() happens after user code -------
|
||||
RoboRioSim.setVInVoltage(
|
||||
BatterySim.calculateDefaultBatteryLoadedVoltage(sim.getCurrentDraw()));
|
||||
sim.setInputVoltage(motor.getDutyCycle() * RobotController.getBatteryVoltage());
|
||||
sim.setInputVoltage(motor.getThrottle() * RobotController.getBatteryVoltage());
|
||||
sim.update(0.020);
|
||||
encoderSim.setDistance(sim.getAngularPosition());
|
||||
encoderSim.setRate(sim.getAngularVelocity());
|
||||
|
||||
@@ -48,11 +48,11 @@ class ElevatorSimTest {
|
||||
double nextVoltage = controller.calculate(encoderSim.getDistance());
|
||||
|
||||
double currentBatteryVoltage = RobotController.getBatteryVoltage();
|
||||
motor.setDutyCycle(nextVoltage / currentBatteryVoltage);
|
||||
motor.setThrottle(nextVoltage / currentBatteryVoltage);
|
||||
|
||||
// ------ SimulationPeriodic() happens after user code -------
|
||||
|
||||
var u = VecBuilder.fill(motor.getDutyCycle() * currentBatteryVoltage);
|
||||
var u = VecBuilder.fill(motor.getThrottle() * currentBatteryVoltage);
|
||||
sim.setInput(u);
|
||||
sim.update(0.020);
|
||||
var y = sim.getOutput();
|
||||
|
||||
@@ -18,14 +18,14 @@ class PWMMotorControllerSimTest {
|
||||
try (Spark spark = new Spark(0)) {
|
||||
PWMMotorControllerSim sim = new PWMMotorControllerSim(spark);
|
||||
|
||||
spark.setDutyCycle(0);
|
||||
assertEquals(0, sim.getDutyCycle());
|
||||
spark.setThrottle(0);
|
||||
assertEquals(0, sim.getThrottle());
|
||||
|
||||
spark.setDutyCycle(0.354);
|
||||
assertEquals(0.354, sim.getDutyCycle());
|
||||
spark.setThrottle(0.354);
|
||||
assertEquals(0.354, sim.getThrottle());
|
||||
|
||||
spark.setDutyCycle(-0.785);
|
||||
assertEquals(-0.785, sim.getDutyCycle());
|
||||
spark.setThrottle(-0.785);
|
||||
assertEquals(-0.785, sim.getThrottle());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user