From ae742134fec8c62eb2e8816f844068d11c8f018f Mon Sep 17 00:00:00 2001 From: Tyler Wilcox Date: Tue, 27 Jan 2026 20:46:13 -0500 Subject: [PATCH] Working logically --- .../SwerveDrive/SwerveBuilder.java | 16 +++++- .../SwerveDrive/SwerveDriveSubsystem.java | 10 ++-- .../SwerveDrive/SwerveModule.java | 53 ++++++++++++------- 3 files changed, 54 insertions(+), 25 deletions(-) diff --git a/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveBuilder.java b/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveBuilder.java index 4b5781a..66ba603 100644 --- a/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveBuilder.java +++ b/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveBuilder.java @@ -54,7 +54,7 @@ public class SwerveBuilder { } public SwerveDriveSubsystem build(){ - return new SwerveDriveSubsystem(pigeonId, maxLinearVelMetersSecond, maxAngularVelRadiansSecond, modules.toArray(size -> new SwerveModule[size])); + return new SwerveDriveSubsystem(pigeonId, canBusName, maxLinearVelMetersSecond, maxAngularVelRadiansSecond, modules.toArray(size -> new SwerveModule[size])); } public class SwerveModuleBuilder { @@ -63,10 +63,12 @@ public class SwerveBuilder { private double driveKP; private double driveKI; private double driveKD; + private double driveKV; private int steerMotorId; private double steerKP; private double steerKI; private double steerKD; + private double steerKV; private int steerEncoderId; private double steerOffset; private Translation2d moduleLocation; @@ -98,6 +100,11 @@ public class SwerveBuilder { return this; } + public SwerveModuleBuilder withDriveKV(double driveKV){ + this.driveKV = driveKV; + return this; + } + public SwerveModuleBuilder withSteerMotorId(int steerMotorId){ this.steerMotorId = steerMotorId; return this; @@ -118,6 +125,11 @@ public class SwerveBuilder { return this; } + public SwerveModuleBuilder withSteerKV(double steerKV){ + this.steerKV = steerKV; + return this; + } + public SwerveModuleBuilder withSteerEncoderId(int steerEncoderId){ this.steerEncoderId = steerEncoderId; return this; @@ -144,7 +156,7 @@ public class SwerveBuilder { } public SwerveModule build() { - return new SwerveModule(driveMotorId, driveKP, driveKI, driveKD, steerMotorId, steerKP, steerKI, steerKD, + return new SwerveModule(driveMotorId, driveKP, driveKI, driveKD, driveKV, steerMotorId, steerKP, steerKI, steerKD, steerKV, steerEncoderId, steerOffset, canBusName, moduleLocation, gearRatio, wheelDiameterInMeters, moduleName); } diff --git a/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveDriveSubsystem.java b/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveDriveSubsystem.java index 13e196d..5f65f70 100644 --- a/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveDriveSubsystem.java +++ b/lib/src/main/java/org/fairportrobotics/frc/robolib/DriveSystems/SwerveDrive/SwerveDriveSubsystem.java @@ -34,7 +34,7 @@ public class SwerveDriveSubsystem extends SubsystemBase{ private double mLastSimTime = 0; - public SwerveDriveSubsystem(int pigeonId, double maxLinearVelMetersSecond, double maxAngularVelRadiansSecond, SwerveModule... modules){ + public SwerveDriveSubsystem(int pigeonId, String canBusName, double maxLinearVelMetersSecond, double maxAngularVelRadiansSecond, SwerveModule... modules){ MAX_LINEAR_SPEED = maxLinearVelMetersSecond; MAX_ANGULAR_SPEED = maxAngularVelRadiansSecond; @@ -45,7 +45,7 @@ public class SwerveDriveSubsystem extends SubsystemBase{ Arrays.stream(modules).map((m) -> m.getModuleLocation()).toArray(size -> new Translation2d[size]) ); - gyro = new Pigeon2(pigeonId); + gyro = new Pigeon2(pigeonId, canBusName); poseEstimator = new SwerveDrivePoseEstimator3d(driveKiniematics, new Rotation3d(Rotation2d.fromRotations(getCurrentYaw().magnitude())), getModulePositions(), Pose3d.kZero); chassisSpeeds = new ChassisSpeeds(); @@ -56,9 +56,9 @@ public class SwerveDriveSubsystem extends SubsystemBase{ super.periodic(); SwerveModuleState[] moduleStates = driveKiniematics.toSwerveModuleStates(chassisSpeeds, centerOfRotation); - for(int i=0; i