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

Ergonomics Application - Lifting Styles

This simple example examines the effect of lifting heavy objects using a "crouch lift" or a knee dominant lift and and a lift by rotating at the hips.

The shoulder, lumbar, hip and knee torques are compared for each lift.

An inverse dynamics - forward dynamics method is used to first "train" the joints to generate the torques necessary for the human model to lift the objects. Motion capture data for the correct and incorrect lifts are used to provide the target motion.

Features of this model include:

  • Simulation using two sets of motion data
  • Human model holding objects.
  • Inverse dynamics forward dynamics simulations

Sections


Generating the Body Segments, Joints, and Motion Data

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. 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. The parameters are included in the SLF file

Finally, the motion data (MOCAP) for the knee_bend lifting activity 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: Exchange panel to import body and joint parameters and motion data


Figure 2: The resulting model and motion data installed.

Step 1: Bring up 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 body, joints, posture and motion
Select Model Library and Full Body Lifting with Knees from the Model Library. The panel displayed in figure 1 will then list a summary of the contents of the file. Also, in the Build line at the bottom of the file are the components contained in the file. Leave each box checked and select Apply to create the body segments, joints, posture and motion agents.


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 3: Model moved into data cloud (left) After static analysis (center) after synchronization (right).

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

Step 4: Run the equilibrium simulation
Specify the end time of the simulation as 1 second with 100 time steps using the default 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 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.


Create Foot/Floor Attachments

With the model in position, the feet are attached to the floor using ADAMS/View bushing elements. For information on selecting specific model parameters for this section see Choosing Model Parameters.


Figure 4: Attaching the feet of the model to ground using bushing elements

Step 7: Create the left foot contact element
Use the following ADAMS/View commands to create markers on the foot and the floor.

marker create marker=.World.Andy_Left_Foot.ground loc= .2,0,.37 rel= .World
marker create marker=.World.ground.Lfoot loc= .2,0,.37 rel= .World

Use the following ADAMS/View command to create the bushing element.

force create element_like bushing &
bushing_name=.World.BUSH_Lfoot &
i_marker_name=.World.Andy_Left_Foot.ground &
j_marker_name=.World.ground.Lfoot &
stiffness=(1e8(newton/meter)),(1e8(newton/meter)),(1e8(newton/meter)) &
damping=(1e6(newton-sec/meter)),(1e6(newton-sec/meter)),(1e6(newton-sec/meter)) &
tstiffness=1.0E+006,1.0E+006,1.0E+006 &
tdamping=1.0E+004,1.0E+004,1.0E+004

Step 8: Create the right foot contact element
Use the following ADAMS/View commands to create markers on the foot and the floor.

marker create marker=.World.Andy_Right_Foot.ground loc= 0.6, 0, 0.37 rel= .World
marker create marker=.World.ground.Rfoot loc= 0.6, 0, 0.37 rel= .World

Use the following ADAMS/View command to create the bushing element.

force create element_like bushing &
bushing_name=.World.BUSH_Rfoot &
i_marker_name=.World.Andy_Right_Foot.ground &
j_marker_name=.World.ground.Rfoot &
stiffness=(1e8(newton/meter)),(1e8(newton/meter)),(1e8(newton/meter)) &
damping=(1e6(newton-sec/meter)),(1e6(newton-sec/meter)),(1e6(newton-sec/meter)) &
tstiffness=1.0E+006,1.0E+006,1.0E+006 &
tdamping=1.0E+004,1.0E+004,1.0E+004


Merging the Objects Model with the Human Model

An ADAMS/View command file with a pre built model of the objects to be lifted is read into the LifeMOD/BodySIM™ session. The model consists of two parts; left and right mace. Contact forces are created at the locations depicted in the figure to support the objects.


Figure 5: Pre built objects model is merged with the human model.

Step 9: Bring up the import mechanical environment panel
Select XCHANGE in the main-menu and IMPORT MECHANICAL ENVIRONMENT in the sub-menu. Select Mechanical Environment Library and Objects on a Rack as the Model Library. Select Apply to import the system.

Step 10: Create a grip force between the right hand and the object
Use the following ADAMS/View commands to create a new marker on the right hand.

mark cre marker=.World.Andy_Left_Hand.Mace loc=0,-3.1562678451E-003,-3.6112083951E-003 ori=10.1664430808, 92.6448430272,336.1827042313 rel=.World.Andy_left_hand.cm

