IMU's offset and Kalman filter



I have a Pixhawk 2 mounted on a rover with direct contact to a aluminum plate. Using mavros, I get IMU readings for all three. This data (maybe not all three, haven’t decided) is then fed into the robot_localization ROS package (Kalman filter). What stumps me is that the IMUs output noticeably large values when the robot is still. Below I have a sample of what they are outputting.


x: -0.2549729
y: -0.3334261
z: 9.85568325


x: 0.46091255
y: 0.3334261
z: 8.50236555


x: 0.08825985
y: -0.04903325
z: 10.03220295

The values are pretty consistent, but they might change if I reconnect to it a few hours later. I have a couple of questions:

  1. Is this expected? Should I just “ignore” it and take it into account when setting the sensor noise covariance in the Kalman filter?
  2. Before I begin robot_localization, should I offset the IMUs to what the readings should be (0,0,9,81)? I’ve noticed it improves the robot_localization’s output, but I am sure if this is a frown upon method.
  3. Is there something wrong with my setup? Anything I can do to improve the readings? We calibrated the pixhawk before mounting it on the rover since its infeasible to calibrate it with it already attached to the large rover.

I will appreciate any input on it!



The IMUs are measuring acceleration including gravity, so the values will be dependent of the attitude of the platform. Or do you mean that the norm is larger than expected?


Hello Carl,

Thanks for the reply!

I am not sure if I fully understand what you are asking, but I am expecting the values to be close to (x: 0, y: 0, z: 9.81).


I am expecting the values to be close to (x: 0, y: 0, z: 9.81).

So you are saying that you have the IMU perfectly horizontal and wonder why the x and y axis are not zero? In that case it looks normal, this is a plot from a stationary plane standing flat on the ground before takeoff


Ah okay. This is what I wanted to know. I was unsure if my readings were off, but it seems like what I am getting is perfectly good.

Thank you!!