Difference between highres_imu, raw_imu, scaled_imu, scaled_imu2, and scaled_imu3

I am trying to use the IMU data for the imu-camera calibration from pixhawk. But confused with the types of messages in the from mavlink. I am using the pixhawk flight controller, and use mavlink to get the IMU data. I found the following message types:

  1. RAW_IMU: http://mavlink.org/messages/common#RAW_IMU
  2. HIGHRES_IMU: http://mavlink.org/messages/common#HIGHRES_IMU
  3. SCALED_IMU: http://mavlink.org/messages/common#SCALED_IMU
  4. SCALED_IMU2: http://mavlink.org/messages/common#SCALED_IMU2
  5. SCALED_IMU3: http://mavlink.org/messages/common#SCALED_IMU3

Could anyone provide the detail explanation to the type of IMU messages, and when to use them? Under what condition to use which messages. And from our experiments, its seems that the xacc, yacc, and zacc that we get from HIGHRES_IMU are not accelerations but are velocities. Do anyone have done research on these things. Thank you.

Dharma KC

Hi @Dharma_KC ,

In PX4, the IMU data is sent though MAVLink using the HIGHRES_IMU message.
The acceleration fields are not velocities as you can see in the attached screenshot of the MAVLink Inspector.

Hope it helps,


Thank you for your information, seems like they are accelerations. I tried to get the raw IMU data from the mavlink using RAW_IMU mavlink message, but unable to get it. Do you know the reason? But I was able to get the scaled IMU data.I do,t know why I am not able to get the raw imu messages.

Why do you want to have the raw imu message? HIGHRES_IMU contains the same but in float values instead of int16.

I wanted it for IMU-Camera calibration to input them to VIORB. But I think I can feed HIGHRES_IMU right?

Yes, HIGHRES_IMU should be fine for VIO.

Have you ever done VIO calibration, I have some questions.

I’m working partially on that. Please create a new topic with a new title and post your questions there. You can ping me and I’ll try to help you if I can.

Thank you Bresch. I will do that.