ISSN 2517-5718

Development of a Mobile Application for Testing the Effect of Vibration Feedback on Putting Performance

George K Hung*, Courtney Semkewyc, Shradha Suresh

Department of Biomedical Engineering, Rutgers University, Piscataway, New Jersey, United States

CitationCitation COPIED

Semkewyc C, Suresh S, Hung GK. Development of a Mobile Application for Testing the Effect of Vibration Feedback on Putting Performance. Adv Comput Sci. 2018 Nov;1(3):116


Many golfers have trouble with short putts. This could be either due to poor putting form, or they suffer psychologically from the yips. To reduce or potentially alleviate these issues, an application (app) was developed to provide vibration feedback for putter misalignment during the putting stroke. This was tested on three experimental subjects along with a control subject who did not receive vibration feedback. Five trials were conducted over a two-month period, where each trial consisted of 60 putt attempts. All experimental subjects showed an improvement in putting form, with both an increase in putts made, and a decrease in triggered vibration over the course of the trials. The average percentage of putts made for all three subjects improved from 25% to 50.6% over the five trials, while the average amount of vibration activation decreased from 35.1% to 32.2%. Conversely, the control subject showed a slight decline in performance through the five trials. The difference between the experimental group and the control was statistically significant (p<0.05). The results suggest that this app can be used by both novice and expert golfers to improve putting form by helping them maintain a straight putter swing path.


Putter; Vibration; Yips; Angular Deviation; Android Studio


In the sport of golf, learning the proper putting technique is crucial for success. This is because putting accounts for nearly 40% of the total strokes taken in a round of golf [1]. Good putting technique relies on the ability of a player to line up a shot, and then execute a stroke without moving off line. This involves not only effectively reading the putt initially, but also swinging the putter at the perfect angle and having the proper posture. The shoulders, hips, knees, and feet must be positioned parallel to the “target line;” throughout the stroke, the forearms must be parallel to each other. In order to “read the putt,” the golfer must be able to analyze the green, such as how far away the hole is, whether the putt has to be made uphill or downhill, etc. and then use this information to make a good putt [2-4]. These are some of the many factors that can make putting extremely difficult, even for the most experienced players. Thus, even the slightest misalignment off the target line can cause the ball to miss the hole. Another problem that comes into play is that any breaks in the wrist or angular changes in the joints can result in the face of the putter not making contact with the ball at an angle perpendicular to the intended line of the putt, thus causing a missed putt. Indeed, it has been found that putter face angle is one of the most important factors in maintaining directional consistency in the stroke [5].

It has been estimated that up to 30% of serious golfers have experienced the “yips”, which refers to a nervous condition that results in an inability to create a smooth putting stroke [6-8]. The yips are characterized by jerks or spasms of the hand that occur during the stroke, and consequently pushes the putt to one side or the other. One of the means to remedy this problem is to use a putter that does not require coordination between the two hands. For instance, many professional players who suffer from yips used long putters, which is effectively a one-handed putter (although this has been banned for professional golfers since January 01, 2016). Others use specially-designed “counterbalanced” putters [7,8]. Another suggested remedy is to practice putting with the eyes closed [7,9].

Due to the importance of putting in the game of golf, many inventions have been developed to help golfers with their stroke [10]. These include: portable practice putting greens [11], guiding tracks for assisting the putting stroke [12,13], and gyroscopic attachments. Putting greens allow players to practice their putting virtually anywhere, and helps to promote proper muscle memory. The idea behind this invention is that the more practice a player gets, the more he or she will be able to mimic these motions out on the green [3]. Guiding tracks allow the golfer to receive visual and mechanical feedback regarding their putting stroke, and to train on the device to improve performance. A gyroscopic attachment assists the golfer in judging the positioning of the putter and in maintaining a straight line to the ball. The gyroscope will provide some resistance against moving the putter out of line, thus helping the player follow the ideal trajectory [14]. The limitation of this approach is the size and weight of the gyroscope, and the requirement of an electrical startup before each run.