Use the following ADAMS/View command to create a general force connecting the markers between the left hand and the left object. The force basically creates a spring which is ramped on when the simulation time becomes equivalent to the DV_handtime variable (See the ADAMS/View documentation for more information).

force create direct General_Force &
General_Force = .World.CON_Rhandmace &
j_part_name = .World.MaceR &
ref_marker_name = .World.MaceR.hand &
x_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DX(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand)-",&
".1*DV_handstiff*VX(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand,MaceR.hand))" &
y_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DY(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand)-",&
".1*DV_handstiff*VY(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand,MaceR.hand))" &
z_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DZ(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand)-",&
".1*DV_handstiff*VZ(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand,MaceR.hand))" &
x_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AX(Andy_Right_Hand.Mace,MaceR.hand)-",&
".1*DV_handstiff*WX(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand))" &
y_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AY(Andy_Right_Hand.Mace,MaceR.hand)-",&
".1*DV_handstiff*WY(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand))" &
z_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AZ(Andy_Right_Hand.Mace,MaceR.hand)-",&
".1*DV_handstiff*WZ(Andy_Right_Hand.Mace,MaceR.hand,MaceR.hand))"

Step 11: Create a grip force between the left hand and the object
Use the following ADAMS/View commands to create a new marker on the foot and a marker on the pedal.

mark cre marker=.World.Andy_Right_Hand.Mace loc=2.3415735272E-002,1.3418585128E-003,1.0422001292E-002 ori=354.9766022803,89.7909757831,334.0069474889 rel=.World.Andy_right_hand.cm

Use the following ADAMS/View command to create a general force connecting the markers between the right hand and the right object. The force basically creates a spring which is ramped on when the simulation time becomes equivalent to the DV_handtime variable (See the ADAMS/View documentation for more information).

force create direct General_Force &
General_Force = .World.CON_Lhandmace &
j_part_name = .World.MaceL &
ref_marker_name = .World.MaceL.hand &
x_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DX(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand)-",&
".1*DV_handstiff*VX(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand,MaceL.hand))" &
y_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DY(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand)-",&
".1*DV_handstiff*VY(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand,MaceL.hand))" &
z_force_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*DZ(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand)-",&
".1*DV_handstiff*VZ(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand,MaceL.hand))" &
x_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AX(Andy_Left_Hand.Mace,MaceL.hand)-",&
".1*DV_handstiff*WX(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand))" &
y_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AY(Andy_Left_Hand.Mace,MaceL.hand)-",&
".1*DV_handstiff*WY(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand))" &
z_torque_function = "step(time,DV_handtime,0,2.0,1)*",&
"(-DV_handstiff*AZ(Andy_Left_Hand.Mace,MaceL.hand)-",&
".1*DV_handstiff*WZ(Andy_Left_Hand.Mace,MaceL.hand,MaceL.hand))"


Running the Inverse-Dynamics Simulation for the Knee_Bend Lift

With the human model in the proper position, the model connected to the ground at the feet and a gripping force installed at the hands, an inverse-dynamics simulation may be performed. In this phase, the motion agents will drive the model while the learning elements in the joints record the joint angle histories. The learning elements will be replaced with active elements in a subsequent forward dynamics simulation.


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

Step 12: Bring up the motion agents parameters panel
Select _PARAMETERS on the main-menu and MOTION AGENTS on the sub-menu.

Step 13: Increase the weighting on the feet motion agents
Set the weighting coefficients to 10 for RLATM, RHEEL, R2MET, LATM, LHEEL, L2MET. This will cause a greater spring force at those locations which will increase the contribution of the feet agents to the motion of the model.

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

Step 15: Run the simulation
Run the simulation 3.2 seconds and 160 time steps using the "Default" integrator settings. Select ANALYZE.

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


Preparing the Model for Forward Dynamics Simulation for the Knee_Bend Lift

After the inverse-dynamics simulation is performed the joint angle histories are now recorded from the learning elements each joint. The training elements are then replaced with active elements utilizing the recorded angle histories for the forward-dynamics simulation. For information on selecting specific model parameters for this section see Choosing Model Parameters.


Figure 7: Panel to update the passive learning joint elements with active elements

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

Step 18: Install ACTIVE contractile elements on muscles
Select Install Trained Driver Rotational Elements light bulb to bring up the sub-panel and select Apply.


Running the Forward Dynamics Simulation

