99import edu .wpi .first .math .kinematics .SwerveModuleState ;
1010import edu .wpi .first .math .system .plant .DCMotor ;
1111import edu .wpi .first .wpilibj .RobotController ;
12- import frc .robot .extras .setpointGen .SPGCalcs .LocalVars ;
13- import org .littletonrobotics .junction .Logger ;
1412
1513/**
1614 * Swerve setpoint generatoR that has been passed around so many times its hard to keep track, just
@@ -24,7 +22,6 @@ public class SwerveSetpointGenerator {
2422 private static final ChassisSpeeds ZERO_SPEEDS = new ChassisSpeeds ();
2523
2624 private static final int NUM_MODULES = SPGCalcs .NUM_MODULES ;
27- // private final double brownoutVoltage;
2825
2926 private final SwerveDriveKinematics kinematics ;
3027 private final Translation2d [] moduleLocations ;
@@ -63,7 +60,6 @@ public SwerveSetpointGenerator(
6360 this .moiKgMetersSquared = moiKgMetersSquared ;
6461 this .wheelRadiusMeters = wheelDiameterMeters / 2 ;
6562 this .maxDriveVelocityMPS = driveMotor .freeSpeedRadPerSec * wheelRadiusMeters ;
66- // this.brownoutVoltage = RobotController.getBrownoutVoltage();
6763
6864 wheelFrictionForce = wheelCoF * ((massKg / 4 ) * 9.81 );
6965 // maxTorqueFriction = this.wheelFrictionForce * wheelRadiusMeters;
@@ -89,13 +85,6 @@ public SwerveSetpointGenerator(
8985 */
9086 public SwerveSetpoint generateSetpoint (
9187 final SwerveSetpoint prevSetpoint , ChassisSpeeds desiredRobotRelativeSpeeds , double dt ) {
92- // Add logging for inputs
93- // if (Double.isNaN(inputVoltage)) {
94- // inputVoltage = 12.0;
95- // } else {
96- // inputVoltage = Math.max(inputVoltage, brownoutVoltage);
97- // }
98-
9988 // https://github.com/wpilibsuite/allwpilib/issues/7332
10089 SwerveModuleState [] desiredModuleStates =
10190 kinematics .toSwerveModuleStates (desiredRobotRelativeSpeeds );
@@ -120,37 +109,30 @@ public SwerveSetpoint generateSetpoint(
120109 - prevSetpoint .chassisSpeeds ().omegaRadiansPerSecond ;
121110 vars .minS = 1.0 ;
122111
123- Logger .recordOutput ("beginningVars" , vars );
124-
125112 checkNeedToSteer (vars );
126-
127- Logger .recordOutput ("postCheckNeedToSteer" , vars );
128-
129113 makeVectors (vars );
130114
131- Logger .recordOutput ("pastMakeVectors" , vars );
132-
133- if (vars .allModulesShouldFlip
134- && !epsilonEquals (prevSetpoint .chassisSpeeds (), ZERO_SPEEDS )
135- && !epsilonEquals (desiredRobotRelativeSpeeds , ZERO_SPEEDS )) {
136- // It will (likely) be faster to stop the robot, rotate the modules in place to the
137- // complement
138- // of the desired angle, and accelerate again.
139- return generateSetpoint (prevSetpoint , ZERO_SPEEDS , dt );
140- }
115+ // if (vars.allModulesShouldFlip
116+ // && !epsilonEquals(prevSetpoint.chassisSpeeds(), ZERO_SPEEDS)
117+ // && !epsilonEquals(desiredRobotRelativeSpeeds, ZERO_SPEEDS)) {
118+ // // It will (likely) be faster to stop the robot, rotate the modules in place to the
119+ // complement
120+ // // of the desired angle, and accelerate again.
121+ // return generateSetpoint(prevSetpoint, ZERO_SPEEDS, dt);
122+ // }
141123
142124 solveSteering (vars );
143- Logger .recordOutput ("postSolveSteering" , vars );
144125
145126 solveDriving (vars );
146- Logger .recordOutput ("postSolveDriving" , vars );
147127
148128 ChassisSpeeds retSpeeds =
149129 new ChassisSpeeds (
150130 vars .prevSpeeds .vxMetersPerSecond + vars .minS * vars .dx ,
151131 vars .prevSpeeds .vyMetersPerSecond + vars .minS * vars .dy ,
152132 vars .prevSpeeds .omegaRadiansPerSecond + vars .minS * vars .dtheta );
153- retSpeeds = ChassisSpeeds .discretize (retSpeeds , dt );
133+ retSpeeds .discretize (
134+ retSpeeds ,
135+ dt );
154136
155137 double chassisAccelX = (retSpeeds .vxMetersPerSecond - vars .prevSpeeds .vxMetersPerSecond ) / dt ;
156138 double chassisAccelY = (retSpeeds .vyMetersPerSecond - vars .prevSpeeds .vyMetersPerSecond ) / dt ;
@@ -175,15 +157,12 @@ public SwerveSetpoint generateSetpoint(
175157 accelStates [m ].speedMetersPerSecond );
176158 }
177159
178- Logger .recordOutput ("finalVars" , vars );
179-
180- return new SwerveSetpoint ( // Logger.recordOutput("output",
181- retSpeeds , outputStates );
160+ // log("output",
161+ return new SwerveSetpoint (retSpeeds , outputStates );
182162 }
183163
184164 public SwerveSetpoint generateSimpleSetpoint (
185165 final SwerveSetpoint prevSetpoint , ChassisSpeeds desiredRobotRelativeSpeeds , double dt ) {
186-
187166 AdvancedSwerveModuleState [] outputStates = new AdvancedSwerveModuleState [NUM_MODULES ];
188167 SwerveModuleState [] desiredModuleStates =
189168 kinematics .toSwerveModuleStates (desiredRobotRelativeSpeeds );
@@ -192,6 +171,7 @@ public SwerveSetpoint generateSimpleSetpoint(
192171 desiredModuleStates [m ].optimize (prevSetpoint .moduleStates ()[m ].angle );
193172 outputStates [m ] = AdvancedSwerveModuleState .fromBase (desiredModuleStates [m ]);
194173 }
174+
195175 return new SwerveSetpoint (kinematics .toChassisSpeeds (desiredModuleStates ), outputStates );
196176 }
197177
@@ -309,38 +289,25 @@ private void solveDriving(LocalVars vars) {
309289 // battery is sagging down to 11v, which will affect the max torque output
310290 double currentDraw =
311291 driveMotor .getCurrent (Math .abs (lastVelRadPerSec ), RobotController .getInputVoltage ());
312- double reverseCurrentDraw =
313- Math .abs (
314- driveMotor .getCurrent (
315- Math .abs (lastVelRadPerSec ), -RobotController .getInputVoltage ()));
316292 currentDraw = Math .min (currentDraw , driveCurrentLimitAmps );
317-
318- reverseCurrentDraw = Math .min (reverseCurrentDraw , driveCurrentLimitAmps );
319- double forwardModuleTorque = driveMotor .getTorque (currentDraw );
320- double reverseModuleTorque = driveMotor .getTorque (reverseCurrentDraw );
321- // double moduleTorque = driveMotor.getTorque(currentDraw);
293+ double moduleTorque = driveMotor .getTorque (currentDraw );
322294
323295 double prevSpeed = vars .prevModuleStates [m ].speedMetersPerSecond ;
324296 vars .desiredModuleStates [m ].optimize (vars .prevModuleStates [m ].angle );
325297 double desiredSpeed = vars .desiredModuleStates [m ].speedMetersPerSecond ;
326298
327299 int forceSign ;
328300 Rotation2d forceAngle = vars .prevModuleStates [m ].angle ;
329- double moduleTorque ;
330-
331301 if (epsilonEquals (prevSpeed , 0.0 )
332302 || (prevSpeed > 0 && desiredSpeed >= prevSpeed )
333303 || (prevSpeed < 0 && desiredSpeed <= prevSpeed )) {
334- moduleTorque = forwardModuleTorque ;
335-
336304 // Torque loss will be fighting motor
337305 moduleTorque -= torqueLoss ;
338306 forceSign = 1 ; // Force will be applied in direction of module
339307 if (prevSpeed < 0 ) {
340308 forceAngle = forceAngle .plus (Rotation2d .k180deg );
341309 }
342310 } else {
343- moduleTorque = reverseModuleTorque ;
344311 // Torque loss will be helping the motor
345312 moduleTorque += torqueLoss ;
346313 forceSign = -1 ; // Force will be applied in opposite direction of module
0 commit comments