Skip to content

VMU931 bias drift

Bartosz Meglicki edited this page Jun 3, 2018 · 4 revisions

Summary

My VMU931 unit drifts badly on Z axis (heading).

According to specs in-run bias stability should be below 5 °/hour. This seems more or less true for X and Y axes.

For the Z axis (heading) the device drifts more than 100 degrees per hour!.

Calibration doesn't help. It doesn't seem to work.

Looking at Z axis plot in time, the value drifts in linear manner. This is exactly what calibration should fix. It doesn't.

Experiment

  • VMU931 firmware version 1.01
  • device fixed to flat surface with 2 screws
  • surface put on the floor
  • results gathered with vmu931-estimate-bias for 60 seconds
  • device calibrated with vmu931-calibrate
  • results gathered again with vmu931-estimate-bias for 60 seconds
  • result csv files data plotted in R

Results

Absolute deviation in degrees after 60 seconds

condition/axis X Y Z
not calibrated -0.003906 0.020050 2.021255
calibrated 0.058228 0.120087 2.044922

Scaled for degrees per hour

condition/axis X Y Z
not calibrated -0.234375 1.203003 121.275330
calibrated 3.493652 7.205200 122.695312

z_drift

x_drift

y_drift

Methodology

R code used for the plots

bias=read.csv("bias.csv", header=TRUE, sep=";", dec=".")
#convert time from ms to s starting from 0
bias$t=(bias$t-bias$t[1])/1000

cal=read.csv("calibration_and_bias.csv", header=TRUE, sep=";", dec=".")
#convert time from ms to s starting from 0
cal$t=(cal$t-cal$t[1])/1000

plot(bias$t, bias$z, type="l",  xlab="time [s]", ylab="angle [deg]", col="red", ylim=c(0,4), main="Z drift in time")
lines(cal$t, cal$z, col="green")
legend("topleft", legend=c("before calibration", "after calibration"), lwd=c(1,1), col=c("red", "green"))

plot(bias$t, bias$x, type="l",  xlab="time [s]", ylab="angle [deg]", col="red", ylim=c(0,1.5), main="X drift in time")
lines(cal$t, cal$x, col="green")
legend("left", legend=c("before calibration", "after calibration"), lwd=c(1,1), col=c("red", "green"))

plot(bias$t, bias$y, type="l",  xlab="time [s]", ylab="angle [deg]", col="red", ylim=c(0,2), main="Y drift in time")
lines(cal$t, cal$y, col="green")
legend("left", legend=c("before calibration", "after calibration"), lwd=c(1,1), col=c("red", "green"))
Clone this wiki locally