With the active elements installed on the joints, the model is now ready for forward dynamics simulation.


Figure 8: Disable motion agents and run the forward dynamics simulation

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

Step 20: Disable motion agents and run the forward dynamics simulation
Select "Disable Motion Agents". Run the simulation 3.0 seconds and 150 time steps using the "Default" integrator settings. Select ANALYZE.

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


Set up the Model for the No_Knee_Bend Lift

Motion capture data for the no_knee_bend lift is read into LifeMOD/BodySIM™ and the indirect dynamics forward dynamics process is repeated.


Figure 9: Update the joint formulations with passive (TRAINABLE) elements

Step 22: Save the first analysis
Select SAVE ANALYSIS and enter the name Knee_Bend. Select GO.

Step 23: Bring up the MOCAP data import panel
Select MOTION on the main-menu and IMPORT MOTION CAPTURE DATA on the sub-menu.

Step 24: Read in the motion capture data for the no_knee_bend lift
Select Motion Library and Full_Body:Lifting with Hips for the Motion Library SLF File. Select Apply to read the data.

Step 25: Bring up the motion edit base set panel
Select MOTION on the main-menu and EDIT BASE SET on the sub-menu.

Step 26: Exchange the motion data in the existing motion agents
Enter No_Knee_Bend as the data prefix and select APPLY.

Step 27: Bring up the joints edit base set panel
Select JOINTS on the main-menu and TRAINING on the sub-menu.

Step 28: Update joint formulation with passive (Training) elements
Select Install Trainable Passive Joint Elements to reinstall the joint training elements.


Running the Inverse-Dynamics Simulation for the No_Knee_Bend Lift

With the passive (trainable) elements installed on the joints, an inverse-dynamics simulation may be performed. In this phase, the motion agents will drive the model while the trainable elements in the joints record the joint angle histories. The trainable elements will be replaced with trained active elements in a subsequent forward dynamics simulation. Also, the position of the objects to be lifted must be adjusted due to minor inconsistencies between both sets of motion data.


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

Step 29: Move the objects into place
Use the following ADAMS/View commands to move the object groups into position:

move translation group=.World.GRP_MaceR csmarker=.World.ground.Andy_GLOBAL c1=((-10cm)) c2=0.0 c3=(-10cm)
move translation group=.World.GRP_MaceL csmarker=.World.ground.Andy_GLOBAL c1=((10cm)) c2=0.0 c3=(-10cm)

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

Step 31: Run the simulation
Run the simulation 3.2 seconds and 160 time steps using the "Default" integrator settings. Select ANALYZE.

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


Preparing the Model for Forward Dynamics Simulation for the No_Knee_Bend Lift

After the inverse-dynamics simulation is performed the joint angle histories are now recorded from the trainable elements each joint. The trainable elements are then replaced with trained active elements utilizing the recorded angle histories for the forward-dynamics simulation.


Figure 11: Panel to update the passive learning joint elements with active elements

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

Step 34: Install ACTIVE contractile elements on muscles
Select Install Trained Driver Rotational Elements light bulb to bring up the sub-panel and select Apply.


Running the Forward Dynamics Simulation for the No_Knee_Bend Lift

With the trained active elements installed on the joints, the model is now ready for forward dynamics simulation.


Figure 12: Disable motion agents and run the forward dynamics simulation

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

Step 36: Disable motion agents and run the forward dynamics simulation
Select "Disable Motion Agents". Run the simulation 3.0 seconds and 150 time steps using the "Default" integrator settings. Select ANALYZE.

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

Step 38: Save the second analysis
Select SAVE ANALYSIS and enter the name No_Knee_Bend. Select GO.


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:

  • Compare joint torques between the two analyses
  • Compare joint kinematics


Figure 13: Thoracic torque for both Knee_Bend and No_Knee_Bend lifts


Figure 14: Right hip torque for both lifts


Figure 15: Right shoulder sagittal plane torque for both lifts


Figure 16: Right knee sagittal plane torque for both lifts


Figure 17: Animation frames display differences in lifting techniques


Figure 18: Animation frames displaying the scaling joint torque graphics

 


Figure 19: Results panel and location of the button to toggle between the model window and the post processor.

Step 39: Bring up results panel
Select RESULTS in the main-menu and DATA DISPLAY in the sub-menu. Select Joints as the Data Type and the post processor button.

