Project Conventions¶
- WPILib Command-Based Java project.
- Coordinate frame: WPILib standard. +X forward, +Y left, +θ counterclockwise (viewed from above).
- Module order: front-left, front-right, back-left, back-right. Keep this order everywhere.
- Constants live in
Constants.java, grouped by subsystem. - Log values to NetworkTables (for AdvantageScope / Glass) from the start: desired vs. actual module states, chassis speeds, pose.
Coordinate frame¶
+X (forward)
^
|
FL ● | ● FR
|
+Y <----------+ (robot center)
(left) |
|
BL ● | ● BR
Positive rotation is counterclockwise when viewed from above.
Suggested structure¶
subsystems/
SwerveModule.java // one module: drive + steer + encoder
SwerveSubsystem.java // 4 modules, gyro, kinematics, odometry
commands/
TeleopSwerve.java
lib/ // our hand-rolled math, for learning
MyKinematics.java
MyModuleOptimizer.java
test/ // JUnit tests comparing ours vs WPILib
Units¶
Use SI units internally: meters, radians, m/s, rad/s, seconds. Name variables with units when ambiguous (angleRadians, velocityMetersPerSecond).