This code came from Team 6391 - Ursaline Bearbotics and Jason Daming. It is their Beta code for 2022 and incorporates:
- WPILib swerve kinematics and odometry
- "Beta" swerve simulation support from Chris Gerth (and others)
- A modified and expanded swervelib library from SDS
- The Phoenix library from CTRE
- Paths generated and followed by the PathPlanner application and library from Michael Jansen.
- Set your team number.
- Read through and configure
frc.robot.Constants
. Parts of the code that need to be configured for your specific robot setup are marked with comments starting withFIXME
.
Don't configure the
*_MODULE_STEER_OFFSET
constants yet. Those are configured after code is deployed.
- Read through and configure
frc.robot.subsystems.DrivetrainSubsystem
. Parts of the code that need to be configured for your specific robot setup are marked with comments starting withFIXME
. - At this point deploy the code. If it endlessly crashes at startup make sure your CAN IDs are properly set and make sure you are using the proper swerve module configurations for your hardware.
Now that we have code running on the robot, we can set up our module steering offsets. In order to do this we must have our encoder values displayed to the dashboard.
Before setting up module offsets ensure each offset is set to
-Math.toRadians(0.0)
and that code is deployed to the robot. This must be done each time offsets are determined.
- Turn the robot on its side, so it is easy to move each module by hand.
By default, module sensor information is displayed in the
Drivetrain
tab on ShuffleBoard.
- Rotate each module so the bevel gear on the sides of each wheel are pointing to the robot's left.
When aligning the wheels they must be as straight as possible. It is recommended to use a long straight edge such as a piece of 2x1 in order to make the wheels straight.
-
Record the angles of each module using the reading displayed on the dashboard.
-
Set the values of the
*_MODULE_STEER_OFFSET
constants inConstants
to-Math.toRadians(<the angle you recorded>)
-
Re-deploy and try to drive the robot forwards. All wheels should stay parallel to each other.
-
Make sure all the wheels are spinning in the correct direction. If not, add 180 degrees to the offset of each wheel that is spinning in the incorrect direction. (I.e.
-Math.toRadians(<angle> + 180.0))
)