YAMS (Yet Another Mechanism Suite) is a WPILib vendordep library for FRC robots. It provides a unified motor controller abstraction over REV, CTRE, and Thrifty hardware, pre-built mechanism classes for common robot subsystems, and advanced control algorithms, all with simulation support and automatic NetworkTables telemetry. Both Java and C++ are supported with parallel APIs.
This documentation tracks YAMS for WPILib 2027 (2027_alpha7), where robot code runs on the SystemCore. Java command bindings ship for both WPILib Commands v2 (yams.commands2) and Commands v3 (yams.commands3); C++ supports Commands v2. See Getting Started for installation.
- Motor controller abstraction: a single
SmartMotorControllerinterface over SPARK MAX, SPARK FLEX, TalonFX, TalonFXS, and Thrifty Nova - Mechanism classes:
Arm,Elevator,Pivot,FlyWheel,DoubleJointedArm,DifferentialMechanism, andSwerveDrive(DoubleJointedArmandDifferentialMechanismare Java only) - Advanced control: LQR, exponential motion profiles, trapezoidal profiles, and a derivative-time filter
- Extended units:
YUnitsconstants andEasyCRTmulti-encoder absolute position solver - Simulation: built-in sim support for all mechanism classes via WPILib's simulation framework, with one shared
BatterySimacross every motor controller - Commands v2 and v3: the same mechanisms with
CommandandTriggerfactories for either WPILib command framework (Java)
| Device | Vendor | Interface |
|---|---|---|
| SPARK MAX | REV Robotics | CAN |
| SPARK FLEX | REV Robotics | CAN |
| TalonFX | CTR Electronics | CAN |
| TalonFXS | CTR Electronics | CAN |
| Nova | Thrifty Bot | CAN |