A novel approach developed for this study involves the use of a smartphone to provide vibration feedback regarding deviations from proper stroke direction. Currently, there is no product on the market that provides alignment feedback through vibration in an easy-touse mobile application (app). This method provides instantaneous alignment feedback during the putting stroke, and allows the player to make appropriate adjustments to the putter face angle and stroke path. It also helps the player to concentrate more on maintaining the swing path and divert their attention from nervous issues associated with the yips. Moreover, even golfers who do not have the yips may benefit from vibration feedback to improve their putting performance. 


The scope of the present study involves young naive subjects who show relatively poor initial putting performance. Subjects were selected from the student population in the biomedical engineering department. They are required to have normal vision, normal eyehand coordination, in general good health, and are able to participate in this study over at least a 2-months period. Excluded from this study are those who do not fit into one or more of these criteria. A total of 4 subjects who are novices in the game of golf and ranging in age from 18 and 28 years of age participated in the study, and were randomly divided into an experimental group and a control subject. The subjects ranged in height and weight from 5’ 3” and 120 pounds to 5” 8” and 150 pounds. The experimental group, which is comprised of 3  subjects, received vibration feedback from a smartphone attached to the putter during the putting stroke. On the other hand, the control subject did not receive vibration feedback, while the equipment setup remained the same as that for the experimental group. All subjects provided written consent in accordance with the Rutgers Human Subjects Protocol, and the study was approved by Rutgers University Electronic Institutional Review Board (eIRB). Data regarding made/missed putts and the occurrence of vibration were recorded manually. The collected data were input into Excel files for analysis, and the results were displayed as bar graphs for comparison among different conditions


The experimental setup is shown in Figure 2. It consists of wood platforms covered with artificial-green material. The subject’s starting putting location is positioned 6 ft from a standard 4-¼ inch hole (Figure 2). 

Figure 1: Experimental setup showing smartphone attached to the putter shaft and subject preparing to putt the ball to a hole (the further distance one) 6 ft away

Figure 2: (Top Panel) Button resets center reference position for detecting putting stroke deviation. (Middle Panel) Buttons for increasing or decreasing threshold delta value. (Bottom Panel) Displays current delta value.

A smartphone is attached to the shaft of the putter at the lower portion of the grip, and is oriented so that the plane of the face of the smartphone is parallel to the intended swing plane. The app is programmed within the Android Studio platform to use the geomagnetic rotation vector sensor of the smartphone to provide the angular orientation of the clubface relative to the line of the putt. A detailed description of programming using Android Studio has been provided by one of the authors (Hung) in a recent publication [15].

The app screen is shown in Figure 2. The top panel contains the “Set Center Position” button, which when pressed will show the actual angular value associated with the player’s swing plane referenced to the geomagnetic rotation vector. This becomes the relative 0° for calculating putter path angular deviation. The middle panel controls the amount of deviation via the “Decrement” and “Increment” buttons. Any angle outside of the deviation range will trigger vibration by the smartphone. The value of the deviation range is shown in the bottom panel.

The format of feedback to the subject is that of a 50-msec-duration vibration whenever the putter angular deviation is beyond the threshold (see SENSOR DETECTION AND VIBRATION ACTIVATION under Programming Codes below). This provides the sensation of a continuous vibration when the angular deviation exceeds the threshold (the app allows for control over the angular threshold for vibration and the center reference oreintation of the putter). Whereas the threshold can be set over a range of values, we limited this to one setting (± 20°) based on preliminary tests as explained in the Discussion section.

In adjusting the deviation range, there is a tradeoff among range magnitude, sensitivity, and responsiveness. A smaller range provides greater sensitivity, but also makes it more difficult to remain within the allotted deviation range. On the other hand, a larger range provides greater freedom of movement, but at the expense of providing insufficient feedback. Based on preliminary tests, it was determined that ± 20° (with a sensitivity of 2°) was the most effective value. The more experienced players may want a more fine adjustment, and can set the app to ± 15°, which provides increased sensitivity to alignment. Conversely, a novice player may want to start with a greater range so as not to trigger vibration excessively.

JAVA programming codes for two main components of the Android Studio software are provided below. The Screen Buttons Control code first registers the needed smartphone internal sensors. It then activates the on-click listeners for the 3 buttons whose functions have been described above. The SENSOR DETECTION AND VIBRATION ACTIVATION code activates the change detection attribute in the internal sensors. Upon change detection, the smartphone screenplane angle is compared with the center reference value to provide the resultant deviation angle. If the deviation angle is either greater than 20° or less than -20°, the smartphone vibration mode will be activated to alert the user that the deviation threshold has been exceeded.


