Problems with System Identification

Hello all, I have been attempting to set up our robot to be able to do trajectory pathing and ran into an issue while trying to characterize the system to get the constants for the PID loops. I set up the identification tool according to the docs but run into an issue where when I deploy the project I get these Error codes for our Talons.
ERROR  -200  CTR: No new response to update signal  Talon FX 6 ConfigFactoryDefault
and then repeating
ERROR  -3  CTR: CAN frame not received/too-stale.  Talon FX 6 GetSelectedSensorPosition

I’ve tried to look through the CTRE and WPI docs but have had no luck and as a still mostly beginner programmer I have little idea what to try to fix the issue. The only thing I can think of with my limited knowledge is how the Talons are set up/initialized but again have no idea. Any help would be appriciated, here is the GitHub.

1 Like

I would try power-cycling the robot. We got issues when deploying SysId because CAN does weird things when switching from Java code to C++

Cycled power and even replaced the battery and still the same issue.

do you get similar issues when running your own code on the same motor IDs

The issue only appears when deploying the SysID, otherwise the robot drives and shifts fine using same IDs and setup

Make sure you’re using the most recent version of SysId from the WPILib github.

This was a problem I saw using a Mac with Sysid, using the latest version from github releases solved my problem.

I installed the most recent build of SysID from here I am no longer getting the issue with the Talons and now am getting this error
ERROR  -111  Error: Loop time of 0.005000s overrun  PrintLoopOverrunMessage 

here is the console output if useful

That typically happens a few times at robot startup as all of the vendor libs sort themselves out (the CTRE lib in particular is highly multithreaded). If there are no other symptoms then it’s nothing to worry about.

Alright, thats good to know so thanks for that!
However the original error returned after a few redeploys of the code from VS because SysID still wasn’t running the characterization.

more console if at all useful.

Try factory resetting the motor controllers through the phoenix tuner, and rebooting.

factory defaulted the motors and the cycled power but no luck, however the same thing happened where the Talon errors are no longer appearing but the characterization still isn’t running.

If the errors are gone but nothing is happening, the next step would be to open up Glass or Shuffleboard and check what the values on NetworkTables look like during the test run.

Restarted Driver station to open shuffleboard and was able to run the test! Really appreciate all the help, thank you!

1 Like

No problem. We really need to add a page to the docs that explains that the vendor dependencies are brittle and gives advice for handling these sorts of errors, which are common even for experienced users.

One issue with Sys id that were having is changing units. We’re using falcons and the built in encoders for our shooter. Sys Id converts the encoder units to rotations per second and uses that to calculate the PID variables. Currently we’re putting all our setpoints and measurement functions in RPS too but would like to use RPM instead. We tried just changing the setpoint and measurement too RPM but that didn’t work. Also tried dividing our P by 60 to account for the larger error value and that didn’t work either. Any ideas???

Do the dimensional analysis carefully and calculate some test values with the constants to see if they’re in the right ballpark. Consult the CTRE documentation carefully to be sure your constants are in the units they expect.