benchmarks-attitude-smartphones
benchmarks-attitude-smartphones copied to clipboard
Calibration setup and procedure used to calibrate accelerometer
Hello,
I have been using the accelerometer calibration algorithm findAccelerometerCalibrationByKumar
from this project to try and calibrate the accelerometer in the IMU I'm using. I'm doing the minimum required 9 positions with the use of a dodecahedron. See the attached image. The IMU will reside in the shape and by placing the dodecahedron on different sides and keeping it as motionless as possible, one of the required positions is acquired. Rince and repeat at least 9 times.
The problem I am encountering is that the results of the calibration are always bad. I have analysed the calibration files used in this project and copied the pattern I could see in the 9x3
calibration matrix. To no results unfortunately. I have verified that my data is correct and I have verified that the algorithm is working by feeding it calibration data from this project. Obviously I am doing something wrong, but I am having a hard time figuring out what I am doing wrong.
My question is what kind of calibration setup was used for the smartphones in the project to be able to obtain the calibration results? Frosio's paper mentions that random positions can be used, but from my experience as well as from the research I'v done on others using Frosio's algorithm, I have gathered that not all positions result in a solution. Did the calibration of the accelerometer in the smartphones have some kind of procedure utilizing the calibration setup resulting in consistent solutions across all the smartphone's IMUs during every calibration?
An example of my data. The 10x3
matrix I fed to the findAccelerometerCalibrationByKumar
function. All of the data is in m/s^2.
-0.2451259 -6.9371696 -6.6317955
-0.2857638 6.9482451 7.086829
-7.0783234 0.1476433 6.8704422
-0.026195 0.1517821 -9.4815092
-0.1702154 0.2877862 9.6325266
-0.325696 -6.5539241 7.1842451
-0.2655272 6.576859 -6.7413335
-0.4239417 9.9058435 -0.2867784
-0.349081 -9.0924694 0.2780034
-6.7616994 6.656745 -0.0232414
The results. As you can see the bias is far too large and the scale matrix is far from 1.
B =
-4.8261817 8.0330201 11.977169
M =
0.2487351 0.0207804 0.0242135
0.0207804 0.056975 -0.005968
0.0242135 -0.005968 0.046166
.
Hello,
I do not know if it will solve your problem but it seems you did not record a static position with a positive x value.
Thank you for your answer. I indeed see that I didn't record a position with a positive x value. I shall try again with a position that has a positive x value and report my results.