Starling 2 Max (D0012) — Altitude spike / shoot-up on takeoff, possible Z-axis accelerometer bias from thermal drift
-
Hi,
We're experiencing an issue on our Starling 2 Max (D0012) where the drone occasionally shoots upward aggressively right after takeoff. It seems like the flight controller may be overcompensating due to an incorrect gravity reading from the IMU.
Platform details:Starling 2 Max, Device ID: D0012
VIO: voxl-open-vins-server (OpenVINS)
Flight controller: PX4 via voxl-px4What we observed:
We logged voxl-inspect-imu data at standstill over several minutes with the fan removed to observe thermal behavior. The Z-axis accelerometer drifts from -9.81 m/s² at 34°C to approximately -9.90 m/s² at 54°C. That's roughly 0.005 m/s² per °C of temperature increase.
Temp 34.7°C → accl_z: -9.81
Temp 42.1°C → accl_z: -9.88
Temp 48.8°C → accl_z: -9.90
Temp 54.0°C → accl_z: -9.89Sometimes it even goes to 10 m/s2
X and Y accelerometer values remain stable across temperature (±0.02 m/s²). Gyro is also stable.
Our theory:
If the IMU reports gravity as -9.90 instead of -9.81, PX4's EKF2 thinks there's more downward acceleration than there actually is. On takeoff, it compensates by applying extra thrust, causing the upward spike. The issue seems to occur more frequently when the drone has been sitting powered on for several minutes before takeoff (higher IMU temperature).
What we've tried:IMU calibration at multiple temperatures and positions
Installed a heat sink to control cpu temperature
Thermal soak before VIO initialization
Cooling fan on the VOXL 2 to reduce operating temperature
ZUPT is enabled at startup (zupt_only_at_beginning: true)Questions:
Does PX4 on the VOXL platform use the IMU's reported gravity magnitude to scale thrust output? If so, would a 0.09 m/s² bias directly cause a thrust overshoot on takeoff?
Is there a recommended way to apply temperature-compensated IMU calibration on the Starling 2 Max? Does voxl-calibrate-imu support multi-point temperature compensation?
Should we be adjusting any EKF2 parameters to be more tolerant of Z-axis accelerometer bias drift?
Has anyone else experienced this shoot-up behavior on the Starling 2 platform?
Any calibration tips?
Any guidance would be appreciated. Happy to share full logs if needed.
Thanks