Step 40: Plot the thoracic muscle torque for the Knee_Bend case
Specify the .world.knee_Bend analysis. Select Andy_Thoracic for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Select Create Full Plot to create the data curve.

Step 41: Plot the thoracic muscle torque for the No_Knee_Bend case
Specify the World .No_Knee_Bend analysis. Select Andy_Thoracic for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Select Create Full Plot to create the data curve.

Step 42: Animate Knee_Bend case side view
Specify the .World.Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 43: Turn on the Joint Torque Graphics
Turn on the joint graphics and select the external body representation as none and the internal as stick 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. See figure 18 for a display of the scaling joint torque graphics.

Step 44: Animate the Knee_Bend case, side view
Select right view and select PL AY. Observe the scaling joint torque bubbles.

Step 45: Animate No_Knee_Bend case side view
Turn of Joint Torque Scaling, and select skeleton as the internal representation in the BodySIM Display Toolbox. Specify the .World .No_Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 46: Turn on the Joint Torque Graphics
Turn on the joint graphics and select the external body representation as none and the internal as stick 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. See figure 18 for a display of the scaling joint torque graphics.

Step 47: Animate the No_Knee_Bend case, side view
Select right view and select PL AY. Observe the scaling joint torque bubbles.

Step 48: Superimpose both cases for animation
In the results panel select Compare Cases and .world.no_knee_bend for Case 1 and .world.knee_bend for Case 2. Select PLAY.

Step 49: Plot the hip muscle torque for the Knee_Bend case
Select DATA DISPLAY in the sub-menu. Specify the .world.knee_Bend analysis. Select Andy_Right_Hip for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Check New Plot and select Create Full Plot to create the data curve.

Step 50: Plot the hip muscle torque for the No_Knee_Bend case
Specify the World .No_Knee_Bend analysis. Select Andy_Right_Hip for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Select Create Full Plot to create the data curve.

Step 51: Animate Knee_Bend case side view
Select ANIMATION in the sub-menu. Specify the .World.Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 52: Animate No_Knee_Bend case side view
Specify the .World .No_Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 53: Superimpose both cases for animation
In the results panel select Compare Cases and .world.no_knee_bend for Case 1 and .world.knee_bend for Case 2. Select PLAY.

Step 54: Plot the KNEE muscle torque for the Knee_Bend case
Select DATA DISPLAY in the sub-menu. Specify the .world.knee_Bend analysis. Select Andy_Right_Knee for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Check New Plot and select Create Full Plot to create the data curve.

Step 55: Plot the hip muscle torque for the No_Knee_Bend case
Specify the World .No_Knee_Bend analysis. Select Andy_Right_Knee for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Select Create Full Plot to create the data curve.

Step 56: Animate Knee_Bend case side view
Select ANIMATION in the sub-menu. Specify the .World.Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 57: Animate No_Knee_Bend case side view
Specify the World .No_Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 58: Superimpose both cases for animation
In the results panel select Compare Cases and .world.no_knee_bend for Case 1 and .world.knee_bend for Case 2. Select PLAY.

Step 59: Plot the right shoulder torque for the Knee_Bend case
Select DATA DISPLAY in the sub-menu. Specify the .world.knee_Bend analysis. Select Andy_Right_Shoulder for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Check New Plot and select Create Full Plot to create the data curve.

Step 60: Plot the right shoulder torque for the No_Knee_Bend case
Specify the World .No_Knee_Bend analysis. Select Andy_Right_Hip for the joint, the torque characteristic and the sagittal component. Select a low pass butterworth data filter with a cutoff frequency of 5.0 and an order of 1. Select Create Full Plot to create the data curve.

Step 61: Animate Knee_Bend case side view
Select ANIMATION in the sub-menu.Specify the .World.Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 62: Animate No_Knee_Bend case side view
Specify the World .No_Knee_Bend analysis. Select right view, frame increment = 2, divide window. Select PLAY.

Step 63: Superimpose both cases for animation
In the results panel select Compare Cases and .world.no_knee_bend for Case 1 and .world.knee_bend for Case 2. Select PLAY.

Step 64: DEMO COMPLETE


Further

This model could be further refined:

  • to examine the effects on full-body muscles
  • to model grasping in greater detail
  • to evaluate effects of muscle force weakening

Acknowledgement

A special thanks for furnishing the data for this model to:

John Jolly
University of Pittsburgh
Neuromuscular Research Laboratory
http://www.pitt.edu/~neurolab