Skip to content

Commit d060276

Browse files
committed
Misc Fixes
1 parent 49f76cb commit d060276

File tree

8 files changed

+47
-17
lines changed

8 files changed

+47
-17
lines changed

src/main/java/frc/robot/Robot.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
*/
3636
public class Robot extends LoggedRobot {
3737
private Command autonomousCommand;
38-
private RobotContainer robotContainer;
38+
private final RobotContainer robotContainer;
3939

4040
public Robot() {
4141
super(Constants.kLoopPeriodSecs);
@@ -73,6 +73,9 @@ public Robot() {
7373

7474
// Configure brownout voltage
7575
RobotController.setBrownoutVoltage(6.0);
76+
77+
// Create RobotConatiner
78+
robotContainer = new RobotContainer();
7679
}
7780

7881
@Override

src/main/java/frc/robot/RobotContainer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import org.littletonrobotics.junction.networktables.LoggedDashboardChooser;
1212

1313
public class RobotContainer {
14+
// Load RobotState class
15+
private final RobotState robotState = RobotState.getInstance();
16+
1417
// Subsystems
1518
private final DriveBase driveBase;
1619

src/main/java/frc/robot/RobotState.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ public class RobotState {
2525
private static RobotState instance;
2626

2727
public static RobotState getInstance() {
28-
if (instance == null) instance = new RobotState();
28+
if (instance == null) {
29+
instance = new RobotState();
30+
}
2931
return instance;
3032
}
3133

src/main/java/frc/robot/commands/DriveCommands.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public class DriveCommands {
3232

3333
// Characterization
3434
private static final double FF_START_DELAY = 2.0; // Secs
35-
private static final double FF_RAMP_RATE = 0.1; // Volts/Sec
35+
private static final double FF_RAMP_RATE = 0.85; // Volts/Sec
3636
private static final double WHEEL_RADIUS_MAX_VELOCITY = 0.25; // Rad/Sec
3737
private static final double WHEEL_RADIUS_RAMP_RATE = 0.05; // Rad/Sec^2
3838

@@ -184,8 +184,8 @@ public static Command feedforwardCharacterization(DriveBase drive) {
184184
double kV = (n * sumXY - sumX * sumY) / (n * sumX2 - sumX * sumX);
185185

186186
NumberFormat formatter = new DecimalFormat("#0.00000");
187-
SmartDashboard.getString("kS", formatter.format(kS));
188-
SmartDashboard.getString("kV", formatter.format(kV));
187+
SmartDashboard.putString("kS", formatter.format(kS));
188+
SmartDashboard.putString("kV", formatter.format(kV));
189189
}));
190190
}
191191

@@ -245,11 +245,11 @@ public static Command wheelRadiusCharacterization(DriveBase drive) {
245245

246246
NumberFormat formatter = new DecimalFormat("#0.000");
247247

248-
SmartDashboard.getString(
248+
SmartDashboard.putString(
249249
"Wheel Delta", formatter.format(wheelDelta) + " radians");
250-
SmartDashboard.getString(
250+
SmartDashboard.putString(
251251
"Gyro Delta", formatter.format(state.gyroDelta) + " radians");
252-
SmartDashboard.getString(
252+
SmartDashboard.putString(
253253
"Wheel Radius",
254254
formatter.format(wheelRadius)
255255
+ " meters, "

src/main/java/frc/robot/subsystems/drive/DriveConstants.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import edu.wpi.first.math.geometry.Rotation2d;
44
import edu.wpi.first.math.geometry.Translation2d;
55
import edu.wpi.first.math.util.Units;
6+
import frc.robot.Constants;
67
import frc.robot.util.swerve.SwerveSetpointGenerator.ModuleLimits;
78
import lombok.Builder;
89

910
public class DriveConstants {
10-
public static final double odometryFrequencyHz = 250;
11+
public static final double odometryFrequencyHz =
12+
Constants.getRobotMode() == Constants.RobotMode.SIM ? 50 : 250;
1113

1214
public static final double trackWidthX = Units.inchesToMeters(20.75);
1315
public static final double trackWidthY = Units.inchesToMeters(20.75);

src/main/java/frc/robot/subsystems/drive/Module.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ public class Module {
3434
turnkD.initDefault(50.0);
3535
}
3636
default -> {
37-
drivekS.initDefault(0.0); // TODO
38-
drivekV.initDefault(0.0); // TODO
39-
drivekP.initDefault(0.0); // TODO
40-
drivekD.initDefault(0.0); // TODO
41-
turnkP.initDefault(0.0); // TODO
42-
turnkD.initDefault(0.0); // TODO
37+
drivekS.initDefault(0.11400);
38+
drivekV.initDefault(0.84144);
39+
drivekP.initDefault(0.1);
40+
drivekD.initDefault(0.0);
41+
turnkP.initDefault(10.0);
42+
turnkD.initDefault(0.0);
4343
}
4444
}
4545
}

src/main/java/frc/robot/subsystems/drive/ModuleIOSim.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import edu.wpi.first.math.system.plant.LinearSystemId;
99
import edu.wpi.first.wpilibj.simulation.DCMotorSim;
1010
import frc.robot.Constants;
11+
import java.util.Queue;
1112

1213
public class ModuleIOSim implements ModuleIO {
1314
private static final DCMotor driveMotorModel = DCMotor.getNEO(1);
@@ -34,9 +35,18 @@ public class ModuleIOSim implements ModuleIO {
3435
private double driveFFVolts = 0.0;
3536
private double turnAppliedVolts = 0.0;
3637

38+
// Queue inputs from odometry thread
39+
private final Queue<Double> drivePositionQueue;
40+
private final Queue<Double> turnPositionQueue;
41+
3742
public ModuleIOSim() {
3843
// Enable wrapping for turn PID
3944
turnController.enableContinuousInput(-Math.PI, Math.PI);
45+
46+
drivePositionQueue =
47+
OdometryManager.getInstance().registerSignal(driveSim::getAngularPositionRad);
48+
turnPositionQueue =
49+
OdometryManager.getInstance().registerSignal(turnSim::getAngularPositionRad);
4050
}
4151

4252
@Override
@@ -75,8 +85,12 @@ public void updateInputs(ModuleIOInputs inputs) {
7585
inputs.turnAppliedVolts = turnAppliedVolts;
7686
inputs.turnCurrentAmps = Math.abs(turnSim.getCurrentDrawAmps());
7787

78-
inputs.odometryDrivePositionsRad = new double[] {inputs.drivePositionRad};
79-
inputs.odometryTurnPositions = new Rotation2d[] {inputs.turnPosition};
88+
inputs.odometryDrivePositionsRad =
89+
drivePositionQueue.stream().mapToDouble((Double value) -> value).toArray();
90+
drivePositionQueue.clear();
91+
inputs.odometryTurnPositions =
92+
turnPositionQueue.stream().map(Rotation2d::fromRadians).toArray(Rotation2d[]::new);
93+
turnPositionQueue.clear();
8094
}
8195

8296
@Override

src/main/java/frc/robot/subsystems/drive/OdometryManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package frc.robot.subsystems.drive;
22

33
import edu.wpi.first.wpilibj.Notifier;
4+
import edu.wpi.first.wpilibj.RobotController;
45
import java.util.ArrayList;
56
import java.util.List;
67
import java.util.Queue;
@@ -49,6 +50,11 @@ public Queue<Double> registerSignal(DoubleSupplier signal) {
4950
private void run() {
5051
odometryLock.lock();
5152
try {
53+
// Get sample timestamp
54+
double timestamp = RobotController.getFPGATime() / 1e6;
55+
timestampQueue.add(timestamp);
56+
57+
// Read signals and provide them to queues
5258
for (int i = 0; i < signalSuppliers.size(); i++) {
5359
signalQueues.get(i).add(signalSuppliers.get(i).getAsDouble());
5460
}

0 commit comments

Comments
 (0)