pushsnowboarding/Push-Snowboarding

Subversion checkout URL

You can clone with
or
.

Motion Box

Introduction & Contents:

To help anyone looking into the data from the motion box/IMU (Inertial Measurement Unit) it's probably really cool to give a brief explanation on the sensors in there.

The motion box contains a I2C bus that connects the arduino to three different sensors:

All the values are captured digitally through the I2C bus from this sensors (except for pre-US OPEN data when the ADXL335 was used; in those cases the reading was made using arduino's ADC).

The orientation of this sensors on the board vary a little bit depending on how the motion box is mounted on the board; that sometimes changes depending on the rider's stance.

Axis orientations/disposition

Better than a thousand words: Note that sometimes the X & Y Axis may be rotated due to the aforementioned variations on the position the box is mounted on the board; otoh Z stays always the same.

Gyroscope Values

How to get absolute/real measurement from the gyroscope values? From the Gyro's datasheed, the sensors sensitivity is 14.375 LSBs (least significant bit) per °/sec and a full-scale range of ±2000°/sec. This means that every 14.375 units on the xml reading mean 1°/sec. So:

``````<gyro>-94,-96,83</gyro>
``````

gives [(-94/14.375), (-96/14.375), (83/14.375)] °/sec . Multiplying this for the time-span in between successive readings gives you the approximate total spin.

But hey, let's get a good example of this! Let's take for example, Peetu Piiroinen's ride on the US Open Slopestyle course. From the video, you can see that his fourth jump was a huge 360. Let's analyse that. To find that data inside the xml file, you can use the `AirTime.xml` report to see that his fourth jump started at:

``````  <air air_time="1.765" tstamp="1299861787.534" />
``````

Starting from that point in time on the raw xml you can see that the gyro's Z value goes high (+) which suggests a clockwise rotation (the same we see on the video). Taking the gyro readings from when he was in the air you'll get you:

``````<gyro>-679,-978,3551</gyro>
<gyro>-136,-363,2505</gyro>
<gyro>-217,-553,3105</gyro>
<gyro>116,-1177,2910</gyro>
<gyro>579,-1151,2623</gyro>
<gyro>672,-785,1686</gyro>
<gyro>473,-555,508</gyro>
<gyro>-84,-247,476</gyro><! do you find it weird that now the Z axis is so low? Check the video! See what happens in the mid-flight -->
<gyro>-724,-792,728</gyro>
<gyro>-1172,-1316,1139</gyro>
<gyro>-1207,-1692,1570</gyro>
<gyro>24,-1544,1502</gyro>
<gyro>874,-798,2120</gyro>
<gyro>1212,-1081,2234</gyro>
<gyro>1605,-1239,2268</gyro>
<gyro>450,-1041,2109</gyro>
<gyro>130,237,2178</gyro>
<gyro>-407,129,2657</gyro>
<gyro>-911,-510,3131</gyro>
<gyro>-1191,-1509,2831</gyro>
<gyro>-1576,-2952,2506</gyro>
<gyro>-1142,-3401,1986</gyro>
<gyro>-1,-1274,1864</gyro>
<acc>207,68,-427</acc>  <!-- Adding the acc reading here to denote the touchdown -->
``````

Theoretically if you take all those readings, divide by 14.375 and multiply by the (variable) timespan in between them, you have absolute rotation. I'll leave that for you but for the sceptic ones, check this:

``````((2900/14.375)°/sec)*1.765(sec) = 356°
``````

Beautiful isn't it?

Reference for fun:

Science, it works..

Something went wrong with that request. Please try again.