Talon SRX not following other Talon SRX

talonsrx

#21

Root Cause

There are two problems.

  1. You are in Test Mode.
    This means that the WPI/NI software is going to call set() on all your motors controllers.
    This is a feature of WPI compliant motor controller classes, which includes the WPI_TalonSRX.
    If you don’t want to leverate WPI features, use TalonSRX instead.

Test Mode is documented here…
https://wpilib.screenstepslive.com/s/3120/m/8564/l/87776-using-test-mode

  1. You are setting your master output under Test Mode loop.
    This appears to override the set calls from DS Test mode, but should not be relied upon since this causes multiple things calling set() on your MCs. This will produce unpredictable results as two callers are changing the output.

Additionally set(0) is likely called on your followers because of [1].
This means they are in PercentOutput mode, not follower mode.

Preventative steps

It seems like a lot of time was wasted because of the following…

  1. Firmware was not updated, or at least, it was not understood if it was updated.
    4.1 is not a valid release.
    Perhaps you meant 4.11 (the kickoff release), but the community can’t help you if you are not accurate in your reporting.

  2. Start with the hardware bring up section.
    https://phoenix-documentation.readthedocs.io/en/latest/ch13_MC.html
    Creating an empty project and writing a bunch of lines until you get the result you want is not very productive if you are not familiar with the control system. That’s why our documentation is written the way it is, so you follow the necessary steps in order to prevent these kind of misunderstandings.

Relevant link here…
https://phoenix-documentation.readthedocs.io/en/latest/ch13_MC.html#follower

  1. Start with our examples.
    Since students skip 2 anyway, use our examples out-of-box. Get them working. Then integrate into your project.
    https://phoenix-documentation.readthedocs.io/en/latest/ch23_AddResource.html

Diagnosing future issues

I didn’t see any self-tests in this thread. If a CTRE device is misbehaving, check the DS for errors, and capture the self-test (Tuner) while the behavior is occurring.

This will tell you why its behaving the way it is.

In your circumstance, the follower Talons would show that they are in PercentOutput control mode. That’s because the DS Test Mode feature is setting their values directly. You can leverage this through the SmartDashboard (and similar) interface. But it sounds like that’s not what you want.

Responses

Not sure what this means. We don’t have an error like that. Talons do not require a sensor to spin the motors.

I have no reason to believe this. The 2 root-causes above explains the symptoms reported.

Although interestingly, because the DS Test Mode features overrides all LiveWIndow-able actuators, using the regular TalonSRX class for followers is probably advantageous. Or alternatively you should call follow() in your robot loop periodically in case Test Mode is entered.

Either is adequate if you plan on using Test Mode, or want to robustly protect against accidental transitions to Test Mode by an inexperienced DS operator.


#22

Thank you for the extensive debrief, I’ll take it into account the next time I encounter problems with the TalonSRXs and I’m sure it’ll help others. Just to clarify a few things:

The firmware was at the latest and that was indicated here at the beginning:

Looking back this issue was most likely not related and was temporarily fixed because I swapped over to teleop (not remembering that test mode gave control of robot devices to the LiveWindow and thinking it was basically just another teleop).

I’m not sure why, but this did not help. Using the TalonSRX class in test mode produced the same results as using WPI_TalonSRX.