IMU calibration after adding a power bank on Stretch SE3 base

Hello,

I mounted a power bank on the base of my Stretch SE3 and noticed that the IMU readings are significantly disturbed, likely due to magnetic interference. For example, when I query the IMU with:

import stretch_body.robot
r = stretch_body.robot.Robot()
r.startup()
print(r.pimu.status['imu'])

the values for mx, my, mz appear clearly distorted compared to before.

Is there an official calibration procedure or manual for recalibrating the IMU on Stretch SE3?

Hey @seongwoncho, good question. I’ll check with the hardware team and get back to you. For Stretch RE1 and Stretch 2, we had two CLIs to calibrate the softiron matrix (called REx_base_calibrate_imu_collect.py and REx_base_calibrate_imu_process.py), but I’m not sure if they work with Stretch 3.

Hi @seongwoncho, I just confirmed. Unfortunately, the new IMU’s magnetometer can’t be recalibrated since it doesn’t allow the softiron matrix to be set programmatically.

Got it, thanks for confirming. I’ll try shielding or increasing the distance to reduce interference.

1 Like

Surprisingly it wasn’t the IMU at all — I realized that my code wasn’t even using the IMU sensor values, and the same rotation errors appeared when I placed a different heavy object (~2 kg) on the base.

So the issue clearly comes from the added weight rather than magnetic interference. I already tried REx_base_calibrate_wheel_separation.py, but it didn’t make much difference.

Are there other calibration steps or adjustments you’d recommend in this situation?

What kinds of rotation errors are you getting? Like your commands aren’t being executed or the base.status['x/y/theta'] odometry reported isn’t accurate?