Skip to content
This repository was archived by the owner on May 19, 2024. It is now read-only.

Commit 4acf4b5

Browse files
committed
refactor(swerve): Use subsystem command.
1 parent 308a0ef commit 4acf4b5

File tree

4 files changed

+33
-102
lines changed

4 files changed

+33
-102
lines changed

Diff for: src/main/java/frc/robot/swerve/DriveRequest.java renamed to src/main/java/frc/lib/DriveRequest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package frc.robot.swerve;
1+
package frc.lib;
22

33
import edu.wpi.first.math.MathUtil;
44
import edu.wpi.first.math.geometry.Rotation2d;

Diff for: src/main/java/frc/robot/RobotContainer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ private void initializeTelemetry() {
9797

9898
/** Configures subsystem default commands. */
9999
private void configureDefaultCommands() {
100-
swerve.setDefaultCommand(swerve.driveWithController(driverController));
100+
swerve.setDefaultCommand(swerve.teleopDrive(driverController));
101101
}
102102

103103
/** Configures controller bindings. */

Diff for: src/main/java/frc/robot/swerve/DriveCommand.java

-98
This file was deleted.

Diff for: src/main/java/frc/robot/swerve/Swerve.java

+31-2
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
package frc.robot.swerve;
22

3+
import java.util.function.Function;
4+
5+
import edu.wpi.first.math.filter.SlewRateLimiter;
36
import edu.wpi.first.math.geometry.Rotation2d;
47
import edu.wpi.first.math.kinematics.ChassisSpeeds;
58
import edu.wpi.first.math.kinematics.SwerveDriveKinematics;
69
import edu.wpi.first.math.kinematics.SwerveModulePosition;
710
import edu.wpi.first.math.kinematics.SwerveModuleState;
11+
import edu.wpi.first.math.util.Units;
812
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardLayout;
913
import edu.wpi.first.wpilibj.shuffleboard.ShuffleboardTab;
1014
import edu.wpi.first.wpilibj2.command.Command;
1115
import edu.wpi.first.wpilibj2.command.button.CommandXboxController;
16+
import frc.lib.DriveRequest;
1217
import frc.lib.Subsystem;
1318
import frc.lib.Telemetry;
1419
import frc.lib.config.MotionProfileConfig;
1520
import frc.lib.controller.SwerveModuleIO;
1621
import frc.robot.RobotConstants;
22+
import frc.robot.odometry.Odometry;
1723

1824
/** Swerve subsystem. */
1925
public class Swerve extends Subsystem {
@@ -242,8 +248,31 @@ public Rotation2d maximumRotationVelocity() {
242248
* @param controller the Xbox controller to use.
243249
* @return a command that drives the swerve using an Xbox controller.
244250
*/
245-
public Command driveWithController(CommandXboxController controller) {
246-
return new DriveCommand(controller);
251+
public Command teleopDrive(CommandXboxController controller) {
252+
final SlewRateLimiter xAccelerationLimiter = translationMotionProfileConfig.createAccelerationLimiter();
253+
final SlewRateLimiter yAccelerationLimiter = translationMotionProfileConfig.createAccelerationLimiter();
254+
255+
final Function<Double, Double> rotationVelocityLimiter = rotationMotionProfileConfig.createVelocityClamper();
256+
257+
final Function<ChassisSpeeds, ChassisSpeeds> chassisSpeedsLimiter = chassisSpeeds -> {
258+
return new ChassisSpeeds(
259+
xAccelerationLimiter.calculate(chassisSpeeds.vxMetersPerSecond),
260+
yAccelerationLimiter.calculate(chassisSpeeds.vyMetersPerSecond),
261+
Units.rotationsToRadians(rotationVelocityLimiter.apply(Units.radiansToRotations(chassisSpeeds.omegaRadiansPerSecond)))
262+
);
263+
};
264+
265+
final Function<DriveRequest, ChassisSpeeds> chassisSpeedsGetter = request -> {
266+
return ChassisSpeeds.fromFieldRelativeSpeeds(
267+
request.translationAxis().getX() * translationMotionProfileConfig.maximumVelocity(),
268+
request.translationAxis().getY() * translationMotionProfileConfig.maximumVelocity(),
269+
request.rotationVelocityAxis() * Units.rotationsToRadians(rotationMotionProfileConfig.maximumVelocity()),
270+
Odometry.getInstance().getDriverRelativeHeading());
271+
};
272+
273+
return run(() -> {
274+
setChassisSpeeds(chassisSpeedsLimiter.apply(chassisSpeedsGetter.apply(DriveRequest.fromController(controller))));
275+
});
247276
}
248277

249278
/**

0 commit comments

Comments
 (0)