Gyro as replacement for absolute encoder on swerve?

This is theoretical and really more of a thought experiment until someone is crazy enough to program this, but the Pigeon IMU and commonly used MA3-A10-250-N Absolute Encoder are close in price, about a 3 dollar difference per piece, so would it be possible/practical to just attach a Pigeon IMU via Talon SRX to your module, and have less wire to route through a slip ring, not have to bother gearing 1:1 with an absolute encoder, and simply rotate the module with the gyroscope’s angle measurements?

It should work in theory. However, since the Pigeon doesn’t save data across power cycles, it’ll function like a quadrature/relative encoder and not an absolute one. Also you’ll need to compensate for the robot heading, since if the robot rotates 90 degrees and the module also rotates 90 degrees, the pigeon will think it has rotated 180 degrees.

Additionally, you shouldn’t have to run the MA3 through a slip ring since most designs will have the encoder side fixed while just the shaft spins 1:1 with the module.

At face value, it doesn’t seem that practical but it might be an interesting project :slight_smile:

It makes the head spin a little remembering you have to use another gyro to correct heading. Also, It’d be interesting to see how individual drift of the 5 gyros would work together over the course of the match. Too bad the magnetometer for absolute position of the modules isn’t too great in FRC. And I also wonder a little how much a challenge mounting the gyro on the center of rotation would be compared to the relative ease for encoders. I suppose you could put the pigeon offset with some printed gear, but then you are back to slipring issues.

When the robot gyro drifts 5° over the course of the match, you might not notice. When each wheel gyro drifts somewhere between +/- 5° in addition to the robot gyro drift, you end up with an uncertainty in each module’s position of +/- 10°. That makes programming repeatable swerve motion near impossible. There’s a reason swerve teams put in a lot of effort to decrease backlash between the module rotation and the rotation sensor: module angle uncertainty kills swerve drives.

Also I fail to see how you could have an infinitely rotating swerve without passing the wires through a slip ring. The gyro needs to be rotating with the swerve module. If you don’t have a slip ring, those wires will get twisted as it spins. That being said, if you already had the SRX rotating with the module and you were using a Pigeon, you would already have CAN being passed through the slip ring so you wouldn’t have to add any more wires to the slip ring.

You wouldn’t have to have the gyro over the center of rotation because all points on a rigid body rotate with the same angular velocity. So you could just bolt it on to a free side. You just probably don’t want to.

3 Likes

As a thought experiment, this is interesting. I can see how the math would work out to be able to get to the correct steering angles.

But in practice, the failure modes that you are introducing by doing this scare me. Drift is definitely an issue. Initialization angle is also an issue. Running the wires through a slip ring is an issue. Communication is an issue.

I like the out of the box thinking here, but I just don’t think it would be more reliable than the current absolute encoder implementations using a potentiometer.

1 Like