Is there a noticeable negative effect when a gyro is not at the center of rotation?
I would say no. A gyro measures rotation, not linear position. If it rotates along with the frame in any position, then it will measure the frames rotation.
- However it should remain horizontal in the right plane of measurement.
For rotation (heading) data to get the angle of the robot, I’m not aware of a negative effect of off centering the gyro. We’ve done this the past two years. Heck, I haven’t seen any of our old robots put the gyro in the middle of the robot.
If you want to use acceleration data, then putting it in the middle of your robot would give you better data if you’re turning.
Gyros are not negatively affected by their location on the robot.
That does not affect my internal monologue though:
note: This is a simplification of what a gyro does but is good enough for memes.
“and when your robot rotates , every part of the robot rotates just as far” = “When your robot rotates 90 degrees, every part of the robot rotates 90 degrees”
One thing to note is that on most FRC IMUs and gyros, you can indeed see minor drift in the heading reading over time if the sensor is mounted off center during very fast turns. Just something to keep in mind.
The navX-MXP Best Practices documentation says this:
- If possible, mount the navX-MXP circuit board near the center of rotation
Since navX-MXP measures rotation, errors in the measured angles can occur if the navX-MXP circuit board is mounted at a point not near the robot center of rotation. For optimal results, the navX-MXP circuit board should be mounted at the robot’s center of rotation. If the navX-MXP circuit board cannot be mounted near the robot’s center of rotation, the offset from the center of rotation can be used to correct the yaw angle.
So, the right answer is… both concerns are valid. The real reason mounting the IMU in the middle of the robot would matter is if you were doing some sort of sensor fusion (Kalman, Madgwick, Complementary, etc.), only used inertial sensor outputs, and were integrating both the gyro and accel outputs together. Accelerometers have no way of differentiating between centripetal, Coriolis, or actual acceleration, so any heading estimates calculated using that data could potentially be spoiled by not mounting the IMU in the center of the robot. The error introduced by not mounting the sensor in the center of rotation is squared the distance from the center of rotation. IMUs with an absolute reference (magnetometer) or other sensing sources (LIDAR, Radar, encoders, etc) help compensate for this error.
Ether’s post is valid in that the gyroscope error induced from linear acceleration does affect gyro offset, but it’s important to remember that the linear acceleration won’t always be present in the signal (you won’t always be rotating at some crazy-fast rate). Also, the effect of linear acceleration on the ADIS16470 bias is 0.015 deg/sec/g (a solid order of magnitude improvement over the XRS150), so other error sources (axis-to-frame misalignment, vibration, and gyro non-linearity) will affect sensor performance more than not mounting your IMU in the middle of the robot.
I’d be more worried about mounting an IMU on a cantilevered connector sitting on top of another plastic fixture, zip-tied in place on a thin piece of polycarb more than placing the sensor in the middle of the robot.