Human Performance Application -
Golfer
One of the most powerful features of the LifeMOD/BodySIM™ Biomechanics Modeler is the capability to create sophisticated human models which may interface with 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 muscles 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 club head and grip 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/BodySIM™ 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
Begin the ADAMS/View modeling session and select the LifeMOD/BodySIM™ button at the bottom left portion of the screen. 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. In the Build section, select Body, Joints,Posture and Motion Agents. 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 as 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 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 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 APPLY to create the flexible link.
Step 10: Attach the club to the hands.
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
To do Step 10 graphically: (Do one or the other)
Create the 3 markers by using the create marker icon in the Main toolbox.

Name one of the marker ".World.Club_Grip.hands", the second one ".World.SML_Right_Hand.Grip" and the third one ".World.SML_Left_Hand.Grip". All 3 have the same location (0.3598247916, 0.697651211, 0.5148486542) and orientation (0.0, 0.0, 0.0). To be sure of these markers position, it is possible to verify by selecting the marker and choosing the "Modify" option. To rename the markers, right click on the marker of interest and select "Rename".
To create the bushing forces
Select the bushing force icon . Then pick the first body as being SML_Right_Hand and the second body as being the SML_Club_Grip. Select the markers created prior as the location of the bushing. Right click on the bushing and select "Modify". Set the values as in figure 7. You can rename the bushing “.World.Hand_Grip”.

Create a new bushing, the first body is SML_Right_Hand, the second body is SML_Left_Hand. Select the markers created prior as the location of the bushing. Right click on the bushing and select "Modify". Set the values as in figure 8. You can rename the bushing: “.World.Rhand_Lhand”.

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.
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.35559667 &
orientation=0.0, 0.0, 0.0 rel=.World
marker create marker=.World.ground.MARKER_2343 &
location=0.6165542782, 5.5868707173E-002, 0.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
To do Step 11 graphically: (Do one or the other)
Create 2 markers, one on the ".World.SML_Left_Foot" part and the other on the World.ground at this location (0.6165542782, 5.5868707173E-002, 0.35559667).
Create a bushing force; the first body being SML_Left_Foot, the second body is the ground. The location is the markers just created in this step. Select the bushing and modify it. Set the values as in figure 10. You can rename the bushing to: “.World.Left_Foot_GRX”.
Step 12: Create a bushing element between the right foot and the floor.
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
To do Step 12 graphically: (Do one or the other)
Create 2 markers, one on the ".World.SML_Right_Foot" part and the other on the World.ground at this location (0.1305656331, 4.257274312E-002, 0.4558554612) and with this orientation (266.7096912618, 40.7657878536, 92.5480285278).
Create a bushing force; the first body being SML_Right_Foot, the second body is the ground. The location is the markers just created in this step. Select the bushing and modify it. Set the values as in figure 11. You can rename the bushing to: “.World.Right_Foot_GRX”.
Step 13: Create the floor graphics.
Use the following ADAMS/View commands to create the markers and graphics for the ground:
marker create marker=.World.ground.flr &
location=-0.4, 0.0, -0.4 &
orientation=0,0,0 rel=.World
geometry cre shape block &
block_name = .World.ground.floor corner_marker = .World.ground.flr &
diag_corner_coords = 1.5,.01,2
geo att geo=.World.ground.floor color=green
To do Step 13 graphically: (Do one or the other)
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.
Create a geometry using this icon: name it ".World.ground.floor". Place one corner on the ".World.ground.flr" marker, then drag and drop and create a primary block. Modify this block, make sure the corner marker is ".World.ground.flr" and the diagonal corner coordinates should be (1.5,0.01,2).

Select the new floor and change its appearance to green.
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
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)"
To do Step 21 graphically: (Do one or the other)
Select Build-Measure-REQUEST-New. The request Name is : "REQ_Hand_Grip_Force". Select “Define Using Function Expression” and in window F5 write: "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/BodySIM™ panel. Use the Toggle Icons button to toggle the joint bubble graphics.
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 "Results Window" on 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 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/BodySIM™ panel. Use the Toggle Icons button to toggle the joint bubble graphics. Select front view, divide window and select PLAY.
Step 37: Plot the left shoulder frontal plane torques
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 front view, divide window and select PLAY.
Step 42: Plot the grip torques
Use the ADAMS/View plotting tools to plot the U1 component of the REQ_Hand_Grip_Force request.
Step 43: Animate front view
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 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
|