-
Notifications
You must be signed in to change notification settings - Fork 5
VMU931 bias drift
Bartosz Meglicki edited this page Jun 3, 2018
·
4 revisions
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.
- 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
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 |
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"))