Tutorials
Golfing
Bike
Dancing
Bungee Jump
Muscle Relocation
Antagonistic Muscles
Hip Replacement
Detailed Knee
Detailed Spine
Rehabilitation Machine
Gait Analysis
Walking
Lifting Styles
Bed Settling
Fighting
Car Crash
Fall
Grasping
NeckSIM:Whiplash
Tennis

Human Performance Application -
Tennis

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 tennis racket.

For this example a full body human model is scaled to a specific tennis player. A tennis racket is imported from the model library. Connection forces between the hands of the model and the grip of the racket are created.

A forward swing complete with ball impact is simulated using the motion capture data for the human subject. A forward dynamics simulation is performed with the joints driving the activity.

The objective of this exercise is to examine the sequence of joint torques necessary to complete the swing.

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.


Figure 1: Building the human model via SLF file


Figure 2: The resulting model with the joints, posture and motion data installed.

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 DATA.

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 Tennis " 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.


Importing the Tennis Racket


Figure 3: The resulting model after the tennis racket is imported from the model library before it is moved into position (left) and after moving it into position (right).

 

Step 3: Bring up the import mechanical environment panel
Select IMPORT MECHANICAL ENVIRONMENT in the sub-menu.

Step 4: Import the tennis racket
Select Tennis Racket as the Model Library SLF File and select Apply to create the tennis racket.

Step 5: Move the racket into position
Move the racket into position as displayed in the figure above by using the ADAMS/View move tools or by entering the following ADAMS/View command:

part modify rigid_body name_and_position part_name = .World.Racket &
location = -185, -120, -60 &
orientation = 90,90,0 &
relative_to = .World

Step 6: Attach the racket to the hand
Use the following ADAMS/View commands to create markers and a bushing between the racket and the right hand of the model:

marker create marker=.World.Racket.connect &
location=-171. -132, 35&
orientation=00.0, 00.0, 00.0

marker create marker=.World.Jenn_Right_Hand.connect &
location=-171. -132, 35&
orientation=00.0, 00.0, 00.0

force create element_like bushing &
bushing_name=.World.Hand_Grip &
i_marker_name=.World.Racket.connect &
j_marker_name=.World.Jenn_Right_Hand.connect &
stiffness=1.0E+008,1.0E+008,1.0E+008 &
damping=1.0E+006,1.0E+006,1.0E+006 &
tstiffness=1.0E+008,1.0E+008,1.0E+008 &
tdamping=1.0E+006,1.0E+006,1.0E+006

Step 7: Create the specific data request
Use the following commands to create a data request for the forces between the right hand and the grip:

output_control create request request_name = REQ_Hand_Grip_Force &
f5 = "BUSH(.World.hand_grip, 0, 1, 0)"

 

 


Apply an Augment Motion Agent Set to the Tennis Racket


Figure 4: Reading in the augmented marker set for the tennis racket. The top picture displays the locations of the MOCAP targets when the video capture was performed. The panel below is used to assign the imported data to the motion agents.

Step 8: Bring up the motion file import panel
Select MOTION in the main-menu and IMPORT MOTION CAPTURE DATA in the sub-menu.

Step 9: Import the tennis racket motion file from the motion library
Select Motion Library and Environment:Tennis Racket Motion as the Motion Library SLF File. Set the Data Prefix to racket and select Apply to bring in the data.

Step 10: Bring up the motion create base set panel panel
Select CREATE BASE SET from the sub-menu and augmentation Marker Set.

Step 11: Create the augmented motion agent set on the tennis racket
Select AUGMENT MOTION AGENT SET from the sub-menu. Select Enter Motion Agent Locations on Parts. Enter -167.0, -124.0, 273.0 for part_1, -167.0, -223.0, 588.0 for part_2 and -167.0, -4.0, 588.0 for part_3. These are marker locations on the tennis racket recorded from the the experiment in global space. Enter 1e6 for the translational stiffness and 1e4 for the translational damping. Select the data prefix of racket, check global and select Apply to create the three motion agents on the racket.

 


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.


Figure 5: Model before equilibrium (left) and after (right).

Step 12: Bring up analyze panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu.

Step 13: 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 14: 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 15: Align the body markers with data
After the 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.


Creating the Foot-Floor Contacts

The contact ellipsoids automatically created at the time of segment generation, will now be used to create the foot-floor contact elements. For information on selecting specific model parameters for this section see Choosing Model Parameters.


Figure 6: Panel used to create the ellipsoid-plane contact force formulations between the contact ellipsoids of the feet and the ground.

Step 16: Create the ground contact marker
Create a marker to designate the location and orientation of the ground (z-axis pointing normal to surface) using the following ADAMS/View commands.
marker cre marker=.World.ground.flr loc= 264.0, 43.0, -744.0 ori= 180,90,90 rel= .World

Step 17: Bring up the contact panel
Select CONTACTS on the main-menu and CREATE BASE SET on the sub-menu.

Step 18: Create the contact forces between the feet and the floor
Check "Create Contact Surface Graphics", set thickness to 10, X-length to 2000 and Y-length to 2000. Check force vectors to create scaled force graphics during animation and check simple so as to create only two vectors instead of one per contact element on the feet. Select Right_Foot_Multiple and Left_Foot_Multipe and select Apply to create the contact elements.


Running the Inverse-Dynamics Simulation

With the model in the proper position, the tennis racket imported and attached to the hands of the model, the motion capture data read in for both the body and the racket, 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 tennis 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.


Figure 7: Successive animation frames from the inverse-dynamics simulation

Step 19: Bring up the analyze panel
Select ANALYZE from the main-menu and DYNAMICS from the sub-menu.

Step 20: Adjust the gravity settings and run the dynamics simulation
Check the gravity box and set the y-value to -9806.65. Select "Robust" integrator settings. Set the simulation end time to 2 seconds with 200 times steps. Specify the default integrator settings and select ANALYZE.

Step 21: 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.


Figure 8: Tracker agent at the pelvis center


Figure 9: Panel set to create the tracker agent.

Step 22: Bring up the joint training panel
Select JOINTS from the main-menu and TRAINING from the sub-menu.

Step 23: 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 24: Bring up the motion agent tracker panel
Select MOTION from the main-menu and CREATE TRACKER AGENT from the sub-menu.

Step 25: Create the tracking agent
Specify the stiffness/damping parameters as in Figure 9. Specify the translational freedoms as free and the rotational freedoms as driven. Select APPLY.

Step 26: Create the specific data requests
Create the data request to output the stem-cup forces and 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)"

 

 


Importing the Tennis Ball


Figure 10: The resulting model after the tennis ball is imported from the model library and moved into position.


Figure 11: The panel and parameters used to create the ball to floor contact forces.


Figure 12: The panel and parameters used to create the ball to racket contact forces.

Step 27: Bring up the Import Mechanical Environment panel
Select XCHANGE from the main-menu and select IMPORT MECHANICAL ENVIRONMENT in the sub-menu. Select Mechanical Environment Library

Step 28: Import the tennis ball from the library
Select Tennis Ball as the Model Library SLF File and select Apply to create the tennis racket.

Step 29: Move the tennis ball into position
Move the tennis ball into position as displayed in the figure above by using the ADAMS/View move tools or by entering the following ADAMS/View command:

part modify rigid_body name_and_position part_name = .World.Ball &
location = -100.0, 1806.0, 172.0 &
orientation = 0,0,0 &
relative_to = .World

Step 30: Provide initial velocity conditions for the ball
Using the following ADAMS/View command to apply initial velocity conditions to the ball:

part modify rigid initial_velocity part= .World.Ball vy = -1400.0

Step 31: Bring up the single contact panel
Select CONTACTS on the main-menu and CREATE SINGLE on the sub-menu.

Step 32: Create the contact forces between the ball and the floor
Enter the parameters listed in figure 11 to create the solid-solid contact between the .world.ball.ellipsoid and the .world.ground.srffloor_4 geometries.

Step 33: Create the contact forces between the ball and the racket
Enter the parameters listed in figure 12 to create the solid-solid contact between the .world.ball.ellipsoid and the .world.racket.plate geometries.

 


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.


Figure 13: Panel set to run the forward-dynamics simulation

Step 34: Bring up the analysis panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu.

Step 35: Disable the motion agents and run the forward dynamics simulation
Run the simulation 2 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


Figure 14: Data for thoracic and lumbar twist torques and the frontal plane shoulder torques


Figure 15: Animation frames of the forward-dynamics simulation


Figure 16: Results panel set up to plot the right wrist joint torques

Step 36: Display animation
Use the ADAMS/View toolbox to animate the model.

Step 37: Display simulation with skin/skel model.
Select Skin as the external representation and Skeleton as the internal representation in the BodySIM Display Toolbox panel. Use the ADAMS/View toolbox to animate the model.

Step 38: 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 39: Bring up results panel
Select RESULTS in the main-menu and ANIMATION in the sub-menu.

Step 40: Turn on the joint torque scaling
Turn on the local scaling of the joint graphics by selecting Scale Joint/Tissue Graphics, Joints, Scale Globally and the light bulb to scale the muscle graphics. Turn on the joint graphics using the BodySIM Display Toolbox and select Joints-Graphics and on.

Step 41: Animate the stick model
Use the ADAMS/View toolbox to animate the model. Observe the scaling joint torque bubbles.

Step 42: 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 43: Bring up the post processor window
Select DATA DISPLAY in the sub-menu and Joints as the Data Type. Select "Results Window" on the results panel to bring up the ADAMS results post processor window.

Step 44: Plot the thoracic twist torques
Select Jenn_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 PLOT CURVE.

Step 45: Plot the lumbar twist torques
Select Jenn_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 46: Animate front view
Select ANIMATION in the sub-menu. Select front view, divide window and select PLAY.

Step 47: Animate right view
Select Skin as the external representation and Skeleton as the internal representation in the BodySIM Display Toolbox. Select left view, divide window and select PLAY.

Step 48: Turn on stick view and joint scaling graphics
In order to view the torques in the model clearly, set the external representation to none and the internal representation to Stick and toggle the Joint Graphics on using the BodySIM Display Toolbox. Turn on the local scaling of the joint graphics by selecting Scale Joint/Tissue Graphics, Joints, Scale Globally and the light bulb to scale the muscle graphics. Select left view, divide window and select PLAY.

Step 49: Plot the left shoulder frontal plane torques
Select Data Display in the sub-menu. Select Jenn_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 50: Plot the right shoulder frontal plane torques
Select Jenn_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 51: Plot the left wrist frontal plane torques
Select Jenn_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 PLOT CURVE.

Step 52: Plot the right wrist frontal plane torques
Select Jenn_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 53: Animate left view
Select ANIMATION from the sub-menu. Select left view, divide window and select PLAY.

Step 54: Plot the grip torques
Turn off joint graphics using the BodySIM Display Toolbox. Use the ADAMS/View plotting tools to plot the U1 component of the REQ_Hand_Grip_Force request.

Step 55: Animate front view
Select front view, divide window and select PLAY.

Step 56: Animate front view with trail frames
Select trail frames, select trace marker of .world.ball.cm, select front view and select PLAY.

Step 57: Animate left view with train frames.
Select trail frames, select trace marker of .world.ball.cm, select left view and select PLAY.

Step 58: 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