measuring movements of golfers with an accelerometer
DESCRIPTION
The purpose of this thesis is to analyze a golfer’s movement and provide the feedback related to the golfer’s skill with the simple and novel ways. A golfer can easily measure golf swings and get feedback based on his performance using an Android smart phone without expensive or complicated devices. In this thesis, we designed and implemented an Android application using an accelerometer sensor to analyze swing data for identifying critical points and to give various kinds of feedback based on the data. The feedback helps golfers to understand their swing patterns, timing and speed so it makes them improve their skills.TRANSCRIPT
Measuring movement of golfers with an accelerometer
18th October, 2012 Changsu Jung
Contents
Introduction Background Related work Analysis of golf swings Design Implementation Evaluation and result Conclusion and Future work
2
Introduction Many studies have been carried out for measuring golfers’ movement – But required complicated and expensive devices – Not convenient and just for elite players
The goals of this thesis – To provide simple and convenient way of
measurement system – Design and implementation of Android application
• Using an accelerometer • Extracting core information from acceleration data • Identifying critical points of the swing movement
– Implementation of feedback • different kinds of feedback related to the golfer’s performance
3
Background Accelerometer – Measures acceleration generated by the movement of an object and the
change of velocity – Commonly used for measuring physical activities
One of the main interests of golfers is how to increase distance – Obtain maximum club-head speed at impact timing – Force = Mass x Acceleration – An accelerometer was chosen to measure the movement of a golfer
The coordinate system of Android – Sensor coordinate system, screen coordinate system – Remapping between the two coordinate system
4 Y = 9.81 ㎨ Back
Y-
X- X+
Y+
Z-
Sensor Y
Y-
X+ X-
Y+
Z+
Sensor X
Sensor Y Sensor X
X = 9.81 ㎨
Y-
X+ X-
Y+
Z+
Sensor Y
Sensor X
Related Work Motion sensor at the grip [1] – three-dimensional accelerometer
and a gyroscope – show the acceleration graph
5
• Two accelerometers in the shaft and the club head [2] – identified and calculated
swing durations
club head
grip
Acceleration graphs
6
-20
-15
-10
-5
0
5
10
15
200
5152
1085
116
382
2194
027
582
3351
139
341
4497
150
572
5640
262
063
6752
173
142
7884
184
222
8960
595
150
1005
8210
6302
1118
2511
7454
1230
7112
8748
1344
3414
0121
1458
1115
1342
1568
9116
2420
1681
2217
3825
1794
32
Acc
eler
atio
n (㎨
)
X-axis
Y-axis
Z-axis
-20-15-10-505
101520
051
5210
851
1638
221
940
2758
233
511
3934
144
971
5057
256
402
6206
367
521
7314
278
841
8422
289
605
9515
010
0582
1063
0211
1825
1174
5412
3071
1287
4813
4434
1401
2114
5811
1513
4215
6891
1624
2016
8122
1738
2517
9432
Acc
eler
atio
n (㎨
)
X-axis
Y-axis - 9.8
Z-axis
-20
-15
-10
-5
0
5
10
15
20
030
7561
7693
5512
475
1562
818
705
2182
524
954
2828
231
653
3494
638
055
4114
544
276
4729
950
504
5364
556
865
6005
563
198
6636
569
426
7265
675
774
7901
682
126
8527
588
505
9177
595
195
9866
610
1982
1051
1310
8543
1118
5311
5065
1182
9412
1626
1248
8412
8276
Acc
eler
atio
n (㎨
)
X-axis
Y-axis - 9.8
The original acceleration graph of golf swings
Y – gravity(9.8)
The acceleration data of the x and y – gravity(9.8)
Analysis
The definition of critical points
7
-13
-8
-3
2
7
12
19 71 143
226
282
361
431
511
591
672
763
843
914
1015
1093
1172
1243
1315
1382
1452
1523
1592
1662
1733
1803
1862
1941
2024
2082
2161
2237
2333
2413
2503
2583
2653
2712
2782
2853
2923
Acc
eler
atio
n(㎨
)
X
Y
Backswing Point
Downswing Point
Minimum peak point of the x-axis
Maximum peak point of the x-axis
Minimum peak point of the y-axis
Maximum peak point of the y-axis
End point
Phase1 Phase2 Phase3
Phase1: backswing, Phase2: downswing, Phase3: follow-through http://blog.snowlove.co.kr/30056382913
Analysis
The movement during the backswing
8
X+
Y+
Z+
Attached to the front side (chest)
Attached to the backside (waist)
Y+
X-
Z+
The coordinate systems according to the placement
Analysis
Default placement
of a smart phone
Analysis of backswing movement Backswing: Phase1 – A golfer moves the golf club backwards, the acceleration values
are changing according to the Android coordinate system – Non-zero area: moving until the top swing – Zero area: top swing
9
-20
-15
-10
-5
0
5
10
15
20
6443
764
496
6456
764
637
6472
664
807
6496
565
035
6513
665
215
6528
465
355
6542
665
516
6559
765
666
6574
665
816
6594
666
005
6607
466
144
6622
566
285
6635
066
427
6649
666
566
6663
566
707
6679
666
866
6694
667
026
6711
7
Acc
eler
atio
n (㎨
)
second(ms)
Rounddown(X,0)
zero area non-zero area
Timestamp X Round-down(X) 65586 1.762734 1 65597 1.762734 1 65606 1.916016 1 65616 1.762734 1 65637 1.801055 1 65646 1.801055 1 65657 1.839375 1 65666 1.532813 1 65676 1.532813 1 65692 1.111289 1 65696 0.651445 0 65717 -0.07664 0 65737 -0.53648 0 65746 -0.80473 0 65766 -0.72809 0 65780 -0.88137 0 65786 -0.88137 0 65796 -0.84305 0 65807 -0.84305 0 65816 -1.49449 -1
Analysis
Analysis of other swing motions
Downswing: Phase 2 – A golfer turns his trunk from the right to the left – The acceleration values increase in the negative direction – From the downswing to the minimum peak point(impact)
Follow-through: Phase 3 – From the minimum peak point to the end point – decreasing to the negative direction and a golfer moves to
the positive direction
10
Analysis
Analysis of the end point Finish: end point – A golfer’s movement is stopped and the acceleration values can be
almost zero. – Checked the red-colored areas of the all swing data. – Common patterns exist: zero values more than 5 times consecutively
11
No. Timestamp X Y Times
tamp X Y Timestamp X Y
1 3638 0 0 18291 0 0 34299 0 0 2 3659 0 0 18411 0 0 34319 0 0 3 3669 0 0 18420 0 0 34329 0 0 4 3679 0 0 18431 0 0 34349 0 0 5 3689 0 0 18440 0 0 34359 0 0 6 3699 0 0 18451 0 0 34368 0 0
-20
-15
-10
-5
0
5
10
15
20
042
3283
1112
541
1682
021
005
2562
029
900
3416
838
460
4298
047
360
5153
056
026
6014
064
484
6897
173
210
7740
081
741
8617
990
430
9474
098
931
1032
6010
7440
1118
7911
5979
1202
8012
4716
1288
3913
3120
Acc
eler
atio
n (㎨
)
second(ms)
Round down(X) Round down(Y-9.81)
Analysis
Software architecture
12 Database
Design
Displaying acceleration value Each timeslot has a representative acceleration value – Due to the limited screen size – The maximum value is chosen as the representative
• because it means the maximum force and the fastest movement
13
Xi = Max(|Maxi|, |Mini|)
abs(Maxi) > abs(Mini) abs(Maxi) < abs(Mini)
Design
Beep sound feedback
Type Sound Icons
Normal point Normal sound
Maximum peak point
High pitch
Minimum peak point
Low pitch
Two peak point in a timeslot
Combined pitch
14
Design
Data collection
15
start collecting acceleration data for 20 seconds
feedback screen
Sampling option: SENSOR_DELAY_FASTEST – collect acceleration data almost every 10 msec
Collection time – 10, 20, 30, 40, 50 seconds – A golfer can choose in the settings menu
The number of swings – 1, 5, 10 times
For example – If the collection time is 20 seconds and 5 times
5 times
display
10 seconds later
Implementation
The sequence of detecting points
16
-20
-15
-10
-5
0
5
10
15
2064
437
6449
664
567
6463
764
726
6480
764
965
6503
565
136
6521
565
284
6535
565
426
6551
665
597
6566
665
746
6581
665
946
6600
566
074
6614
466
225
6628
566
350
6642
766
496
6656
666
635
6670
766
796
6686
666
946
6702
667
117
Acc
eler
atio
n (㎨
)
second(ms)
X Y
2
3 4 1 6
1. The minimum peak point of the x-axis 2. The maximum peak point of the x-axis 3. The downswing point from 1 4. The backswing point from 3 5. The end point from 1 6. The minimum peak point of the y-axis 7. The maximum peak point of the y-axis
7
5
Implementation
Round-down operation To make the acceleration data simple – can ignore small differences from the acceleration data – useful to find similar patterns
17
X Y Round-down(X)
Round-down(Y)
0.7664063 8.430469 0 8
5.7863674 7.6640639 5 7
5.5564456 0.804727 5 0
7.4724612 -4.4451562 7 -4
8.5837507 -4.9049998 8 -4
7.3575001 -9.0052734 7 -9
7.3575001 -9.0052734 7 -9
2.3758595 -11.1128907 2 -11
-3.1039455 -9.9632813 -3 -9
-15
-10
-5
0
5
10
15
19 143
282
431
591
763
914
1093
1243
1382
1523
1662
1803
1941
2082
2237
2413
2583
2712
2853
Acc
eler
atio
n(㎨
)
second(ms)
X
-15
-10
-5
0
5
10
15
19 131
262
402
532
691
843
985
1151
1272
1402
1534
1662
1781
1915
2051
2183
2352
2503
2643
2763
2893
Acc
eler
atio
n(㎨
)
second(ms)
rounddown(X,0)
Implementation
Detection of the two peak points Using two threshold values – To filter weak and small movements such as warming-up or
noises
Find the minimum value and the maximum value Keep comparing acceleration values until finding a transition point – to avoid misjudging the jagged patterns as the peak points
18
Implementation
-13
-8
-3
2
7
12
19 71 143
226
282
361
431
511
591
672
763
843
914
1015
1093
1172
1243
1315
1382
1452
1523
1592
1662
1733
1803
1862
1941
2024
2082
2161
2237
2333
2413
2503
2583
2653
2712
2782
2853
2923
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
Detection of the downswing
Finding the downswing point: – The first zero point from the minimum
peak of the x-axis – Analyze acceleration data in the reverse
direction – If not detect, use the first point of the
swing data
19
The minimum peak
Searching the first zero point from the peak point
The collected data round-down value -0.84305 0 (start point) -1.34121 -1 -2.4525 -2 -3.02731 -3 -3.75539 -3 -4.10027 -4 -5.97797 -4 -7.12758 -5 -7.1659 -7 -8.04727 -7 -9.15856 -8
-9.54176 -9
(the minimum peak point)
Implementation
Detection of the back swing
20
Backswing
-20
-10
0
10
2018 102
195
282
355
452
532
602
686
765
832
932
1014
1092
1175
1256
1336
1453
1542
1642
1732
1825
1902
2002
2112
2192
2263
2352
2442
2543
2644
2713
2803
2892
2993
Acc
eler
atio
n(㎨
)
second(ms)
Rounddown(X,0)
non-zero area
zero area
Searching for the zero area before the downswing – r = rounddown(x); – if(r==0) ++zero_count; – if(zero_count >= TOP_SWING_CRITERION) topSwingFound = true;
Find a non-zero area in front of the zero area – if((topSwingFound == true) && (r > 0 || r < 0)), then non_zero_count++; – if(non_zero_count >= BACK_SWING_CRITERION) backSwingFound = true;
If not detected – Return the downswing timestamp
TOP_SWING_CRITERION=4 BACK_SWING_CRITERION=4
Implementation
-15
-10
-5
0
5
10
1519 81 162
255
333
421
511
603
717
802
892
985
1093
1181
1262
1342
1425
1505
1592
1672
1751
1831
1915
2012
2082
2171
2265
2382
2485
2563
2653
2723
2803
2893
2982
Acc
eler
atio
n(㎨
)
second(ms)
rounddown(X,0)
Detection of the end point
End point - X, Y values are zero at least 5 times in series - If(rounddown(x[i]) == 0),
- then zero_count++; - If(zero_count >= END_CRITERION),
- then x[i] = the end point
If not detect, – use the end index(the last timestamp) of the swing data
21
Peak point
END_CRITERION = 5
Implementation
Beep sound feedback
22 Different beep sounds in the minimum and maximum peak points
-20-15-10-505
101520
18 132
242
342
466
562
662
765
862
972
1071
1181
1283
1412
1542
1672
1792
1882
2018
2142
2242
2352
2472
2603
2703
2813
2932
Acc
eler
atio
n(㎨
)
swing_0523125001
X Y
-15
-10
-5
0
5
10
15
20
85 152
214
282
332
392
466
522
576
623
686
742
792
846
913
972
1025
1092
1151
1202
1262
1322
1404
1472
1542
1612
1683
1755
1812
Acc
eler
atio
n(㎨
)
swing_0523125001
X Y
time [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
Minimum Peak point
Maximum Peak point
Minimum Peak point
Maximum Peak point
Implementation
Visual feedback
23
Swing duration time The maximum and minimum
acceleration graph
An acceleration graph
• AChartEngine version1.0 [4] is used for drawing graphs.
Implementation
The method of evaluation Field evaluations (two times) – Functional verification and performance evaluation – Collected around 80 golf swing data – Collection time was 10 or 20 seconds according to the setting
menu – Threshold values: 5㎨ and -5㎨
24
Evaluation & Result
The detection rate The detection rate of critical points
25
• The reasons of detection failure
Detectable swings
Undetectable swings
Total
Number 59 23 82
Percentage(%) 71.9 % 28.04 % 100 %
Reasons Number Percentage
Weak swing (No data less than negative threshold (-5㎨)) 12 52.2 %
Weak swing (less than positive threshold (5㎨)) 6 26.1 %
Undistinguishable swing 5 21.7 %
Total 23 100 %
Evaluation & Result
Examples of undetectable swings
26
-30-25-20-15-10-505
1015202530
124
454
280
3 95 353
603
893
1142
1376
1646
1946
2222
2474
2743
3003
3293
3553
3814
4072
4362
4635
4893
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
-20
-15
-10
-5
0
5
10
15
20
40 832
1721
2553
3353
4181
5023
5873
6712
7573
8413
9242
1007
310
943
1177
312
593
1342
214
292
1519
215
973
1685
217
702
1855
419
376
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
-20
-15
-10
-5
0
5
10
15
20
20 242
492
743
972
1233
1462
1682
1912
2142
2336
2533
2733
2933
3132
3353
3593
3833
4062
4273
4483
4692
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
No data less than the negative threshold (-5㎨)
Less than the positive threshold (5㎨)
Undistinguishable swing
Evaluation & Result
The detection rate of the backswing
Detectable swing data (total 59 swing data)
Backswing Downswing Follow-through
Number 37 59 59
Percentage 62.7 % 100 % 100 %
27
• Identifying the backswing is problematic - The movement is very small - The successful detection rate was 62.7 %.
Evaluation & Result
Example of distinctive backswing
28
-15
-10
-5
0
5
10
15
19 151
311
462
641
824
1015
1181
1333
1482
1642
1781
1941
2091
2265
2462
2633
2773
2923
Acc
eler
atio
n(㎨
)
second(ms)
rounddown(X,0)
-15
-10
-5
0
5
10
15
19 131
262
402
532
691
843
985
1151
1272
1402
1534
1662
1781
1915
2051
2183
2352
2503
2643
2763
2893
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
• Original acceleration graph
• Round-down graph of the x-axis
532 msec (382 ~ 914)
Evaluation & Result
Detection failure of the backswing
29
-15
-10
-5
0
5
10
15
1 9 17 25 33 41 49 57 65 73 81 89 97 105
113
121
129
137
145
153
161
169
177
185
193
201
209
217
225
233
241
249
Acc
eler
atio
n(㎨
)
second(ms)
Rounddown(X,0)
Too short non-zero area (only two non-zero values)
-15
-10
-5
0
5
10
15
20 172
342
522
702
876
1071
1257
1446
1622
1832
2042
2272
2462
2643
2833
Acc
eler
atio
n(㎨
)
second(ms)
No non-zero area
Evaluation & Result
-30
-20
-10
0
10
20
3022
1212
2396
3553
4753
5953
7043
8142
9232
1039
311
512
1259
313
653
1473
315
833
1696
318
072
1914
6
Acc
eler
atio
n(㎨
)
second(ms)
No zero area
The problem of choosing threshold Detected different part of a swing according to threshold values
30
-15
-10
-5
0
5
10
15
3910
6421
4132
7343
6155
2267
2278
8290
3210
142
1124
212
422
1350
214
652
1578
316
874
1800
219
132
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
-15
-10
-5
0
5
10
15
3910
6421
4132
7343
6155
2267
2278
8290
3210
142
1124
212
422
1350
214
652
1578
316
874
1800
219
132
Acc
eler
atio
n(㎨
)
second(ms)
X
Y
Threshold = 5㎨ and -5㎨ Threshold = 10㎨ and -10㎨
Evaluation & Result
Conclusion and Future work Conclusion – This study has showed the design and implementation of an
Android application. • measured golfers’ movement and identified critical points of the golf
swing using an accelerometer – This thesis can provide simple and convenient way
• without expensive and complicated devices • useful to individuals and amateurs
Future work – Selecting threshold values according to golfers’ skill
• A heuristic algorithm is required to select golfers’ suitable threshold values
– New approaches to improve identifying the backswing movement • measuring other parts of the body • using other sensors together
31
References [1] Hiroshi Negoro, Masahiko Ueda, Kajiro Watanabe, Kazuyuki Kobayashi, and Yosuke
Kurihara, “Measurement and Analysis of Golf Swing Using 3D Acceleration and Gyroscopic Sensors”, SICE Annual Conference 2011, pp 1111-1114.
[2] Robert D. Grober, “Measuring Tempo, Rhythm, Timing, and the Torques that Generate Power in the Golf Swing”, arXiV: 1001.1137v1, January, 2010
[3] http://blog.snowlove.co.kr/30056382913 [4] AChartEngine, http://www.achartengine.org/
32
33
Questions?
Analysis of the golf swings The maximum and minimum values of 8 golfers The two threshold values are decided based on the collected data – Threshold values: 5㎨ and -5 ㎨
36
-25
-15
-5
5
15
25
Golfer1 Golfer2 Golfer3 Golfer4 Golfer5 Golfer6 Golfer7 Golfer8 AverageMax of X 19.16016 18.58535 18.24047 13.37379 14.06356 6.82102 14.06356 5.32652 13.704304
Min of X -17.32078 -19.00688 -13.56539 -18.93023 -16.51606 -12.60738 -15.94125 -9.42680 -15.41435
Max of Y 9.55176 9.82 19.62000 9.82 8.89031 8.24887 6.21789 3.80371 9.4965675
Min of Y -6.16957 -21.56434 -12.45410 -14.43676 -13.22051 -14.28348 -12.6357 -3.28555 -12.25625
Acc
eler
atio
n (㎨
)
The maximum and minimum acceleration values
One swing data
37
-20
-15
-10
-5
0
5
10
15
20
6443
764
616
6483
065
136
6532
565
536
6574
665
984
6616
466
350
6654
766
736
6694
6
Acc
eler
atio
n(㎨
)
second(ms)
Player1
X
Y-9.8
Z
-20
-15
-10
-5
0
5
10
15
20
1590
916
079
1624
816
440
1665
116
850
1704
017
220
1739
017
580
1776
017
920
1809
318
300
Acc
eler
atio
n(㎨
)
Player2
X
Y-9.8
Z
second(ms)
-20
-15
-10
-5
0
5
10
15
20
2299
123
201
2341
123
640
2387
924
121
2435
024
581
2478
025
011
2524
225
441
2571
125
920
2615
9
Acc
eler
atio
n(㎨
)
second(ms)
Player 3
X
Y-9.8
Z
-20
-15
-10
-5
0
5
10
15
20
1 28 55 82 109
136
163
190
217
244
271
298
325
Acc
eler
atio
n(㎨
)
second(ms)
Player 4
X
Y-9.8
Z
One swing data (cont’d)
38
-20
-15
-10
-5
0
5
10
15
20
4563
245
901
4619
146
560
4686
147
211
4749
147
835
4812
248
392
4871
249
062
4944
0
Acc
eler
atio
n(㎨
)
second(ms)
Player 6
X
Y-9.8
Z
-20
-15
-10
-5
0
5
10
15
2036
449
3674
037
055
3738
037
681
3796
138
232
3852
138
821
3919
939
531
3986
640
161
4047
140
821
Acc
eler
atio
n(㎨
)
second(ms)
Player 5
X
Y-9.8
Z
-20
-15
-10
-5
0
5
10
15
20
2477
625
005
2530
325
553
2582
526
105
2635
726
605
2685
527
096
2732
527
596
2787
528
148
2846
3
Acc
eler
atio
n(㎨
)
second(ms)
Player 7
X
Y-9.8
Z
-20
-15
-10
-5
0
5
10
15
20
1 30 59 88 117
146
175
204
233
262
291
320
Acc
eler
atio
n(㎨
)
second(ms)
Player 8
X
Y-9.8
Z
Detection failure of the backswing
39
-15
-10
-5
0
5
10
15
20 162
322
492
662
824
1013
1171
1343
1512
1692
1884
2102
2316
2485
2653
2833
3017
swing_0523124421
X Y
-15
-10
-5
0
5
10
15
15 189
350
555
715
876
1059
1226
1398
1556
1726
1906
2106
2297
2486
2657
2837
swing_0523124638
X Y
-15
-10
-5
0
5
10
15
1 16 31 46 61 76 91 106
121
136
151
166
181
196
211
226
241
Rounddown(X,0)
Rounddown(X,0)
Too short non-zero area (only two non-zero values)
-15
-10
-5
0
5
10
15
20 162
322
492
662
824
1013
1171
1343
1512
1692
1884
2102
2316
2485
2653
2833
3017
rounddown(X,0)
No non-zero area
Evaluation & Result
-30
-20
-10
0
10
20
30
2210
6521
5232
3442
3253
6363
8273
5383
3393
1310
383
1135
312
343
1334
414
262
1528
216
261
1730
218
262
1921
2
Rounddown(X)
Rounddown(X)
Detection failure of the backswing
40
-30
-20
-10
0
10
20
30
2212
9225
7237
6350
9263
1374
8386
5398
4311
042
1222
213
403
1453
315
704
1689
318
086
1921
2
swing_0619141321
X Y
-20-15-10-505
101520
16 152
302
456
612
792
958
1131
1327
1511
1691
1874
2072
2242
2422
2612
2813
2983
swing_0523124907
X Y
-20-15-10-505
101520
16 142
282
422
566
732
882
1042
1217
1391
1551
1724
1882
2072
2227
2392
2573
2753
2903
Rounddown(X)
Rounddown(X)
Cannot find the zero area
No non-zero area
Evaluation & Result