| description | Brought to you by Yet Another Generic Swerve Library (YAGSL) |
|---|
{% hint style="warning" %} If your swerve drive uses only Falcon500/Kraken/TalonFXS, Pigeon2.0, and CANCoder from CTRE please also consider the Tuner X Swerve Drive Generator! {% endhint %}
YAGSL is a Swerve Library developed by current and former BroncBotz mentors for all FRC teams. YAGSL
is a JSON configuration parser that builds a YAMS SwerveDrive for
your robot — describe your hardware once, generate the config at
config.yagsl.com, and drive. See
What is YAGSL? for how the pieces fit together.
{% embed url="https://datawrapper.dwcdn.net/ZVxvE/13/" %}
- Tutorial — never used YAGSL before? Start here. A single linear walkthrough from a bare WPILib project to a driving swerve robot.
- How-to Guides — already have a robot running? Task-focused recipes for tuning PIDF, determining inversion, diagnosing drift, and other work you'll come back to.
- Reference — precise JSON schema field tables, supported hardware type strings, and where to find the YAMS API docs.
- Explanation — swerve drive theory and the reasoning behind how YAGSL and YAMS behave.
{% hint style="info" %}
Upgrading an existing robot from before 2026.8.05? Your swerve/ config directory uses the old
schema — see Schema Changes before you do anything else.
{% endhint %}
{% embed url="https://www.youtube.com/watch?v=4Tcyn_oj_G0&list=PLdhNPDifsCMLLe5pZoyHGXrMMVxNpJOxP" %}
{% content-ref url="tutorial/README.md" %} Your First Swerve Robot {% endcontent-ref %}
{% content-ref url="how-to/tune-pidf-gains.md" %} Tune PIDF gains {% endcontent-ref %}
{% content-ref url="how-to/the-8-steps.md" %} The 8 steps {% endcontent-ref %}
{% content-ref url="reference/schema-changes.md" %} Schema Changes {% endcontent-ref %}
https://yet-another-software-suite.github.io/YAGSL/yagsl/yagsl.json
Your program does not revolve around your swerve drive. Your constants file doesn't have to take 10
minutes to find the right option. Different robots should be able to work with the same code — swap
the swerve/ config directory and the same subsystem code drives a different robot.
