benchmarks-attitude-smartphones icon indicating copy to clipboard operation
benchmarks-attitude-smartphones copied to clipboard

Calibration setup and procedure used to calibrate accelerometer

Open FlorianHes5 opened this issue 3 years ago • 2 comments

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 

IMG_20211102_141150059 .

FlorianHes5 avatar Nov 02 '21 13:11 FlorianHes5

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.

ThibaudM avatar Nov 02 '21 14:11 ThibaudM

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.

FlorianHes5 avatar Nov 03 '21 06:11 FlorianHes5