Orthopedics Application - Cervical Spine
The LifeMOD/BodySIM™ Biomechanics Modeler creates a standard 19-segment human model representation by default, however, the user may create more detailed human models using the basic ADAMS/View tools and specific LifeMOD/BodySIM™ tools. This example involves the augmentation of the basic 19-segment model to include a detailed spine model. The neck is flexed and extended point-to-point muscle forces. Inter-vertebrae compression loads are then examined.
To simply capture the flexion and extension motion of the neck, Motion Agents will be added to the model. The motion will have the effect of simply "pulling and pushing" the head to drive it through its motion, all the while the contraction of the muscles will be recorded for the subsequent forward-dynamics simulation.
Features of this model include:
- Detailed body segments (cervical spine).
- Point-to-point muscle forces
- Inverse-dynamics, forward-dynamics simulations.
Sections
Generating the Body Segments
The body segments for the complete body are generated first, then the model is reduced to focus on the cervical spine. The body is created using the GeBod database for a male who is 70 inches tall weighing 170 lbs.
Step 1: Bring up segments panel and set fields
Begin the ADAMS/View modeling session and select the LifeMOD/BodySIM™ button at the bottom left portion of the screen. Select SEGMENTS from the main-menu and CREATE BASE SET from the sub-menu.
Step 2: Create the body
Generate a full body model using the GeBod database. Select a 170 lbs, 70 inch tall male. Select OK, then select Create Body Parameter Table to build the human segment measurement table, and then select Create Human Model From Parameter Table to build the model.
Reducing the Model
The segments of the full body model are reduced to concentrate on the head, neck and upper_torso. The upper_torso will be fixed to ground in subsequent steps.
Step 3: Bring up segment delete panel
Select SEGMENTS in the main-menu and DELETE in the sub-menu.
Step 4: Delete the extra segments
Use the body segment delete panel to remove the segments.
Generating the Spinal Joints
In this step, simple rotational joints are generated for the arms, thoracic and lumbar spinal regions.
Step 5: Bring up the joint create panel
Select JOINTS in the main-menu and CREATE BASE SET in the sub-menu
Step 6: Create passive spring damper joints (with joint limits) for the model
Select the light bulb next to Prepare Joints with trainable Passive Elements to bring up the sub-panel.
Step 7: Set the parameterized stiffness and damping values
Specify the nominal joint stiffness to be 1000 and the damping to be 100.
Step 8: Create passive spring damper joints (with joint limits) for the model
Check the Spinal, Left Arm and Right Arms and select "Modify" to bring up the joint set matrix panels.
Step 9: De-select the neck and create the joints for the spine
Deselect the upper and lower neck joint sets (see figure 4) and select "Apply"
Step 10: Create the joint sets for the arms
Select "Apply" on both left and right arm panels.
Creating Passive Muscle Forces
The next step in the process is to create soft tissues (muscles) on the model. LifeMOD/BodySIM™ automatically creates a set of basic muscle groups for the body. Muscles consist of training elements or trained elements. The training elements are simple data collectors which record the contraction history of the muscle during an activity when the model is moved using external drivers such as motion agents. The trained elements use the contraction data in a PD-Servo linear force actuator to induce the force on the skeleton the replicate the recorded motion. Muscle parameters such as physiological cross sectional area (pCSA) and maximum tissue stress are used to calculate the maximum force potential of the particular muscle. LifeMOD/BodySIM™ contains a database of pCSA values for each muscle and is scaled accordingly based on the input body parameters (ht, wt, gender and age). Further, the force output of the muscle may be scaled from 0% to 200% to change the contributions of each particular muscle.
Step 11: Bring up the soft tissues create base set panel panel
Select SOFT TISSUES on the main-menu and CREATE BASE SET on the sub-menu.
Step 12: Set the fields for the muscle generation
Select the light bulb to bring up the panel displayed in figure 5. Set the muscle tone multiplier to be 100%, the tissue stress to be 259 lbs/in2 and the muscle resting load to be 0.0 lbs.
Step 13: Generate the spinal muscle set
Select Execute the create the spinal muscle set as seen in Figure 6.
Refining the Neck Segment
In this step, the standard single segment representing the neck or c3-c7 vertebrae is removed and neck is refined to include a separate body for each vertebra. Inter-vertebrae joints are created.
Step 14: Edit the individual vertebrae
Change view and zoom in to focus on the vertebrae
Step 15: Bring up the segment create single panel
Select SEGMENTS on the main-menu and CREATE SINGLE on the sub-menu
Step 16: Create the C3 vertebrae segment
Set the segment name to C3 and the CM location to 0.0, 25.4, -1.0 and orientation of 0, 0, 0. Estimate mass properties using the default human tissue density and a bounding ellipsoid of x-length = 4, y-length=1 and z-length=4. For the graphics, select existing geometry of .World.Casey_Neck.Skel_c3. Select APPLY.
Step 17: Create the C4 vertebrae segment
Set the segment name to C4 and the CM location to 0.0, 24.5, -1.0 and orientation of 0, 3.0, 0. Estimate mass properties using the default human tissue density and a bounding ellipsoid of x-length = 4, y-length=1 and z-length=4. For the graphics, select existing geometry of .World.Casey_Neck.Skel_c4. Select APPLY.
Step 18: Create the C5 vertebrae segment
Set the segment name to C5 and the CM location to 0.0, 23.5, -0.9 and orientation of 0, 4.0, 0. Estimate mass properties using the default human tissue density and a bounding ellipsoid of x-length = 4, y-length=1 and z-length=4. For the graphics, select existing geometry of .World.Casey_Neck.Skel_c5. Select APPLY.
Step 19: Create the C6 vertebrae segment
Set the segment name to C6 and the CM location to 0.0, 22.5, -1.0 and orientation of 0, 4.0, 0. Estimate mass properties using the default human tissue density and a bounding ellipsoid of x-length = 4, y-length=1 and z-length=4. For the graphics, select existing geometry of .World.Casey_Neck.Skel_c6. Select APPLY.
Step 20: Create the C7 vertebrae segment
Set the segment name to C7 and the CM location to 0.0, 21.5, -1.1 and orientation of 0, 9.0, 0. Estimate mass properties using the default human tissue density and a bounding ellipsoid of x-length = 4, y-length=1 and z-length=4. For the graphics, select existing geometry of .World.Casey_Neck.Skel_c7. Select APPLY.
Reassigning Muscle Attachments
With the new vertebrae segments created, the muscle attachments to the original neck segment must be reassigned to the new vertebra segments. The physical attachment locations will remain the same.
Step 21: Bring up the soft tissues edit panel
Select SOFT TISSUES in the main-menu and EDIT PROPERTIES in the sub-menu.
Step 22: Reassign the Right Scalenus Posterior attachment
Use cursor to select the attachment .World.Casey_neck.RtScalPos_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 23: Reassign the Left Scalenus Posterior attachment
Use cursor to select the attachment .World.Casey_neck.LtScalPos_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 24: Reassign the Right Scalenus Medius attachment
Use cursor to select the attachment .World.Casey_neck.RtScalMed_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 25: Reassign the Left Scalenus Medius attachment
Use cursor to select the attachment .World.Casey_neck.LtScalMed_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 26: Reassign the Right Scalenus Anterior attachment
Use cursor to select the attachment .World.Casey_neck.RtScalAnt_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 27: Reassign the Left Scalenus Anterior attachment
Use cursor to select the attachment .World.Casey_neck.LtScalAnt_ell, and enter the segment .World.Casey_C5 to reassign the attachment to. Select APPLY.
Step 28: Reassign the Left Splenius Cervicis attachment
Use cursor to select the attachment .World.Casey_neck.LtSPLCerv_ell, and enter the segment .World.Casey_C7 to reassign the attachment to. Select APPLY.
Step 29: Reassign the Right Splenius Cervicis attachment
Use cursor to select the attachment .World.Casey_neck.RtSPLCerv_ell, and enter the segment .World.Casey_C7 to reassign the attachment to. Select APPLY.
Creating the Cervical Spine Joints
Non-standard joints are created at the effective joint center between the vertebrae for this example. For this example the axis and the atlas bones are not used. The skull is joined directly to the C3 vertebrae. For this simulation the user will go through the exercise of creating kinematic joints, however, bushings or other force elements could be used to create the relationship between the bones. For more complex interaction representing disc physics, bushing forces could be used to represent the compliant relationship between the vertebrae via the disk.
Step 30: Create markers between each vertebrae segment
Create the markers using the following ADAMS/View commands:
marker crea marker=.World.Casey_C3.m1 loc=0.0, 25.7, -1.1 ori=0,0,0 rel=.World
marker crea marker=.World.Casey_C4.m1 loc=0.0, 24.9, -1.1 ori=0,0,0 rel=.World
marker crea marker=.World.Casey_C5.m1 loc=0.0, 23.8, -1.2 ori=0,0,0 rel=.World
marker crea marker=.World.Casey_C6.m1 loc=0.0, 22.8, -1.25 ori=0,0,0 rel=.World
marker crea marker=.World.Casey_C7.m1 loc=0.0, 22., -1.2 ori=0,0,0 rel=.World
marker crea marker=.World.Casey_Upper_Torso.m1 loc=0.0, 21.3, -1.3 ori=0,0,0 rel=.World
Step 31: Bring up the segments delete panel.
Select SEGMENTS from the main-menu and DELETE from the sub-menu.
Step 32: Delete the original neck segment
Check the Neck box to delete the original base neck segment.
Step 33: Bring up the create single joint panel
Select JOINTS from the main-menu and CREATE SINGLE from the sub-menu.
Step 34: Create a joint between the head and the C3 vertebrae
Set the inboard segment to .World.Casey_C3 and the outboard segment to .world.Casey_Head and the reference axes to .World.Casey_C3.m1. Set X, Y and Z axes to passive with with a stiffness (k) of 0.5 and damping value (c) of 5 + limit of 45 and a - limit of 45 and a bump stiffness of 1e6. Select APPLY.
Step 35: Create a joint between the C3 and C4 vertebrae
Set the inboard segment to .World.Casey_C4 and the outboard segment to .world.Casey_C3 and the reference axes to .World.Casey_C4.m1. Select APPLY.
Step 36: Create a joint between the C4 and C5 vertebrae
Set the inboard segment to .World.Casey_C5 and the outboard segment to .world.Casey_C4 and the reference axes to .World.Casey_C5.m1. Select APPLY.
Step 37: Create a joint between the C5 and C6 vertebrae
Set the inboard segment to .World.Casey_C6 and the outboard segment to .world.Casey_C5 and the reference axes to .World.Casey_C6.m1. Select APPLY.
Step 38: Create a joint between the C6 and the C7 vertebrae
Set the inboard segment to .World.Casey_C7 and the outboard segment to .world.Casey_C6 and the reference axes to .World.Casey_C7.m1. Select APPLY.
Step 39: Create a joint between the C7 and the Upper_Torso vertebrae
Set the inboard segment to .World.Casey_Upper_Torso and the outboard segment to .world.Casey_C7 and the reference axes to .World.Casey_Upper_Torso.m1. Select APPLY.
Adding Motion Agents to the Human Model
The model, as it exists, is passive and must be driven or manipulated with an external force. To drive the model to capture the simple flexion and extension motion of the neck, Motion Agents will be added to the model. The motion will have the effect of simply "pulling and pushing" the head to drive it through its motion, all the while the contraction of the muscles will be recorded for the subsequent forward-dynamics simulation.
Step 40: Create a spline using data from Figure 11.
Create the spline using the ADAMS/View command:
data_element create spline &
spline=.World.Casey_SPLINE_1 &
x=0.0, 1, 2, 3, 4, 5, 6, 7, 8 &
y=0.0, 3, 6, 3, 0, -3, -6, -3, 0 & linear_extrapolate=no &
units=no_units
Step 41: Bring up motion agent create panel
Select MOTION on the main-menu and CREATE SINGLE AGENT on the sub-menu.
Step 42: Create motion agent on head
Select Casey_Head for the body segment. Use the Manually Select Location agent positioning method with a location of 0.0, 32.6, -0.9. Set the parameters as in Figure 12. Set all dof's to free except for the z-dof which is set to Driven referring to the Casey_Spline_1 created in the prior step.
Running the First Inverse-Dynamics Simulation
With the model developed, complete with passive muscle groups and motion agents a inverse-dynamics simulation may be performed to capture the contraction of the muscles for the flexion-extension activity.
Step 43: Create a fixed joint between the upper_torso and ground
Use the following ADAMS/View commands to create a fixed joint between the upper_torso and ground:
marker create marker=.World.Casey_Upper_Torso.MARKER_878 loc=-1.2086648665, 13.1644132682, -3.3323534021 ori=270.0, 90.0, 90.0
marker create marker=.World.ground.MARKER_879 loc=-1.2086648665, 13.1644132682, -3.3323534021 ori=270.0, 90.0, 90.0
constraint create joint Fixed joint_name=.World.Casey_JOINT_16 i_marker_name=.World.Casey_Upper_Torso.MARKER_878 j_marker_name=.World.ground.MARKER_879
Step 44: Bring up the analyze panel
Select ANALYZE from the main-menu and DYNAMICS from the sub-menu.
Step 45: Run the dynamics simulation
Set gravity at -386.0885826772 in the y direction and run the simulation for 8 seconds and 200 time steps using the default integrator settings.
Step 46: Display animation
Use the ADAMS/View main toolbox to animate the model.
Running the First Direct-Dynamics Simulation
With the muscle contraction history recorded from the inverse-dynamics simulation, it is now used in linear PD-Servo formulation to produce a force to recreate the motion history. The process entails deactivating the Motion Agents and updating the muscles. For information on selecting specific model parameters for this section see Choosing Model Parameters.
Step 47: Bring up the motion agent delete panel
Select MOTION on the main-menu and DELETE on the sub-menu.
Step 48: Delete all motion agents
Select DELETE ALL on the panel
Step 49: Bring up soft tissue training panel
Select SOFT TISSUES on the sub-menu and TRAINING on the panel.
Step 50: Install ACTIVE contractile element
Select the light bulb to bring up the INSTALL TRAINED LINEAR DRIVER ELEMENTS panel.
Step 51: Set fields and update joints
Specify 1e6 as the proportional gain and 1e4 as the derivative gain. These values control how well the PD-servo actuators will track the desired contraction at each time step in the analysis. Note that the individual muscle will not produce a force greater than the physiological cross section area (pCSA) times the maximum tissue stress.
Step 52: Bring up the analyze panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu.
Step 53: Run the dynamics simulation
Set gravity at -386.0885826772 in the y direction and run the simulation for 4 seconds and 400 time steps using the default integrator settings.
Step 54: Bring up the results panel.
Select RESULTS on the main-menu and ANIMATION on the sub-menu.
Step 55: Turn muscle graphics scaling on
Turn on the global scaling of the muscle graphics by selecting Scale Joint/Tissue Graphics, Tissues, Scale Globally and the light bulb to scale the muscle graphics.
Step 56: Display animation
Select left view and select the right arrow button to play the animation.
Step 57: Turn off muscle scaling
Turn off the light bulb under Animation Scaling Graphics.
Running the Second Inverse-Dynamics Simulation
A second simulation case is performed using a different head motion. The passive elements are restored to the muscle tissues and the motion agent is created with new data to move the head from side to side.
Step 58: Bring up the tissue training panel
Select SOFT TISSUES from the main-menu and TRAINING from the sub-menu.
Step 59: Restore the TRAINING contractile element on the muscles
Locate Install TRAINABLE element and select the checkmark.
Step 60: Bring up the motion agent create panel
Select MOTION from the main-menu and CREATE SINGLE AGENT from the sub-menu.
Step 61: Create motion agent on the head
Create a motion agent on the head at the same location with the parameters listed in figure 18.
Step 62: Bring up the analyze panel
Select ANALYZE from the main-menu and DYNAMICS from the sub-menu
Step 63: Run the dynamics simulation
Set gravity at -386.0885826772 in the y direction and run the simulation for 4 seconds and 400 time steps using the default integrator settings.
Step 64: Display animation
Use the ADAMS/View main toolbox to animate the model.
Running the Second Direct-Dynamics Simulation
With the muscle contraction history recorded from the inverse-dynamics simulation, it may now be used in an active muscle formulation to produce a force to recreate the motion history. The process entails removing the Motion Agents and updating the muscles.
Step 65: Bring up the motion agent delete panel
Select MOTION on the main-menu and DELETE on the sub-menu.
Step 66: Delete all motion agents
Select DELETE ALL on the panel
Step 67: Bring up soft tissue training panel
Select SOFT TISSUES on the sub-menu and TRAINING on the panel.
Step 68: Install ACTIVE contractile element
Select the light bulb to bring up the INSTALL TRAINED LINEAR DRIVER ELEMENTS panel.
Step 69: Set fields and update joints
Specify 1e6 as the proportional gain and 1e4 as the derivative gain. These values control how well the PD-servo actuators will track the desired contraction at each time step in the analysis. Note that the individual muscle will not produce a force greater than the physiological cross section area (pCSA) times the maximum tissue stress.
Step 70: Bring up the analyze panel
Select ANALYZE on the main-menu and DYNAMICS on the sub-menu.
Step 71: Run the dynamics simulation
Set gravity at -386.0885826772 in the y direction and run the simulation for 4 seconds and 400 time steps using the default integrator settings.
Step 72: Display animation
Use the ADAMS/View main toolbox to animate the model.
Interrogating the Results
When the simulation is complete the model may be animated. Figure 21 displays the model animation. The appearance of the animations may differ from the figure, depending on the placement of the muscle attachment points.
Various data may be presented from the forward-dynamics simulation including:
- Vertebrae Axial Loads
- Head Acceleration
- Neck Muscle Forces
- Inter-Vertebrae Rotations.
Step 73: Bring up results panel
Select RESULTS on the main-menu and DATA DISPLAY on the sub-menu and Soft Tissues as the Data Type. Select "Results Window" button to bring up the results processor. Select Soft Tissues as the Data Type.
Step 74: Plot the right sternocleidomastiodeus muscle forces
Select Casey_terno_Rtiss_1 for the soft tissue and tension characteristic. 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 curve.
Step 75: Plot the left sternocleidomastiodeus muscle forces
Select Casey_terno_Ltiss_1 for the soft tissue and tension characteristic. 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 curve.
Step 76: Turn muscle graphics scaling on
Turn on the global scaling of the muscle graphics by selecting Scale Joint/Tissue Graphics, Tissues, Scale Globally and the light bulb to scale the muscle graphics.
Step 77: Animate front view
Select divide window. Select Zoom and enter the center coordinates of -1,25,0 with a Scale of 3.0. Select front view and select PLAY.
Step 78: Bring up joints panel
Select JOINTS as the Data type and select Clear Plot.
Step79: Plot the head rotation
Select NSjoint_1 with the frontal component, the characteristic of angle. Uncheck the Filter Data box and select Create Full Plot to create the curve.
Step 80: Plot the C3 joint rotation
Select NSjoint_2 with the sagittal component and the characteristic of angle. Uncheck the Filter Data box. Select Create Full Plot to create the curve.
Step 81: Plot the C4 joint rotation
Select NSjoint_3 with the frontal component and the characteristic of angle. Uncheck the Filter Data box. Select Create Full Plot to create the curve.
Step 82: Plot the C5 joint rotation
Select NSjoint_4 with the frontal component and the characteristic of angle. Uncheck the Filter Data box. Select Create Full Plot to create the curve.
Step 83: Plot the C6 joint rotation
Select NSjoint_5 with the frontal component and the characteristic of angle. Uncheck the Filter Data box. Select Create Full Plot to create the curve.
Step 84: Toggle muscle graphics and animate front view
Select ANIMATION in the sub-menu. Turn off the muscles using the BodySIM Display Toobox. Select divide window. Select Zoom and enter the center coordinates of -1,25,0 with a Scale of 3.0. Select front view and select PLAY.
Step 85: DEMO COMPLETE
Further
This model was put forth to demonstrate the creation of a detailed human spine model. Obviously the model can be further refined and improved, from the point developed in this example. The intention with this example was to touch of the various modeling functions of both the LifeMOD/BodySIM™ Biomechanics Modeler and ADAMS/View necessary to create a detailed joint of this nature.
This model may be refined in many areas including:
- Creating disk-compression forces between the vertebrae
- Creating more stabilizing ligaments
- Including more muscles in the model
|