How to find correct constants for swerve drive

Hello,
We are using Team 364’s Swerve Drive Falcon Base as a base for our swerve drive. We set the basic constants and were surprised that it worked after only a few hiccups. We need to calibrate it and get more accurate values but overall it was not bad. Though, three values I have no idea how to find are the sysID values driveKS, driveKA, and driveKV. I have no idea where to start after running the sysID software and the documentation on it is a confusing. I also do not know how I can find the auto constants for our own robot when that time comes. If anyone has any answers or resources it would be greatly appreciated!

What exactly is confusing about the SysID process?

This message by calcmogul is worth reading too:

1 Like

System ID is hard to do with swerve. There’s also configuration management issues with having data collection in a separate project from the real project. We made that separation originally because C++ provides higher quality data than Java because the sample rate is more deterministic.

If we can figure out workarounds for nondeterministic data collection in Java for 2024 (e.g., DMA), we could shunt data collection to a Java vendordep and massively simplify the SysId application. It would eliminate configuration headaches and make swerve easier to support.

1 Like

The software is not necessarily the easiest thing to navigate to no fault of the developer it just seems to be a complicated topic. After reading the documentation many times over I understand what it is doing better. I was mostly just confused on how to do it with swerve drive as it does not seem to have those in mind which seems to be the case. That was what was confusing about it. Thank you for linking that topic I did not see it when searching for related topics.

We use a custom command to calculate these feedforward values on the fly.

See here for the command: javabot-2023/FeedForwardCharacterization.java at main · FRC2539/javabot-2023 (github.com)

See here for the implementation: javabot-2023/SwerveDriveSubsystem.java at 35f7586243547b53ece27248992f927b1fdef49f · FRC2539/javabot-2023 (github.com)