The test was run with a three-axis accelerometer

Hello! 3r3193.  
The question of the physical development of their own children is always relevant. The youngest son was three years old, and in addition to walks, I wanted to look for sports lessons for him. Since he is interested in various types of transport, the choice naturally fell on the runbike. And after watching the incendiary videos, how older children are stunt on the runbikes, I decided to investigate the issue in more detail. Armed with IMU from Amperki on 10 degrees of freedom, Raspberry Zero W with a power supply and 40 lines of Python code, I went to a running school. What came of it - look under the cut)
The test was run with a three-axis accelerometer 3r3193.  
IMU sensor 3r3185. production Amperki. It is impossible to use the accelerometer of cell phones for measuring accelerations due to the low measurement limit (+ -2G). The range of measurements on each of the axes of the Amperka module is + -8G, hopefully, that's enough. 3r3193.  
The IMU sensor was attached to the frame with the help of a Topeak holder (I had to temporarily remove it from my bicycle), a piece of plexiglass and several layers of electrical tape. The Raspberry Pi Zero W singleplatnik was used to poll the sensor. A small Python script interrogated the accelerometer with a period of about 10 ms: 3r3193.  
3r3193. [/b]
3r361 3r362. import time
from pytroykaimu import TroykaIMU
imu = TroykaIMU ()
imu.accelerometer.set_range ('8G')
file_name = ''
print ('Enter the file name (without extension)')
file_name = str (input ())
file_name = file_name + '.csv'
print ('Recording went, interruption Ctrl + C')
t0 = time.time ()
imu_array =[]
while True:
ax, ay, az = imu.accelerometer.read_gxyz ()
gx, gy, gz = imu.gyroscope.read_radians_per_second_xyz ()
imu_array + =[time.time(), ax, ay, az, gx, gy, gz]
time.sleep (???)
except KeyboardInterrupt:
t1 = time.time ()
lines = int (len (imu_array) /7)
print ("- Total lines -", ​​lines, '- write file', file_name)
imu_file = open (file_name, 'w')
imu_file.write ('time, ax, ay, az, gx, gy, gz' + 'n')
for i in range (lines):
imu_file.write (str (imu_array[7*i]) + ',' + str (imu 'array[7*i+1]) +', '+
str (imu_array[7*i+2]) +', '+ str (imu_array[7*i+3]")[7*i+2]
Str (imu_array[7*i+4]) + ',' + Str (imu_array[7*i+5]) + ',' +
Str (imu_array[7*i+6]) + 'N')
imu_file.close ()
print ('Recording is completed, the recording time is', t1 - t? 'sec')
break 3r3102. 3r3193.  
3r3r2202. 3r3r2202. 3r3193.  
Food Raspberry was filmed from
Power Bank from the same Amperki
, and I did a remote launch from a cellular phone with a terminal installed on it. I hid a single-board with a power supply unit in a cell phone case, and the IMU-sensor itself was attached to the seatpost of the studied runbikes as follows: 3r3193.  
3r3115. 3r3193.  
We carried out the measurements together with Yevgeny Ivanov from 3-333120. BegovelMsk schools in Moscow
. The racetrack for the test was kindly provided by two runbikes (3r3122. Puky LR Ride
And 3r3-3124. Early Rider Trail Runner 14 3r?135.). These two models are common in running schools, the first - mainly for stunts, the second - for running races. Tires on both models were inflated to about 3.5 atm. 3r3193.  
The test was that the rider Artem jumped from a small springboard on the test rails: 3r3193.  
3r3133. 3r3193.  
As a result, for each jump on the SD card, Raspberry deposited a file with polls of all three axes of the accelerometer every 10 ms. From each file, you can derive such a graph, accelerations in G are plotted along the vertical axis:
3r3143. 3r3193.  
The graphs for similar jumps turned out to be quite similar, but at the same time the acceleration curves for the two studied models of runbikes differ very much. To simplify the picture, the following graph shows only the vertical components of the accelerations (for our experiment, this is the Y axis divided by the cosine of the angle of deviation from the vertical). The graph also indicates the time of arrival on the springboard (determined by video races) and the time of touching the floor after the jump (this is the maximum signal in amplitude). 3r3193.  
3r3152. 3r3193.  
As you can see, the frame of the runbike (and with it the child) when jumping from the springboard is experiencing a short-term shock load up to 10G! Suddenly. I thought the load was much lower. It can be concluded that it is not worth falling from the curbs while sitting with the 5th point on the saddle of the running bike. Otherwise, the blow will be on the spine and internal organs of the child. It would be optimal to transfer this load to the legs. Therefore, for the Puky LR Ride model, is available. special running board on which the child, when performing tricks, becomes feet. 3r3193.  
What other conclusions can be drawn from these curves? Some of the following: 3r3193.  
1. The damper on the LR Ride reduces the shock load on the frame of the runbike by about 30% (most likely even more, since the accelerometer went into saturation on the rigid frame of the Trail Runner 14). Also, the nature of the load increase varies, it becomes smoother than that of the model without a damper. 3r3193.  
2. The damper helps to increase the distance of the jump, since the child can use it as a kind of spring in front of the springboard (note the orange curve before the springboard ride). 3r3193.  
3. The damper dampens residual oscillations of the frame of the runbike, you can replace that after the jump at LR Ride they are much smaller than those of Trail Runner 1? both in time and in amplitude. This increases the running speed and the comfort of the rider. 3r3193.  
These unexpectedly interesting results were obtained from one simple experience. Finally, I would like to once again express my gratitude to the running machine, the rider Artyom and the coach 3r3184. Yevgeny Ivanov 3r3185. . 3r3193.  
3r3190. 3r3193.  
Thank you for reading to the end and see you soon! 3r3r2202.
3r-33199. ! function (e) {function t (t, n) {if (! (n in e)) {for (var r, a = e.document, i = a.scripts, o = i.length; o-- ;) if (-1! == i[o].src.indexOf (t)) {r = i[o]; break} if (! r) {r = a.createElement ("script"), r.type = "text /jаvascript", r.async =! ? r.defer =! ? r.src = t, r.charset = "UTF-8"; var d = function () {var e = a.getElementsByTagName ("script")[0]; e.parentNode.insertBefore (r, e)}; "[object Opera]" == e.opera? a.addEventListener? a.addEventListener ("DOMContentLoaded", d,! 1): e.attachEvent ("onload", d ): d ()}}} t ("//"""_mediator") () ();
+ 0 -

Add comment