I’ve been having a strange issue with the SRX mag encoders, sometimes leading to rather catastrophic results.
Running them in absolute mode, I’ve seen an issue where the reading seems to unexpectedly jump. For example, we’re driving around the robot, and then one of the encoder readings suddenly jumps from 0.8 to 1.8 (measured in rotations). So it jumps up by exactly 360 degrees, and then the motor tries to unwind the extra full rotation. And when this happens, things rotate too far, wires get ripped out, and all sorts of Bad Things™ ensue.
I was never able to reproduce the issue in the pits, so perhaps it was an issue that arose with the robot getting beaten around on the field.
Does anyone have any ideas as to what could be causing this odd behavior?
Do you need the rollover feature? If not, just take the decimal part of the rotation count and discard the rollover (everything to the left of the decimal).
If you do, send Omar a passive aggressive email telling him to fix the rollover feature (or just write it yourself while discarding the rollover that the talon gives you)
Check for CAN bus errors in the driver station logs when you notice this happening. I may have noticed something similar, but it didn’t affect our design so we didn’t looked into it very hard.
Also is the positioning loop running in the Talon SRX or the RoboRIO?
It sounds like you have a cabling issue between the magencoder and Talon.
You can confirm this by grabbing the self-test before and after reproducing the problem and observing that the absolute position (pulse width) and relative position (quadrature) disagree. That’s one of the benefits of the CTRE magnetic encoder; you have two references that rely on different physical wires.
Most likely the ribbon cable needs to be replaced, or if you are using a breakout inspect the solder contacts/wiring.
Are you close or exceeding the peak rated RPM for CTREMagEnc_Absolute? If so then select CTREMagEnc_Relative and setposition() to what the absolute reading reports. See github examples/Talon SRX Software Reference manual for more info and peak RPM specs.
The rotation is quite slow, so I don’t think exceeding RPM is an issue.
At some point, I switched to relative mode and the problem stopped. So perhaps you are correct.
But we have two components robot using a mag encoder, and I’ve seen the same issue in both of them, so I figure it would be unlikely for them both to have the same cabling issue.