Swerve controls code developed by FRC Team 88 TJ². Capable of controlling both standard and differential swerves.
SwerveLibrary is the officially supported software library for TJ²'s Diff Swerve 2021.
Intended for use with the wpilib Java framework.
To install, simply add the following line to the dependencies section of build.gradle
dependencies {
// WPILIB autofills this section with some code. Do not delete it.
compile "io.github.frc-88:swerve:0.2.0"
}
At this time, in order for the library to work, you must have both the pheonix and rev-robotics vendor dependencies installed. See the instructions from WPILIB on how to do this.
SwerveLibrary makes use of an extensive configuration scheme for describing the robot setup. Below is an example of a minimal config file.
[gyro]
template = "navx" # The type of gyro being used.
port-type = "I2C" # The type of port the navx is plugged into.
port = "kMXP" # The name of the port, as passed into the navx constructor.
[[modules]]
template = "team88.diff-swerve-2021.beta" # The template for the module.
location-inches = { x = 10.991, y = 12.491 } # The location of the module.
motors.lo.can-id = 0 # The CAN ID of the first motor.
motors.hi.can-id = 1 # The CAN ID of the second motor.
azimuth-sensor.can-id = 0 # The CAN ID of the CANCoder.
azimuth-sensor.offset = 0 # The degrees to subtract from the read module angle.
[[modules]]
template = "team88.diff-swerve-2021.beta" # The template for the module.
location-inches = { x = -10.991, y = 12.491 } # The location of the module.
motors.lo.can-id = 2 # The CAN ID of the first motor.
motors.hi.can-id = 3 # The CAN ID of the second motor.
azimuth-sensor.can-id = 1 # The CAN ID of the CANCoder.
azimuth-sensor.offset = 0 # The degrees to subtract from the read module angle.
[[modules]]
template = "team88.diff-swerve-2021.beta" # The template for the module.
location-inches = { x = -10.991, y = -12.491 } # The location of the module.
motors.lo.can-id = 12 # The CAN ID of the first motor.
motors.hi.can-id = 13 # The CAN ID of the second motor.
azimuth-sensor.can-id = 2 # The CAN ID of the CANCoder.
azimuth-sensor.offset = 0 # The degrees to subtract from the read module angle.
[[modules]]
template = "team88.diff-swerve-2021.beta" # The template for the module.
location-inches = { x = 10.991, y = -12.491 } # The location of the module.
motors.lo.can-id = 14 # The CAN ID of the first motor.
motors.hi.can-id = 15 # The CAN ID of the second motor.
azimuth-sensor.can-id = 3 # The CAN ID of the CANCoder.
azimuth-sensor.offset = 0 # The degrees to subtract from the read module angle.
Place this file in the src/main/deploy/
directory of your robot project, so it will upload
to the RoboRIO whenever code is deployed.
The API for this library is provided through the SwerveController class, which is constructed with the path to the config file in the deploy directory.
import frc.team88.swerve.SwerveController;
// ...
SwerveController swerveController = new SwerveController("swerve.toml");
See the wiki page for further usage documentation.
Javadocs for this project can be found here.
Example projects using this library can be found in examples/
For support, contact Paul Terrasi at [email protected]