Is CMDeviceMotion vector units of 'G's localised or maintained constant (9.81)?

CMDeviceMotion returns linear acceleration and gravity vector in units of "G"s.


The docs for CMDeviceMotion show that the system reports both the gravity vector and the user acceleration— so the sensor fusion algorithm does the work of separating the two out, which is nice. The problem is that, for some reason I can’t quite fathom, they’ve decided to normalize the vectors such that they’re reported in “G”s.

From the docs: "A G is a unit of gravitation force equal to that exerted by the earth’s gravitational field (9.81 m s−2).”


Even ignoring the fact that G is the gravitational constant, so they probably mean little g which is the acceleration due to gravity (m/s^2) not a force (kg*m/s^2), there is also the problem that g = 9.81 almost exactly nowhere in the world except maybe parts of Frankfurt.


https://en.wikipedia.org/wiki/Gravity_of_Earth#Comparative_gravities_in_various_cities_around_the_world


Is the value for G localized at different places or is maintained constant as ,g = 9.81 ?

There's a third alternative: Automatic calibration and filtering of the gravity vector. Because filtering out a constant force vector should be a fairly standard signals processing exercise.


On the other hand, wouldn't the most direct answer to your question be to run code on a device and compare the results with what you expect for your local gravity?

Hi,

My application requires linear acceleration experienced by sensor frame in m/s^2. CMotion API filters out gravity vector and linear acceleration from accelerometer readings. The issue is that linear acceleration is provided in G's.


We did run tests and found gravity magnitude is equal to 1.0, which clearly shows that API provides gravity vector in sensor frame, but how can we get linear acceleration from API in which values are provided in G's? Is that G localized or is it 9.81m/s^2?

Is CMDeviceMotion vector units of 'G's localised or maintained constant (9.81)?
 
 
Q