We are doing an arm on our robot for the first time this year and were planning on controlling its position with the relative encoder on the CANSparkMax connected to a REV Neo. I’ve notice that many teams put an absolute encoder on the pivot of the arm. So we are wondering if we need to do this.
In my mind, these two should be the same (expect if a gear or chain slips). Are teams using absolute encoders in case of that?
Besides that, an encoder on the motor should have a much higher resolution since it is getting several hundred rotations for a single rotation on the actual pivot arm due to gear ratios. Wouldn’t this higher resolution be helpful?
The advantage of an absolute encoder, in this case, is you don’t need to zero out the starting location of your arm at the start of a match. With a relative encoder, at the start of the match you need to push your arm to a know location to set the zero point for your encoder or you have to count on your drive team putting the arm in the same specific location before each match.
Whether the higher resolution is helpful is dependent on your use case. Absolute encoders with counts of 4096 (and likely higher) are definitely out there. Do you need an angular resolution better than 0.088°?
You want an absolute encoder not just for saving your position without a hardstop, but also to eliminate backlash. Backlash can be really bad for control systems and you can be off by ± 5 degrees with it. Whether that error is acceptable for you depends on your mechanism. 1266, for example is using an absolute encoder to get rid of the backlash on our virtual 4 bar as we understand that on a 4 bar, a small degree change can lead to a huge effect on our shot accuracy.