protected void on Create (Bundle saved Instance State) {

super.on Create (saved Instance State);

// Register the sensor listeners (only the ones needed for this


mSensorManager = (SensorManager)


accelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELERO METER);

magnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC _FIELD);


// Find button 1 by association with specific button on screen layout b1 = (Button) findViewById(;

// Find button 2 by association with specific button on screen layout b2 = (Button) findViewById(;

// Find button 3 by association with specific button on screen layout b3 = (Button) findViewById(;

// Activate On Click Listener for Button Pushed // BUTTON 1 - Center Position b1.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

Button b = (Button) v;

// Get Value of Actual Present Orientation

center1 = roll;

// Represents absolute geomagnetic angle of smartphone face plane (in deg)

// Once button 1 is pushed, center1 will represent the reference angle for detecting deviation

// Text string for display

String ce = Float.toString(center1);

// Provide value of roll with 3 decimal point accuracy if (ce. length() < 4)

s_ce = ce; else

s_ce = ce.substring(0, 5);

b.setText(s_ce); } });

// BUTTON 2 - Decrement Alignment Angle

// Vibration deviation threshold +/- delta deg. (Nominally set at delta = 20)

// Decrement will decrease value of delta.

b2.setOnClickListener(new View.OnClickListener()

{public void onClick(View v)

{ delta = delta + dec;

String de = Float.toString(delta);

String s_de = de.substring(0, 2);

b4.setText(String.valueOf(s_de)); } } );

// BUTTON 3 - Increment Alignment Angle

// Vibration deviation threshold nominally set at +/- 20 deg.

// Increment will increase value of delta.

b3.setOnClickListener(new View.OnClickListener()


public void onClick(View v){

delta = delta + inc;

String de = Float.toString(delta);

String s_de = de.substring(0, 2);






public void onSensorChanged(SensorEvent event) {

if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)

mGravity = event.values;

if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)

mGeomagnetic = event.values;

if (mGravity != null && mGeomagnetic != null) {

float R[] = new float[9];

float I[] = new float[9];

boolean success = SensorManager.getRotationMatrix(R, I, mGravity, mGeomagnetic);

if (success) {

float orientation[] = new float[3];

SensorManager.getOrientation(R, orientation);

// orientation [0] = azimuth, orientation[1] = pitch, orientation[2] = roll

// roll corresponds to plane of putter motion

// Multiply by 100 to result in degrees

float gain = 100;

float azimut = orientation[0] * gain;

float pitch = orientation[1] * gain;

roll = orientation[2] * gain;

String az = Float.toString(azimut);

String pi = Float.toString(pitch);

String ro = Float.toString(roll);

String s_az = az.substring(0, 5);

String s_pi = pi.substring(0, 5);

String s_ro = ro.substring(0, 5);

if ( (roll < center1 - delta) || (roll > center1 + delta)) { try {

// Vibrate when outside range

RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTI FICATION);

Vibrator v = (Vibrator)



} catch (Exception e)






// Log roll information when within range Log.i("Test", "CHECK + "Roll= " + s_ro + "Center1 = " + center1); }




Experimental procedure

Prior to each experiment, the subjects were allowed to practice 10 putts (without vibration feedback) to a hole 6 ft away to provide a feel for the distance range and setup environment of the green. For the experiments, they were instructed to align the putt and naturally putt the ball toward the hole. Prior to the start of the experimental trial, the subject was instructed to press the “Set Center Position” button. This sets the present geomagnetic plane value to be the new center reference for the intended swing plane. Each trial consisted of 60 putt attempts, with a ½ min break after 30 putts to reduce any effects of inattention following the repetitive tasks. After each attempt, the subject reported whether vibration took place during the putting stroke. This, along with whether the putt was made or missed, was manually recorded. The subjects returned at approximately weekly intervals for a total of 5 sessions.


The data for each of the experimental subjects is shown in Figure 3A-C. Each trial was separated into 2 categories: made and missed putts and each category were further delineated into “vibration” and”non-vibration” modes. A composite of all the subject data is shown in Figure 4.