Pimu system check failure for IMU AZ


I started using Stretch RE1 a few days back. When running the systems check, I noticed that the Pimu IMU AZ check repeatedly fails. This happens even after I use stretch_robot_home.py. Is this normal? I am having problems further downstream, so I want to make sure this isn’t a confounding factor. Here is the systems check output:

For use with S T R E T C H (R) RESEARCH EDITION from Hello Robot Inc.

---- Checking Devices ----
[Pass] : hello-wacc
[Pass] : hello-motor-left-wheel
[Pass] : hello-motor-arm
[Pass] : hello-dynamixel-wrist
[Pass] : hello-motor-right-wheel
[Pass] : hello-motor-lift
[Pass] : hello-pimu
[Pass] : hello-respeaker
[Pass] : hello-lrf
[Pass] : hello-dynamixel-head

---- Checking Pimu ----
[Pass] Voltage = 13.0265069008
[Pass] Current = 3.91115401598
[Pass] Temperature = 32.1881823051
[Pass] Cliff-0 = -16.4053955078
[Pass] Cliff-1 = -20.1940917969
[Pass] Cliff-2 = -21.128692627
[Pass] Cliff-3 = 1.1796875
[Fail] IMU AZ = -9.26397514343 out of range -10.1 to -9.5
[Pass] IMU Pitch = -0.391304761171
[Pass] IMU Roll = 1.20613098145

---- Checking EndOfArm ----
[Pass] Ping of: stretch_gripper
[Pass] Calibrated: stretch_gripper

[Pass] Ping of: wrist_yaw
[Pass] Calibrated: wrist_yaw

[Pass] Ping of: wrist_pitch

[Pass] Ping of: wrist_roll

---- Checking Head ----
[Pass] Ping of: head_tilt

[Pass] Ping of: head_pan

---- Checking Wacc ----
[Pass] AX = 9.6309223175

---- Checking hello-motor-left-wheel ----
[Pass] Position = 2.54818081856

---- Checking hello-motor-right-wheel ----
[Pass] Position = -2.72253918648

---- Checking hello-motor-arm ----
[Pass] Position = 14.5785598755
[Pass] Position Calibrated = True

---- Checking hello-motor-lift ----
[Pass] Position = 62.8360443115
[Pass] Position Calibrated = True

---- Checking for Intel D435i ----
Bus 002 Device 002: ID 8086:0b3a Intel Corp.
[Pass] : Device found

Hey @srama2512, welcome to the forum, and thanks for reporting the issue!

Could you report the robot’s serial number that can be found in the robot trunk, and elaborate on the downstream issue that you think you are facing as a result of this failure?


Hi @chintujaguar, thanks for your prompt response!

The serial number is stretch-re1-1097. I could calibrate the robot and check_head_calibration.sh as suggested here. But when I tried to test the head calibration using roslaunch stretch_calibration simple_test_head_calibration.launch, I could see the robot’s 3D model in RViz, but not the point cloud. I don’t have the error logs on hand. Happy to share them with you later today.


Hi @srama2512. Given the reported value of AZ=-9.26, it appears that your IMU is reporting data correctly however it is slightly out of calibration relative to the ‘sanity check’ bounds of -10.1 to -9.5.

We calibrate the IMU at the factory and it is possible for you to recalibrate it yourself. It shouldn’t affect the robot function unless your program depends on an accurate IMU calibration.

If you’d like to recalibrate, to start can you let us know what the current calibration scalar is? Please run,:

stretch_params.py | grep gravity_vector_scale

This parameter scales the reported AZ value such that the sensor nominally reports back -9.8. You can simply adjust the parameter (in your user YAML) accordingly.

Alternatively, the tools REx_base_imu_collect.py and REx_base_imu_process.py can do a full IMU recalibration. This process is a bit more involved but we’re happy to walk you through it if needed.


1 Like

Hi @aedsinger. Thanks for your response. Based on your feedback, this warning sounds pretty harmless to me and doesn’t look like the source of errors for point cloud generation. I will close this issue for the time being. I will re-open it if I find it necessary to calibrate the IMU accurately. Thanks!

1 Like