SCALED_IMU data conversion

I’m pulling the SCALED_IMU message, but the data doesn’t make sense to me. Per the MAVlink documentation the units for the accelerometers should be in mg, however when the unit is sitting on a level platform the readings in the zacc field only reads 219 when it should read close to 1000. Looking at the zacc field in the HIGHRES_IMU shows a correct gravity reading of 9.81 m/s^2.

I’m finding it hard to believe that I have a faulty IMU because the one IMU message reads correctly. Are the units documented incorrect for a Pixhawk 2? What is the process for going from SCALED_IMU to HIGHRES_IMU (apart from full strapdown IMU processing)?


Which PX4 firmware are you using and how are you.pulling the data? Mavros?

Sorry, I should hav realized that may be relevant! Versions below. I’m using the MAVlink C interface in my own custom application. I’m able to receive all the default messags properly and the other data fields in SCALED_IMU look reasonable (though I’m not sure what to expect from the magnetometer).

HW arch: PX4FMU_V2
HW type: V30
HW version: 0x0009000E
HW revision: 0x00000000
FW git-hash: 50bd148f53f1aeca6f1bd4a1caabcc18e4f2888b
FW version: Release 1.7.3 (17236991)
OS: NuttX
OS version: Release 7.22.0 (118882559)
OS git-hash: b18053574bf41712cef93e31bf178518f451a350
Build datetime: Jan  6 2018 11:33:38
Build uri: localhost
Toolchain: GNU GCC, 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
MFGUID: 343136303136510e002f003b
MCU: STM32F42x, rev. 3
UID: 2F003B:3136510E:34313630

I should also mention that I’m using QGroundControl to easily view the data. I have verified that the data seen by my application and QGroundControl match.

Any thoughts on this from the community? What are the chances I have a bad IMU?