# R-IoT compatibility with W3C devicemotion
specification
The aim of this document is to describe a convention to normalize data provided by the R-IoT motion sensor to match the W3C devicemotion API (opens new window).
# Goal
# Smartphone and R-IoT axes
# Units
Smartphone | R-IoT | |
---|---|---|
Accelerometer | m/s2 | g |
Gyroscope | °/s | °/ms |
# Mapping function
To follow the devicemotion
specification, the R-IoT's original acceleration and gyroscope data must be changed as follows:
const tmp_x = x;
// Acceleration : from g to m/s2 --> multiply by 9.81
x = 9.81 * y;
y = -9.81 * tmp_x;
z = 9.81 * z;
const tmp_alpha = alpha;
// Rotation : from °/ms to °/s --> multiply by 1000
alpha = 1000 * gamma;
beta = 1000 * beta;
gamma = -1000 * tmp_alpha;
# Smartphone's motion formats
Smartphone's precise specifications can be found here : https://www.w3.org/TR/orientation-event/#introduction (opens new window).
From the deviceMotionEvent , we can get the accelerationIncludingGravity and rotationRate. The axes are set such as, with the phone held on the vertical, screen side up, x and y axis are both in the same plane, the first going towards the right, and the latter going up, and the z axis perpendicular to the screen.
The accelerationIncludingGravity return 3 floats, one for each axis, and is expressed in m/s2. For example, if the phone is sitting flat on a table, screen side up, the acceleration would be [0, 0, 9.81].
As for the rotationRate, it returns 3 floats for each angular velocity, in °/sec. The variable alpha represents the rotation angle around the the z axis,
beta around the x axis,
and gamma around the y axis.
# R-IoT
See the R-IoT manual : https://bitalino.com/docs/MANUAL_RIOT_V1.2.pdf (opens new window).
By default, the acceleration and rotation data from the R-IoT ranges between -1 and 1, expressed in m/s2 and °/ms, respectively.
As for the axes, by default they are as follows :
However, we decided that we would change the axes so that the R-IoT indication on the sensor is legible. The axes thus need to be changed from this :
to this :
As for the angles, gamma is the angle around the z axis, beta around the x axis, and alpha around the y axis.