tyrex-team / benchmarks-attitude-smartphones

Benchmark on Attitude Estimation with Smartphones (datasets & scripts)
https://tyrex.inria.fr/mobile/benchmarks-attitude
Other
38 stars 27 forks source link

Calibration setup and procedure used to calibrate accelerometer #5

Open FlorianHes5 opened 2 years ago

FlorianHes5 commented 2 years ago

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 .

ThibaudM commented 2 years ago

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.

FlorianHes5 commented 2 years ago

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.