SysId Integration#

System Identification, or commonly referred to as SysId, is the process of identifying the characteristics of a given system.

This identification usually consists of:

  1. Mechanism testing

    • In FRC, two tests are performed: Quasistatic and Dynamic.

  2. Data collection

    • Position, Velocity, and MotorOutput samples are collected while the tests are running.

  3. Data analysis

    • Collected data is analyzed to calculate constants such as PID gains, slip current (maximum stator current), maximum robot velocity, etc.


This documentation assumes that the user is utilizing a command-based robot program.

Advantages of SignalLogger over DataLog#

When collecting data for analysis, it’s important to take into account several factors, such as:

  • Impact of CAN latency

  • Signals sent faster than the 20ms main robot loop

  • Language data collection issues (such as Java garbage collection causing pauses in the log)

When users utilize the Phoenix 6 signal logging API, these issues are eliminated.

This section guides the user through characterizing a motor, converting hoot logs to a WPILib WPILOG for data analysis, and integrating gains for control. This section can also be used as a characterizing other mechanisms such as a swerve azimuth and drive motors.

Characterization begins with a functioning robot program. Users should have basic code for the mechanism already put together, and all configs in the FeedbackConfigs group should be applied. Any changes to the gear ratios and sensor source in FeedbackConfigs may require the user to recharacterize their mechanism.

Get started: