Human Performance Application -
Golfer
One of the most powerful features of the LifeMOD™ Biomechanics Modeler is the capability to create sophisticated human models which may interact with an external mechanical system such as a flexible golf club.
For this example a full body human model is scaled to a specific golfer subject. A flexible golf club is created by importing the graphics files for the grip and the head and creating a flexible link structure to represent the shaft between the grip and the head.
A golf driving stroke is simulated using the motion capture data for the human subject. A forward dynamics simulation is performed with the joints of the legs and upper body driving the motion.
The objective of this exercise is to examine the sequence of joint torques necessary to complete the swing. The golf club strains are examined as well.
Key skills exercised in this tutorial include:
- Creating a model, joints, posture and motion from the model library
- Importing a mechanical environment from the model library
- Modeling the flexible golf club
- Training the joints to produce the necessary torques to drive the human model
- Creating foot/floor forces
- Creating hand/club contact forces
Sections
Generating of the Body Segments, Joints, Posture and Motion
In this phase, the SLF file is used to create the human body model from measurements, joints from joint data, posture from posture data and motion from recorded motion data. The body segments are created using the parameters stored in the SLF file.
This file contains information on the subject name, gender, age, height and weight. LifeMOD™ uses this information to extract body segment measurements and mass properties from the internal anthropometric database.
Passive joints are created for the inverse-dynamics phase of the simulation process referred to as the "training" phase. For this model passive joints will be created for the inverse-dynamics simulation. The passive joint consists of a tri-axis hinge joint (3 DOF) which includes angulation stops, stiffness and damping torques. This type of joint is used primarily to stabilize the body during the inverse-dynamics simulation. They are later removed and replaced with Servo-type torque generators for the "trained" phase. The parameters of the passive joints are included in the SLF file
After the joints are created on the model the posture of the model may be adjusted, and the model moved into place. The posture data and the model location are also included in the SLF file.
Finally, the motion data (MOCAP) for the golf stroke is imported into the model and used to drive the motion agents created on the model. There are two components to the motion agent. A yellow sphere designates the location of the data point and the red sphere designates the marker location on the human model. The yellow sphere is attached to the red sphere via a bushing element with properties designated below. During the inverse dynamic simulation, the yellow sphere will move according to the MOCAP data, while influencing the motion of the red sphere attached to the body. It is during this analysis that muscle contraction histories will be recorded. The motion agent stiffness properties are entered in the panel in Figure 1. The motion trajectory data is included in the SLF file.
Step 1: Bring up the import panel
Launch the LifeMOD™ software. Select CREATE NEW MODEL to start a new modeling session. Select XCHANGE from the main-menu and IMPORT SLF MODEL FILE.
Step 2: Import the Connor body, joints, posture and motion agents
Select "Model Library" on the top of the panel (see figure 1) and select "Full Body Golfing" for the Model Library SLF File. The Body Data, Model Units, and Motion Data panels will then display the current information in the SLF file. Select Body, Joints, Posture and Motion Agents as the data to be built. Select APPLY to create the model displayed in figure 2.
Running the Equilibrium Analysis
In order to fit the model to the data positions, an equilibrium analysis must be performed. This is a dynamics analysis which holds the positions of the data-driven motion agents (yellow balls) fixed, while finding the minimum energy configuration in the springs of the motion agents. The motion agents with the higher weights will have more influence on the model and the initial configuration.

Step 3: Bring up analyze panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu. Make sure that "Freeze Motion Agents for Equilibrium Analysis" is checked so the motion agents do not move during the equilibration analysis.
Step 4: Run the equilibrium simulation
Specify the end time of the simulation for 1 second with 100 time steps using the "Robust" integrator settings. Select ANALYZE.
Step 5: Update the model configuration with static results
Select UPDATE MODEL POSTURE WITH EQUILIBRIUM RESULTS to change the position of the body to match the last frame in the simulation.
Step 6: Align the body markers with data
After the configuration is updated there will still be a discrepancy between the yellow spheres and the red spheres due to differences between the body geometry and the test subject and differences between the positioning of the markers in the model and the subject. Select SYNCHRONIZE BODY MARKER LOCATIONS WITH DATA LOCATIONS button.
Adding the Flexible Golf Club
Geometry files representing the club grip and the head are imported into the model. A flexible link is constructed using the flexible link utility in ADAMS to create a structure with properties similar to the composite club shaft.
Step 7: Import the club head and grip from the library
Select XCHANGE from the main-menu and IMPORT MECHANICAL ENVIRONMENT from the sub-menu. Select Mechanical Environment Library and select Golf Club Head from the Model Library SLF File. Select APPLY to build the grip and club head.
Step 8: Bring up the discrete flexible link panel.
At the top ADAMS/View menu select Build-Flexible Bodies-Discrete Flexible Link, to bring up the panel pictured in Figure 5.
Step 9: Set the parameters and create the flexible shaft.
Set the flexible shaft parameters as in Figure 5 and select OK to create the flexible link.
Step 10: Attach the club to the hands.
Right-click the forces icon in the Main Toolbox, and select the bushing force icon . A bushing is a restraint between two bodies whose stiffnes and damping can be defined in 6 DOF. Pick SML_Right_Hand as the first body and SML_Club_Grip as the second body. Right-click on the ground to bring up a location panel under the main toolbox, enter (0.3598247916, 0.697651211, 0.5148486542) and Select APPLY. Modify and set the values as in figure 7. Rename the bushing “.World.Hand_Grip”.
Create a new bushing, selecting the first body as SML_Right_Hand, and the second body as SML_Left_Hand. Select the bushing created prior as the location of the new bushing. Modify the bushing and set the value as in figure 7. Rename the bushing “.World.Rhand_Lhand”.
OR
Open a command window by going in "View" in the top ADAMS menu to use the commands provided.
Create the markers using the following ADAMS/View commands:
marker create marker=.World.Club_Grip.hands location=0.3598247916, 0.697651211, 0.5148486542 orientation=0.0, 0.0, 0.0 rel=.World
marker create marker=.World.SML_Right_Hand.Grip location=0.3598247916, 0.697651211, 0.5148486542 orientation=0.0, 0.0, 0.0 rel=.World
marker create marker=.World.SML_Left_Hand.Grip location=0.3598247916, 0.697651211, 0.5148486542 orientation=0.0, 0.0, 0.0 rel=.World
Connect the club to the right hand using the following command:
force create element bushing bushing=.World.Hand_Grip i_mark=.World.SML_Right_Hand.Grip j_mark=.World.Club_Grip.hands stiffness=1.0E+012,1.0E+012,1.0E+012
damping=1.0E+0011,1.0E+0011,1.0E+0011
force_preload=0.0,0.0,0.0
tstiffness=1.0E+008,1.0E+008,1.0E+008
tdamping=1.0E+007,1.0E+007,1.0E+007
torque_preload = 0.0, 0.0, 0.0
Connect the hands together with a bushing element using the following command:
force create element_like bushing bushing=.World.Rhand_Lhand
i_mark=.World.SML_Right_Hand.Grip
j_mark=.World.SML_Left_Hand.Grip
stiffness=1.0E+012,1.0E+012,1.0E+012
damping=1.0E+0011,1.0E+0011,1.0E+0011
force_preload=0.0,0.0,0.0
tstiffness=1.0E+008,1.0E+008,1.0E+008
tdamping=1.0E+007,1.0E+007,1.0E+007
torque_preload=0.0,0.0,0.0
Creating the Foot-Floor Constraints
Joints are used to represent the contact between the feet of the golfer and the playing surface. A fixed joint is created between the left foot and the ground and a spherical joint is created at the pivot location of the right foot. For information on selecting specific model parameters for this section see Choosing Model Parameters.
Step 11: Create a bushing element between the left foot and the floor.
Create a bushing force, selecting SML_Left_Foot as the first body and the ground as the second body. Right-click to bring up the location. Set the location to (0.6165542782, 5.5868707173E-002, 0.35559667) using the Precision Move panel. See figure 6. Rename the bushing .World.Left_Foot_GRX.
OR
Use the following ADAMS/View commands to create the markers and bushing element between the left foot and the floor:
1. Create the markers
marker create marker=.World.SML_Left_Foot.MARKER_2342
location=0.6165542782, 5.5868707173E-002, 0.35559667orientation=0.0, 0.0, 0.0 rel=.World
marker create marker=.World.ground.MARKER_2343
location=0.6165542782, 5.5868707173E-002, .35559667
orientation=0.0, 0.0, 0.0 rel=.World
2. Create the bushing force element
force create element_like bushing bushing=.World.Left_Foot_GRX i_marker_name=.World.SML_Left_Foot.MARKER_2342 j_marker_name=.World.ground.MARKER_2343
stiffness=1.0E+012,1.0E+012,1.0E+012
damping=1.0E+0011,1.0E+0011,1.0E+0011
force_preload=0.0,0.0,0.0 tstiffness=1.0E+008,1.0E+008,1.0E+008
tdamping=1.0E+007,1.0E+007,1.0E+007 torque_preload=0.0,0.0,0.0
Step 12: Create a bushing element between the right foot and the floor.
Create a bushing force, selecting SML_Right_Foot as the first body and the ground as the second body. Select the location as (0.1305656331, 4.257274312E-002, 0.4558554612). The location and orientation of the bushing is determined by it's markers. In order to modify the orientation of a bushing, it's markers must the modified. Select the middle of the bushing and look for two bushings with consecutive numbers. Right-click and modify each of the markers so the orientations are (266.7096912618, 40.7657878536, 92.5480285278) Select the bushing and modify it. Set the values as in figure 11. Rename the bushing .World.Right_Foot_GRX.
OR
Use the following ADAMS/View commands to create the markers and bushing force element between the right foot and the floor:
1. Create the markers:
marker create marker=.World.SML_Right_Foot.MARKER_2344
location=0.1305656331, 4.257274312E-002, 0.4558554612
orientation=266.7096912618, 40.7657878536, 92.5480285278 rel=.World
marker create marker=.World.ground.MARKER_2345
location=0.1305656331, 4.257274312E-002, 0.4558554612
orientation=266.7096912618, 40.7657878536, 92.5480285278 rel=.World
2. Create the bushing force element
force create element_like bushing bushing=.World.Right_Foot_GRX
i_marker_name=.World.SML_Right_Foot.MARKER_2344 j_marker_name=.World.ground.MARKER_2345
stiffness=1.0E+012,1.0E+012,1.0E+012 damping=1.0E+0011,1.0E+0011,1.0E+0011
force_preload=0.0,0.0,0.0
tstiffness=100.0,100.0,100.0
tdamping=10.0,10.0,10.0
torque_preload=0.0,0.0,0.0
Step 13: Create the floor graphics.
Create a ground marker named: ".World.ground.flr", with a location of (-0.4, 0.0, -0.4), with an orientation of (0,0,0) relative to .World.
Select the box icon from the rigid body section in the Main Toolbox. Select the previously created marker as the first locatioin and another logical location as the second. Right-click on the box and select MODIFY. Set the diagonal corner coordinates to be (1.5, .01, 2) If the block is not under the body, check the orientation of the original marker and change to (0,0,0) Right-click the box and select APPEARANCE. Change the color to be green. Select OK.
Create a fixed joint to fix the floor in space. Select the fixed joint icon from the joint section in the Main Toolbox. Select the floor as the first body and the ground as the second. Select .World.ground.flr as the location.

OR
Use the following ADAMS/View commands to create the markers and graphics for the ground and change the color to green:
marker create marker=.World.ground.flr
location=-0.4, 0.0, -0.4
orientation=0,0,0 rel=.World
geometry create shape block
block_name = .World.ground.floor corner_marker = .World.ground.flr
diag_corner_coords = 1.5, .01, 2
Running the Inverse-Dynamics Simulation
With the model in the proper position, the hip components implanted in the model, the club model created and attached to the hands, the motion capture data read in, and the motion agents installed, an inverse-dynamics or "training" simulation may be performed. This simulation is performed to record the joint angulation histories for the golf stroke. When the joints are fully trained to reproduce the motion, a subsequent forward-dynamics simulation will be performed. The trained joints will be using pd-servo controllers based on the recorded angulations from the training phase.
Step 14: Bring up the analyze panel
Select ANALYZE from the main-menu and DYNAMICS from the sub-menu.
Step 15: Adjust the gravity settings and run the dynamics simulation
Check the gravity box and set the y-value to -9.80665. Select "Robust" integrator settings. Set the simulation end time to 1.5 seconds with 150 times steps and select ANALYZE.
Step 16: Display animation
Use the ADAMS/View toolbox to animate the model.
Preparing the Model for the Forward-Dynamics Simulation
After the inverse-dynamics simulation is performed the joint angulation histories are now recorded for each joint. In this section, trained elements or PD-Servo controllers are exchanged for the passive learning elements on the joints.
The motion agents are removed from the model and a "Tracker Agent" is installed. The tracker agent is a motion agent located at the center of the pelvis which provides force-stabilization for the forward-dynamics simulation. During the inverse-dynamics simulation the location and orientation of the frame of the tracker agent is recorded (it is not generating a force during the inverse-dynamics simulation). The location and orientation information may then be used to drive the tracker agent in the forward-dynamics simulation. Usually various degrees-of freedom are specified as "free" to allow for proper dynamical interaction. For this example the freedom in the direction normal to the floor would be specified as free, to allow for proper ground reaction force generation between the feet and the steps. For information on selecting specific model parameters for this section see Choosing Model Parameters.
Step 17: Bring up the joint training panel
Select JOINTS from the main-menu and TRAINING from the sub-menu.
Step 18: Install Trained DRIVER rotational joint elements
Select "Install Trained Driver Rotational Joint Elements." Enter 1e5 and 1e3 for the servo proportional and derivative gain respectively. Select APPLY to update the joints.
Step 19: Bring up the motion agent tracker panel
Select MOTION from the main-menu and CREATE TRACKER AGENT from the sub-menu.
Step 20: Create the tracking agent
Specify the stiffness/damping parameters as in Figure 16. Specify all freedoms as driven except for the Y-Dof. Select APPLY.
Step 21: Create the specific data requests
Select Build-Measure-REQUEST-New from the ADAMS/View menu. Name the request REQ_Hand_Grip_Force. Select “Define Using Function Expression” and input in "BUSH(.World.hand_grip, 0, 5, 0)" in the F5 function.

OR
Create the data request to output the hand/grip forces generated during the golfing simulation using the following ADAMS/View command:
output_control create request request_name = REQ_Hand_Grip_Force
f5 = "BUSH(.World.hand_grip, 0, 5, 0)"
Running the Forward-Dynamics Simulation
With the tracker agent place, and the contractile elements in the muscles of the lower body to include the motion splines from the inverse-dynamics simulation, the PD-Servo controllers controlling the torque joints of the body, the forward-dynamics simulation is ready to be performed.
Step 22: Bring up the analysis panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu.
Step 23: Disable the motion agents and run the forward dynamics simulation
Run the simulation 1.5 seconds and 200 time steps using the "Default" integrator settings. Be sure to disable the motion agents. Select ANALYZE.
Interrogating the Results
When the simulation is complete the model may be animated and the results reviewed.
Various data may be presented from the forward-dynamics simulation including:
- Foot-floor contact forces
- Body kinematics
- Joint torques
- hand-club forces
- shaft strain
Step 24: Display animation
Use the ADAMS/View toolbox to animate the model.
Step 25: Display simulation with skin/skel model.
Set the display to Skel_Skin and run the animation.
Step 26: Turn on stick model with joint bubbles
In order to view the torques in the model clearly, the graphics are reduced to the stick model using the display option at the bottom of the main LifeMOD™ panel. Check "Scale Joint/Tissue Graphics" select Joints and select Scale Globally. Select the light bulb to turn on the joint bubble graphics. Select front view, divide window and select PLAY.
Step 27: Bring up results panel
Select RESULTS in the main-menu and ANIMATION in the sub-menu.
Step 28: Turn on the joint torque scaling
Select scale Joint/Tissue Graphics, chose Joints, scale locally and select the light icon.
Step 29: Animate the stick model
Use the ADAMS/View toolbox to animate the model. Observe the scaling joint torque bubbles.
Step 30: Display the grip reaction forces
Turn on the scaling force graphics acting at the bushing connections between the hands and the club grip using the following ADAMS commands:
mdi graphic_force object=.World.hand_Grip type=2
default force force_scale=300 torque_scale=.00
Use the ADAMS/View toolbox to animate the model. Observe the scaling force graphics at the grip.
Step 31: Bring up the post processor window
Select DATA DISPLAY in the sub-menu. Select the Post Processor button in the results panel to bring up the ADAMS results post processor window.
Step 32: Plot the thoracic twist torques
Select SML_thoracic for the Joint, Torque for the characteristic Transverse for the component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 5. Check New Plot and select CREATE FULL PLOT.
Step 33: Plot the lumbar twist torques
Select SML_lumbar for the Joint, Torque for the characteristic Transverse for
the component. Select a low pass butterworth data filter with a cutoff frequency
of 5.0 and an order of 5. Check "New Plot" and select CREATE FULL PLOT.
Step 34: Animate front view
Select ANIMATION from the sub-menu, select front view, divide window and select PLAY.
Step 35: Animate right view
Select right view, divide window and select PLAY.
Step 36: Turn on stick view and joint scaling graphics
In order to view the torques in the model clearly, the graphics are reduced to the stick model using the display option at the bottom of the main LifeMOD™ panel. Check "Scale Joint/Tissue Graphics" select Joints and select Scale Globally. Select the light bulb to turn on the joint bubble graphics. Select front view, divide window and select PLAY.
Step 37: Plot the left shoulder frontal plane torques
Select DATA DISPLAY from the sub-menu. Select SML_Left_Shoulder for the Joint, Torque for the characteristic Frontal for the component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 5. Select CREATE FULL PLOT.
Step 38: Plot the right shoulder frontal plane torques
Select SML_Right_Shoulder for the Joint, Torque for the characteristic Frontal
for the component. Select a low pass butterworth data filter with a cutoff frequency
of 5.0 and an order of 5. Select CREATE FULL PLOT.
Step 39: Plot the left wrist frontal plane torques
Select SML_Left_Wrist for the Joint, Torque for the characteristic Frontal
for the component. Select a low pass butterworth data filter with a cutoff frequency
of 5.0 and an order of 5. Select CREATE FULL PLOT.
Step 40: Plot the right wrist frontal plane torques
Select SML_Right_Wrist for the Joint, Torque for the characteristic Frontal for
the component. Select a low pass butterworth data filter with a cutoff frequency
of 5.0 and an order of 5. Select CREATE FULL PLOT.
Step 41: Animate front view
Select ANIMATION from the sub-menu. Select front view, divide window and select PLAY.
Step 42: Plot the grip torques
In the bottom panel in the post processor, select "Requests" as the Source. Scroll down to the REQ_Hand_Grip_Force, select the U1 component and select ADD CURVES.
Step 43: Animate front view
Select ANIMATION from the sub-menu. Select front view, divide window and select PLAY.
Step 44: Plot the internal club torques at the 1/6 points on the shaft
Use the ADAMS/View plotting tools to plot the magnitude component Shaft_beams. Select Objects as the Source. Select Force as the filter, select the Object as Shaft_beam1, the characteristic as element_torque and the component as magnitude. Do this for each shaft beam element.
Step 45: Turn off skeleton and plot the motion of the club
Set the model display to "none", select front view, divide window and select PLAY.
Step 46: DEMO COMPLETE
Further
This model could be used to explore may aspects of the golf swing including:
- club strain and loading
- wear prediction
- effects of changing the club parameters on the joint torques
- ground reaction forces
|