So we have a puzzler. Our robot uses a sector gear driven by a toughbox 3 and a CIM to lift an arm to position us for a shot. It’s critical to our robot function. We use an an AMT CUI 103 encoder to know exactly where the arm is and to keep it in position.
It works great, except in semi finals. That is, through all of our building, all of our shadow building, all of our practice matches, all of our in pit testing, all of our qualification matches, it worked great; it never failed once.
But at both regionals we went to, the arm encoder failed during semi finals. (The most recent one was quite spectacular, our robot fell over and died in a nice emulation of Hamlet).
After the first failure in Duluth, we replaced the encoder and the wiring run. After the failure at 10K, we very carefully tried to assess what caused the failure. Nicely, it was in-operational when we got it back to the pit; the encoder held a constant -11 tick count, even as we moved the arm. We then very carefully touched the output shaft of the TB3; it was spinning. We touched the wiring plugged into the encoder (one of these:
http://www.digikey.com/product-detail/en/cui-inc/CUI-435-1FT/102-1504-ND/968159)
it was firmly seated. But after that touch, everything started working great.
And no attempt on our part to break it again worked; we could wiggle, loosen, poke, prod, but we got no failure. (Well, okay, if we disconnected the wire entirely it didn’t work, but…).
Note that we were very careful not to disturb any of the wires going into the rio; our plan was to test them next. (And this cable had strain relief, and it was firmly pressed into the rio and held by electrical tape). We can’t say for absolute sure, but to the best of our ability to control the environment, we did not change the rio end of the wire connection.
At this point, we’re baffled. I don’t think it’s a software bug. It is a pretty big body of code:
https://github.com/HP-Robotics/Automatons-2016
so we could be wrong. But I’m pretty sure we don’t have any
if (matchType == SF)
fail_spectacularly();
code in there.
We completely replaced the wiring and had the same failure, so I don’t think it was a wiring fault. (And the wires work perfectly now, and no amount of stressing or twisting or tweaking enable it to fail).
I had a theory that the wire run passing over a drive CIM could have, when the CIM was hot from being worked so much, caused a fault, but a smarter mentor than I feels strongly that’s not probable. My only other thought is that there is something faulty on these two particular ports. So our next likely move is to move the encoder down two pins.
Anyone else have any ideas or other possible failures we’ve overlooked?
Cheers,
Jeremy