Ergonomics Application : Grasping
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 the Body Segments
In this phase the human body models are generated. The body consists of 19 segments and 18 joints with the mass properties of a 95% Chinese male and the joint characteristics of the Hybrid III crash dummy.

Step 1: Bring up segments panel and set fields for the body
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
Enter "World" for the world model name and "Thorin" for the human body name. Units are millimeter-kilogram-newton and the color is set to peach. Hands are set to open and the full body model is specified. The model is created from an anthropometric database named "GeBOD". The body will be constructed for a 77 kg person of 1778 mm in height. Select OK to set parameters and select Create Body Parameter Table to create the segment measurement table and Create Human Model from Parameter Table to create the model.
Reducing the Model
The segments of the full body model are reduced to concentrate on the left hand, left_lower_arm, left_upper_arm and the left_scapula. The left_scapula is then fixed to ground.
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 as displayed in figure 3.
Step 5: Fix the scapula to ground with a fixed joint
Use the ADAMS/View toolbox to create a fixed joint between the scapula and the ground or use the following ADAMS/View commands:
marker create marker=.World.ground.Thorin_Left_Scapula location=120, 400, 0
marker create marker=.World.Thorin_Left_Scapula.ground location=120, 400, 0
constraint create joint fixed &
joint_name=.World.fixScapulaToGround &
i_marker_name=.World.ground.Thorin_Left_Scapula &
j_marker_name=.World.Thorin_Left_Scapula.ground
Step 6: Hide the fixed constraint
Right click on the joint icons and select appearance. Toggle the visibility to off. Do this for the markers as well.
Generating the Joints
In this phase, the base human segments created in the first phase are connected together with kinematic joints and passive stiffness/damping. At this point a minimal value for both is created at the joints to stabilize the model during the simulation.
Step 7: Bring up joint create panel
Select JOINTS in the main-menu and CREATE BASE SET in the sub-menu. Select HYBRID III CRASH DUMMY STRENGTH CHARACTERISTICS. Enter a scale factor of 1.0 to use the default stiffness of the crash dummy.
Step 8: Bring up the joint build panel
Select Left Arm. Enter 100 for the Nominal Joint Stiffness and 100 for the Nominal Joint Damping.
Step 9: Create joints on the left arm
Select Apply in the left arm joint matrix panel to create the single scapular joint
Step 10: View the dorsal side of the hand
Use the ADAMS/View toolbox to rotate the view and zoom in on the model as in the figure above.
Discretize the Hand Segments
The single base hand segment is now discretized into individual phalanx and metacarpals. In addition to the skeletal geometry, ellipsoidal geometry representing the flesh is created. This geometry is used to estimate the mass properties of the segment.
Step 11: Bring up the create segment panel and set the bone parameters
Select SEGMENTS from the main menu and CREATE SINGLE from the sub-menu. Set the external representation to ellipsoid and the internal representation to skeleton using the BodySIM Display Toolbox.
Step 12: Create the individual bones of the hand
Select SEGMENTS from the main menu and CREATE SINGLE from the sub-menu. Set the external representation to ellipsoid and the internal representation to skeleton using the BodySIM Display Toolbox.
| New Segment |
CM Location |
CM Orientation |
Ellip X |
Ellip Y |
EllipZ |
Shell Entity |
| Phalanx_1DL |
171 |
-185 |
68 |
253 |
83 |
101 |
20 |
35 |
20 |
Skel_phalanx1dL |
| Phalanx_1PL |
177 |
-162 |
61 |
161 |
16 |
0 |
20 |
40 |
20 |
Skel_phalanx1PL |
| metacarpal_1L |
186 |
-126 |
44 |
168 |
29 |
0 |
45 |
70 |
30 |
Skel_metacrpL |
| Phalanx_2DL |
185 |
-264 |
29 |
241 |
3 |
112 |
15 |
25 |
15 |
Skel_phalanx2dL |
| Phalanx_2ML |
188 |
-242 |
28 |
352 |
0 |
180 |
17 |
35 |
17 |
Skel_phalanx2ML |
| Phalanx_2PL |
192 |
-208 |
29 |
353 |
1 |
180 |
20 |
50 |
20 |
Skel_phalanx2L |
| metacarpal_2L |
197 |
-149 |
26 |
176 |
6 |
0 |
30 |
80 |
30 |
Skel_mcarpal2L |
| Phalanx_3DL |
187 |
-275 |
-6 |
333 |
5 |
24 |
15 |
25 |
15 |
Skel_phalanx3dL |
| Phalanx_3ML |
191 |
-251 |
-4 |
348 |
3 |
180 |
17 |
35 |
17 |
Skel_phalanx3ML |
| Phalanx_3PL |
194 |
-212 |
0 |
359 |
9 |
180 |
20 |
55 |
20 |
Skel_phalanx3PL |
| metacarpal_3L |
197 |
-151 |
6 |
355 |
3 |
180 |
30 |
85 |
30 |
Skel_mcarpal3L |
| Phalanx_4DL |
183 |
-265 |
-28 |
347 |
10 |
10 |
15 |
25 |
15 |
Skel_phalanx4dL |
| Phalanx_4ML |
186 |
-243 |
-26 |
347 |
4 |
180 |
17 |
35 |
17 |
Skel_phalanx4ML |
| Phalanx_4PL |
190 |
-206 |
-21 |
357 |
8 |
180 |
20 |
55 |
20 |
Skel_phalanx4PL |
| metacarpal_4L |
194 |
-148 |
-10 |
356 |
11 |
180 |
30 |
85 |
30 |
Skel_mcarpal4L |
| Phalanx_5DL |
184 |
-232 |
-50 |
325 |
2 |
34 |
15 |
20 |
15 |
Skel_phalanx5dL |
| Phalanx_5ML |
185 |
-213 |
-48 |
351 |
8 |
180 |
17 |
35 |
17 |
Skel_phalanx5ML |
| Phalanx_5PL |
189 |
-183 |
-43 |
354 |
10 |
180 |
20 |
40 |
20 |
Skel_phalanx5PL |
| metacarpal_5L |
193 |
-137 |
-29 |
354 |
20 |
180 |
30 |
75 |
30 |
Skel_mcarpal5L |
Step 13: Modify the hand ellipsoid
Use the following ADAMS/View commands to move and resize the hand base segment ellipsoid:
marker mod marker=.World.Thorin_Left_Hand.gm loc=199,-95,5 ori=180,90,90
geom mod shape ellip ellip=.World.Thorin_Left_Hand.Ellipsoid x_scale=80 y_scale=33z_scale=55
Creating the Individual Joints in the Hand
With the single hand segments now discretized into the individual segments, the segments must now be jointed. In this section the individual joints in the hand are created.
Step 14: Create the joint markers on the hand
Use the following ADAMS/View commands to create the markers depicting the center of rotation for each joint:
marker create marker= (Marker Name) loc=(Location) ori=(Orientation) rel=.world
| Marker Name |
Global Location |
Global Orientation |
| Thorin_Phalanx_2ML.Phalanx_2DL |
186.7 |
-255.8 |
28.9 |
241.4 |
3.2 |
112.7 |
| Thorin_Phalanx_3ML.Phalanx_3DL |
188.1 |
-267.1 |
-5.8 |
333 |
5.1 |
24.9 |
| Thorin_Phalanx_4ML.Phalanx_4DL |
183.8 |
-257.5 |
-27.5 |
347.7 |
10.4 |
10.3 |
| Thorin_Phalanx_5ML.Phalanx_5DL |
184 |
-225.7 |
-50.6 |
325.6 |
2.3 |
34.7 |
| Thorin_Phalanx_1PL.Phalanx_1DL |
172.6 |
-177.3 |
66.6 |
253.5 |
83.1 |
101.4 |
| Thorin_Phalanx_2PL.Phalanx_2ML |
190.2 |
-229 |
29 |
271 |
3.1 |
82.5 |
| Thorin_Phalanx_3PL.Phalanx_3ML |
194.7 |
-235.6 |
-3.9 |
319.3 |
16.9 |
20.6 |
| Thorin_Phalanx_4PL.Phalanx_4ML |
189.9 |
-229.3 |
-25 |
316.6 |
12.5 |
24.4 |
| Thorin_Phalanx_5PL.Phalanx_5ML |
187.7 |
-202.1 |
-47.2 |
325.1 |
10.4 |
20.9 |
| Thorin_metacarpal_1L.Phalanx_1PL |
182.6 |
-147.6 |
57.1 |
256 |
83.4 |
114.3 |
| Thorin_metacarpal_2L.Phalanx_2PL |
194.9 |
-187.1 |
30.3 |
199.3 |
6.8 |
157.2 |
| Thorin_metacarpal_3L.Phalanx_3PL |
194.8 |
-189.1 |
4.1 |
314.1 |
4.2 |
41.3 |
| Thorin_metacarpal_4L.Phalanx_4PL |
191.9 |
-184.2 |
-18.4 |
344 |
12.2 |
11.8 |
| Thorin_metacarpal_5L.Phalanx_5PL |
191.1 |
-165.1 |
-40.3 |
347 |
21.2 |
7 |
| Thorin_Left_Hand.Metacarpal_1L |
191.1 |
-104.5 |
32.1 |
256 |
83.4 |
114.3 |
| Thorin_Left_Hand.Metacarpal_2L |
199.7 |
-112.5 |
22 |
199.3 |
6.8 |
157.2 |
| Thorin_Left_Hand.Metacarpal_3L |
200.7 |
-114.3 |
8.2 |
314.1 |
4.2 |
41.3 |
| Thorin_Left_Hand.Metacarpal_4L |
196.7 |
-113.7 |
-3.5 |
344 |
12.2 |
11.8 |
| Thorin_Left_Hand.Metacarpal_5L |
196.4 |
-110.1 |
-19.1 |
347 |
21.2 |
7 |
Step 15: Bring up the single joint create panel
Select JOINTS from the main menu and CREATE SINGLE from the sub-menu. Set the external representation to ellipsoid and the internal representation to skeleton using the BodySIM Display Toolbox.
Step 16: Create the finger joints
Use the single joint create panel above and the table with the values below to create each joint.
Jnt |
Inboard Part |
Outbard Part |
Reference Axis |
K |
C |
+ |
- |
| 1 |
Thorin_Phalanx_1PL |
Thorin_Phalanx_1DL |
Thorin_Phalanx_1PL.Phalanx_1DL |
1 |
10 |
0 |
|
| 2 |
Thorin_Phalanx_2ML |
Thorin_Phalanx_2DL |
Thorin_Phalanx_2ML.Phalanx_2DL |
1 |
10 |
0 |
|
| 3 |
Thorin_Phalanx_3ML |
Thorin_Phalanx_3DL |
Thorin_Phalanx_3ML.Phalanx_3DL |
1 |
10 |
0 |
|
| 4 |
Thorin_Phalanx_4ML |
Thorin_Phalanx_4DL |
Thorin_Phalanx_4ML.Phalanx_4DL |
1 |
10 |
0 |
|
| 5 |
Thorin_Phalanx_5ML |
Thorin_Phalanx_5DL |
Thorin_Phalanx_5ML.Phalanx_5DL |
1 |
10 |
0 |
|
| 6 |
Thorin_Metacarpal_1L |
Thorin_Phalanx_1PL |
Thorin_Metacarpal_1L.Phalanx_1PL |
1 |
10 |
0 |
|
| 7 |
Thorin_Phalanx_2PL |
Thorin_Phalanx_2ML |
Thorin_Phalanx_2PL.Phalanx_2ML |
1 |
10 |
0 |
|
| 8 |
Thorin_Phalanx_3PL |
Thorin_Phalanx_3ML |
Thorin_Phalanx_3PL.Phalanx_3ML |
1 |
10 |
0 |
|
| 9 |
Thorin_Phalanx_4PL |
Thorin_Phalanx_4ML |
Thorin_Phalanx_4PL.Phalanx_4ML |
1 |
10 |
0 |
|
| 10 |
Thorin_Phalanx_5PL |
Thorin_Phalanx_5ML |
Thorin_Phalanx_5PL.Phalanx_5ML |
1 |
10 |
0 |
|
| 11 |
Thorin_Left_Hand |
Thorin_Metacarpal_1L |
Thorin_Left_Hand.Metacarpal_1L |
1 |
200 |
0 |
|
| 12 |
Thorin_Metacarpal_2L |
Thorin_Phalanx_2PL |
Thorin_Metacarpal_2L.Phalanx_2PL |
1 |
10 |
0 |
|
| 13 |
Thorin_Metacarpal_3L |
Thorin_Phalanx_3PL |
Thorin_Metacarpal_3L.Phalanx_3PL |
1 |
10 |
0 |
|
| 14 |
Thorin_Metacarpal_4L |
Thorin_Phalanx_4PL |
Thorin_Metacarpal_4L.Phalanx_4PL |
1 |
10 |
0 |
|
| 15 |
Thorin_Metacarpal_5L |
Thorin_Phalanx_5PL |
Thorin_Metacarpal_5L.Phalanx_5PL |
1 |
10 |
0 |
|
| 16 |
Thorin_Left_Hand |
Thorin_Metacarpal_2L |
Thorin_Left_Hand.Metacarpal_2L |
1 |
200 |
0 |
15 |
| 17 |
Thorin_Left_Hand |
Thorin_Metacarpal_3L |
Thorin_Left_Hand.Metacarpal_3L |
1 |
200 |
0 |
15 |
| 18 |
Thorin_Left_Hand |
Thorin_Metacarpal_4L |
Thorin_Left_Hand.Metacarpal_4L |
1 |
200 |
0 |
15 |
| 19 |
Thorin_Left_Hand |
Thorin_Metacarpal_5L |
Thorin_Left_Hand.Metacarpal_5L |
1 |
200 |
0 |
20 |
Manipulating the Posture of the Hand
After the hand has been discretized and jointed, the posture of the hand in manipulated to put the hand in the starting position before the simulations.
Step 17: Bring up the configure single joint panel
Select POSTURE on the main-menu and CONFIGURE SINGLE JOINT on the sub-menu.
Step 18: View the dorsal side of the hand
Use the ADAMS/View toolbox to zoom in and position the hand in the model window.
Step 19: Rotate the thumb out by 45 degrees
Select Select Thorin_NSjoint_11 and bring up the slider panel displayed in the figure above.
Defining the Extensor Digitorum Musculature
In this step trainable muscles are created for the extensor digitorum musculature. Slide points are used to represent the tendon-sheath interaction.
Step 20: Bring up the single soft tissue panel
Select SOFT TISSUES on the main-menu and CREATE SINGLE on the sub-menu. Select Trainable Muscle Tissue Elements.
Step 21: Create the extensor digitorum
Use the panel above to create the muscles. The table below displays the parts and attachment locations for each muscle. Use 3834 for pCSA, 1.78 for Maximum Stress and a resting load of .44
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_1 |
Thorin_Left_Upper_Arm |
Thorin_Phalanx_2DL |
235.5 |
170.4 |
6.4 |
187.2 |
-261.2 |
28.0 |
| NStiss_2 |
Thorin_Left_Upper_Arm |
Thorin_Phalanx_3DL |
235.5 |
170.4 |
6.4 |
190.0 |
-273.0 |
-7.0 |
| NStiss_3 |
Thorin_Left_Upper_Arm |
Thorin_Phalanx_4DL |
235.5 |
170.4 |
6.4 |
187.1 |
-265.1 |
-30.0 |
| NStiss_4 |
Thorin_Left_Upper_Arm |
Thorin_Phalanx_5DL |
235.5 |
170.4 |
6.4 |
185.0 |
-230.8 |
-51.7 |
Step 22: Reduce the muscle graphical scale to 2 and bring up the slide point panel
Select Muscles as the Tissues and set the Scale to 2 on the BodySIM Display Toolbox. Select SOFT TISSUES on the main-menu and EDIT PROPERTIES on the sub-menu. Select the light bulb next to Slide Point Based to bring up the wrapping panel.
Step 23: Route the tendons through the carpal tunnels
Use the panel above to create the slide points on the muscles. The table below displays the parts and attachment locations for each muscle.
Tissue |
Slide Pont Anchor |
Slide Point Location |
| Thorin_Out_NStiss_1 |
.Thorin_Left_Hand |
210, -90, 10 |
|
|
| Thorin_Out_NStiss_1 |
.Thorin_Metacarpal_2L |
(loc_rel_to({8,0,0}, Phalanx_2PL)) |
|
|
| Thorin_Out_NStiss_1 |
.Thorin_Phalanx_2PL |
(loc_rel_to({7,0,0}, Phalanx_2ML)) |
|
|
| Thorin_Out_NStiss_1 |
.Thorin_Phalanx_2ML |
(loc_rel_to({6,0,0}, Phalanx_2DL)) |
|
|
| Thorin_Out_NStiss_2 |
.Thorin_Left_Hand |
210, -90, 6 |
|
|
| Thorin_Out_NStiss_2 |
.Thorin_Metacarpal_3L |
(loc_rel_to({8,0,0}, Phalanx_3PL)) |
|
|
| Thorin_Out_NStiss_2 |
.Thorin_Phalanx_3PL |
(loc_rel_to({7,0,0}, Phalanx_3ML)) |
|
|
| Thorin_Out_NStiss_2 |
.Thorin_Phalanx_3ML |
(loc_rel_to({6,0,0}, Phalanx_3DL)) |
|
|
| Thorin_Out_NStiss_3 |
.Thorin_Left_Hand |
210, -90, 2 |
|
|
| Thorin_Out_NStiss_3 |
.Thorin_Metacarpal_4L |
(loc_rel_to({8,0,0}, Phalanx_4PL)) |
|
|
| Thorin_Out_NStiss_3 |
.Thorin_Phalanx_4PL |
(loc_rel_to({7,0,0}, Phalanx_4ML)) |
|
|
| Thorin_Out_NStiss_3 |
.Thorin_Phalanx_4ML |
(loc_rel_to({6,0,0}, Phalanx_4DL)) |
|
|
| Thorin_Out_NStiss_4 |
.Thorin_Left_Hand |
210, -90, -2 |
|
|
| Thorin_Out_NStiss_4 |
.Thorin_Metacarpal_5L |
(loc_rel_to({8,0,0}, Phalanx_5PL)) |
|
|
| Thorin_Out_NStiss_4 |
.Thorin_Phalanx_5PL |
(loc_rel_to({7,0,0}, Phalanx_5ML)) |
|
|
| Thorin_Out_NStiss_4 |
.Thorin_Phalanx_5ML |
(loc_rel_to({6,0,0}, Phalanx_5DL)) |
|
|
Defining the Extensor Pollicis Longus Musculature
In this step trainable muscles are created for the extensor pollicis longus musculature. Slide points are used to represent the tendon-sheath interaction.
Step 24: Bring up the single soft tissue panel
Select SOFT TISSUES on the main-menu and CREATE SINGLE on the sub-menu. Select Trainable Muscle Tissue Elements.
Step 25: Create the extensor pollicis longus
Use the panel above to create the muscles. The table below displays the parts and attachment locations for each muscle. Use 3834 for pCSA, 1.78 for Maximum Stress and a resting load of .44
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_5 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_1DL |
211.6 |
45.1 |
-4.3 |
116.3 |
-142 |
67.5 |
Step 26: Bring up the slide point panel
Select Muscles as the Tissues and set the Scale to 2 on the BodySIM Display Toolbox. Select SOFT TISSUES on the main-menu and EDIT PROPERTIES on the sub-menu. Select the light bulb next to Slide Point Based to bring up the wrapping panel.
Step 27: Route the tendons through the carpal tunnels
Use the panel above to create the slide points on the muscles. The table below displays the parts and attachment locations for each muscle.
Tissue |
Slide Pont Anchor |
Slide Point Location |
| Thorin_Out_NStiss_5 |
.Thorin_Left_Hand |
210, -90, 20 |
| Thorin_Out_NStiss_5_SLIDE_1 |
.Thorin_Metacarpal_1L |
(loc_rel_to({8,0,0}, Phalanx_1PL)) |
| Thorin_Out_NStiss_5_SLIDE_1 |
.Thorin_Phalanx_1PL |
(loc_rel_to({7,0,0}, Phalanx_1DL)) |
Defining the Flexor Digitorum Profundus Musculature
In this step trainable muscles are created for the flexor digitorum profundus musculature. Slide points are used to represent the tendon-sheath interaction.
Step 28: View the palmar side of the hand and bring up the single soft tissue panel
Select SOFT TISSUES on the main-menu and CREATE SINGLE on the sub-menu. Select Trainable Muscle Tissue Elements. Use the ADAMS/View toolbox to rotate the hand as in the figure above.
Step 29: Create the flexor digitorum profundus
Use the panel above to create the muscles. The table below displays the parts and attachment locations for each muscle. Use 3834 for pCSA, 1.78 for Maximum Stress and a resting load of .44
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_6 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_2DL |
197 |
114 |
-5 |
183 |
-264 |
28 |
| NStiss_7 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_3DL |
197 |
114 |
-5 |
186 |
-275 |
-7 |
| NStiss_8 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_4DL |
197 |
114 |
-5 |
182 |
-267 |
-30 |
| NStiss_9 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_5DL |
197 |
114 |
-5 |
182 |
-233 |
-51 |
Step 30: Bring up the slide point panel
Select Muscles as the Tissues and set the Scale to 2 on the BodySIM Display Toolbox. Select SOFT TISSUES on the main-menu and EDIT PROPERTIES on the sub-menu. Select the light bulb next to Slide Point Based to bring up the wrapping panel.
Step 31: Route the tendons through the carpal tunnels
Use the panel above to create the slide points on the muscles. The table below displays the parts and attachment locations for each muscle.
Tissue |
Slide Pont Anchor |
Slide Point Location |
| Thorin_Out_NStiss_6 |
.Thorin_Left_Hand |
190, -90, 10 |
| Thorin_Out_NStiss_6_SLIDE_1 |
.Thorin_Metacarpal_2L |
(loc_rel_to({-8,0,0}, Phalanx_2PL)) |
| Thorin_Out_NStiss_6_SLIDE_1 |
.Thorin_Phalanx_2PL |
(loc_rel_to({-7,0,0}, Phalanx_2ML)) |
| Thorin_Out_NStiss_6_SLIDE_1 |
.Thorin_Phalanx_2ML |
(loc_rel_to({-6,0,0}, Phalanx_2DL)) |
| Thorin_Out_NStiss_7 |
.Thorin_Left_Hand |
190, -90, 6 |
| Thorin_Out_NStiss_7_SLIDE_1 |
.Thorin_Metacarpal_3L |
(loc_rel_to({-8,0,0}, Phalanx_3PL)) |
| Thorin_Out_NStiss_7_SLIDE_1 |
.Thorin_Phalanx_3PL |
(loc_rel_to({-7,0,0}, Phalanx_3ML)) |
| Thorin_Out_NStiss_7_SLIDE_1 |
.Thorin_Phalanx_3ML |
(loc_rel_to({-6,0,0}, Phalanx_3DL)) |
| Thorin_Out_NStiss_8 |
.Thorin_Left_Hand |
190, -90, 2 |
| Thorin_Out_NStiss_8_SLIDE_1 |
.Thorin_Metacarpal_4L |
(loc_rel_to({-8,0,0}, Phalanx_4PL)) |
| Thorin_Out_NStiss_8_SLIDE_1 |
.Thorin_Phalanx_4PL |
(loc_rel_to({-7,0,0}, Phalanx_4ML)) |
| Thorin_Out_NStiss_8_SLIDE_1 |
.Thorin_Phalanx_4ML |
(loc_rel_to({-6,0,0}, Phalanx_4DL)) |
| Thorin_Out_NStiss_9 |
.Thorin_Left_Hand |
190, -90, -2 |
| Thorin_Out_NStiss_9_SLIDE_1 |
.Thorin_Metacarpal_5L |
(loc_rel_to({-8,0,0}, Phalanx_5PL)) |
| Thorin_Out_NStiss_9_SLIDE_1 |
.Thorin_Phalanx_5PL |
(loc_rel_to({-7,0,0}, Phalanx_5ML)) |
| Thorin_Out_NStiss_9_SLIDE_1 |
.Thorin_Phalanx_5ML |
(loc_rel_to({-6,0,0}, Phalanx_5DL)) |
Creating the Other Muscles of the Hand
To complete the musculature of the hand the flexor pollicis brevis, the adductor pollicis and the flexor pollicis longus muscles and tendons are generated. The flexor pollicis longus tendon is routed through the carpal tunnel.
Step 32: Bring up the single soft tissue panel
Select SOFT TISSUES on the main-menu and CREATE SINGLE on the sub-menu.
Step 33: Create the flexor pollicis brevis muscle
Use the panel above to create the muscle. The table below displays the parts and attachment locations for each muscle.
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_11 |
Thorin_Left_Hand |
Thorin_Phalanx_1PL |
190 |
-98 |
21 |
148 |
-121 |
52 |
Step 34: Create the adductor pollicis muscle
Use the panel above to create the muscle. The table below displays the parts and attachment locations for each muscle.
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_12 |
Thorin_Metacarpal_3L |
Thorin_Phalanx_1PL |
199 |
-145 |
8 |
147 |
-125 |
55 |
Step 35: Create the flexor pollicis longus muscle
Use the panel above to create the muscle. The table below displays the parts and attachment locations for each muscle.
Name |
Attach Part_1 |
Attach Part_2 |
Attach Loc 1 |
Attach Loc 2 |
| NStiss_10 |
Thorin_Left_Lower_Arm |
Thorin_Phalanx_1DL |
214 |
69 |
23 |
120 |
-143 |
60 |
Step 36: Bring up the slide point create panel
Select SOFT TISSUES on the main-menu and EDIT PROPERTIES on the sub-menu. Select the light bulb next to Slide Point Based to bring up the slide point based tissue wrapping tool.
Step 37: Create slide points on the flexor pollicis longus tendon
Use the panel above to create the slide points on the muscles. The table below displays the parts and attachment locations for each muscle.
| Tissue |
Slide Pont Anchor |
Slide Point Location |
| Thorin_Out_NStiss_10 |
Thorin_Left_Hand |
190 |
-90 |
16 |
| Thorin_Out_NStiss_10_SLIDE_1 |
Thorin_Metacarpal_1L |
(loc_rel_to({-8,0,0}, Phalanx_1PL)) |
| Thorin_Out_NStiss_10_SLIDE_1 |
Thorin_Phalanx_1PL |
(loc_rel_to({-7,0,0}, Phalanx_1DL)) |
Step 38: Bring up the tissues create set panel
Select SOFT TISSUES on the main-menu and CREATE BASE SET on the sub-menu.
Step 39: Create muscle tissues on the rest of the arm
Select Left Arm and select execute to select trainable tissues on the arm. Select Muscles and set the scale factor to 2 on the BodySIM Display Toolbox.
Posing the Arm/Hand Model
With all the tissues now created on the arm/hand model, the limb is then positioned into the starting position by manipulating the joints.
Step 40: Bring up the posture panel to configure the base joints
Select POSTURE on the main-menu and CONFIGURE BASE MODEL on the sub-menu.
Step 41: Load the current joint angles and change the view to left
Select Load Current Joint Angles to bring up the angles for the shoulder, elbow and wrist joints. Using the ADAMS/View toolbox to rotate the view to the left.
Step 42: Adjust the shoulder and elbow angles in the sagittal plane
Seth the Sagittal angle of the shoulder joint and the elbow joints to be -40 and -90 degrees respectively.
Defining the Environment
With the arm/hand model in position, a tennis ball model is imported from the mechanical system library. Also, a box is created using the geometric boolean operations from ADAMS/View. Contact properties are created between the fingers and palm of the hand and the ball as well as between the ball and the box.
Step 43: Bring up the import mechanical environment panel
Select XCHANGE on the main-menu and IMPORT MECHANICAL ENVIRONMENT on the sub-menu. Set the option to Mechanical Environment Library.
Step 44: Import the tennis ball
Select Tennis Ball as the Model Library SLF File and select Apply to create the ball.
Step 45: Move the ball into the hand and attach with a lock joint
Either use the ADAMS/View move panel to move the ball or use the following commands to reposition the ball:
part modify rigid_body name_and_position &
part_name = .World.Ball &
location = 144.0, 444.0, 433.0 &
orientation = 0.0, 0.0, 0.0 &
relative_to = .World
Either use the ADAMS/View panel to create a fixed joint between the ball and the hand or use the following commands :
constraint create joint fixed joint_name = .World.ballFix &
i_part_name = .World.ground &
j_part_name = .World.Ball &
location = .World.Ball.cm &
orientation = 0.0, 0.0, 0.0
Step 46: Create two boxes
Two boxes are created with one a bit larger that the other. the smaller box is to be used as the "cutting tool" in the boolean operation to create a hollow box to drop the ball in. Use the following ADAMS/View commands to create the boxes:
mar cre mar=.World.ground.box_rm1 loc=-90.0, -410.0, -176 rel=.World
geo cre sha block blo=.World.ground.box_a cor= .World.ground.box_rm1 dia= (480mm),(-330mm),(470mm)
mar cre mar=.World.ground.box_rm2 loc=-100.0, -420.0, -191 rel=.World
geo cre sha block blo=.World.ground.box_b cor= .World.ground.box_rm2 dia= (500mm),(-350mm),(500mm)
geo att geo=.world.ground.box_a color=yellow
geo att geo=.world.ground.box_b color=brown
Step 47: Use box_a to cut box_b to create the hollow box.
Two boxes are created with one a bit larger that the other. the smaller box is to be used as the "cutting tool" in the boolean operation to create a hollow box to drop the ball in. Use the following ADAMS/View commands to create the boxes:
geometry create shape csg csg_name=.World.ground.basket &
base_object=.World.ground.box_b &
object=.World.ground.box_a &
type=difference
entity attributes &
entity_name = .World.ground.basket
color = .colors.Brown &
transparency = 75
Step 48: Bring up the contact panel
Select CONTACTS from the main-menu and CREATE SINGLE from the sub-menu.
Step 49: Create contact forces between the ball and the hand
Contact forces are created between the flesh of the fingers and palm of the hand and the ball using the panel with the contact settings in the figure above and the individual values in the table below.
| Contact Solid 1 |
Contact Solid 2 |
| Ball.ellipsoid |
Thorin_Left_Hand.Ellipsoid |
| Ball.ellipsoid |
Phalanx_1DL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_2DL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_3DL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_4DL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_5DL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_2ML.Ellipsoid |
| Ball.ellipsoid |
Phalanx_3ML.Ellipsoid |
| Ball.ellipsoid |
Phalanx_4ML.Ellipsoid |
| Ball.ellipsoid |
Phalanx_5ML.Ellipsoid |
| Ball.ellipsoid |
Phalanx_1PL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_2PL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_3PL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_4PL.Ellipsoid |
| Ball.ellipsoid |
Phalanx_5PL.Ellipsoid |
| Ball.ellipsoid |
Metacarpal_1L.Ellipsoid |
| Ball.ellipsoid |
Metacarpal_2L.Ellipsoid |
| Ball.ellipsoid |
Metacarpal_3L.Ellipsoid |
| Ball.ellipsoid |
Metacarpal_4L.Ellipsoid |
| Ball.ellipsoid |
Metacarpal_5L.Ellipsoid |
Step 50: Create contact forces between the ball hollow box
Use a contact stiffness of 10, damping of 17, exponent 1.5, depth 10, MU static .8 MU dynamic .8 and Friction Velocity of 254 and stiction velocity of 1. Select the .Ball.Ellipsoid as contact solid 1 and .ground.basket as contact solid 2. Select Apply to create the contact force.
Creating the Motion Agents
In this step, motion agents are created on the finger tips. They will serve two functions: 1) to close the hand around the ball to establish the starting point of the simulation, and, 2) to open the hand to train the muscles to drop the ball.
Step 51: Bring up the single motion agent panel
Select MOTION in the main-menu and CREATE SINGLE AGENT in the sub-menu. Use the ADAMS/View toolbox to zoom closely into the hand.
Step 52: Create the motion splines
Use the ADAMS/View command below to create the 4 splines. The data for X_finger, Y_finger, x_thumb and z_thumb splines in included in the tables below.
dat cre spl spl=.World.x_finger x_u=time y_u=length x=(data below) y=(data below)
Step 53: Create the single motion agents
Use the panel in the figure above and the data from the table below to create the motion agents on the fingers.
| Motion Agent |
Body Segment |
Location |
X_dof |
Y_dof |
Z_dof |
| MOTagent_1 |
Thorin_Phalanx_2DL |
183 |
539 |
498 |
x_finger |
y_finger |
y_finger |
| MOTagent_2 |
Thorin_Phalanx_3DL |
186 |
519 |
532 |
x_finger |
y_finger |
y_finger |
| MOTagent_3 |
Thorin_Phalanx_4DL |
182 |
497 |
539 |
x_finger |
y_finger |
y_finger |
| MOTagent_4 |
Thorin_Phalanx_5DL |
183 |
457 |
526 |
x_finger |
y_finger |
y_finger |
| MOTagent_5 |
Thorin_Phalanx_1DL |
105 |
489 |
384 |
x_thumb |
FREE |
z_thumb |
Running an Analysis to Set up the Initial Conditions
In this step, the hand is locked to ground and an analysis is run to have the motion agents wrap the fingers around the ball. The model will then be updated so the resulting configuration will be initial condition in the next simulation.
Step 54: Bring up the analyze panel
Select ANALYZE in the maine-menu and DYNAMICS in the sub-menu.
Step 55: Lock the hand to ground during the grasping
Create an ADAMS/View lock joint between the hand and the ground using either the ADAMS/View toolbox or the following command
constraint create joint fixed joint_name = .World.handFix &
i_part_name = .World.ground &
j_part_name = .World.Thorin_Left_Hand &
location = .World.Thorin_Left_Hand.cm &
orientation = 0.0, 0.0, 0.0
Step 56: Run the simulation to put the hand in the starting position
Select the Robust integrator settings and run the simulation for 1 second and 100 time steps.
Step 57: Save the current configuration as the starting point for the next analysis
Select Update Model Posture with Equilibrium Results to update the model with the results of the analysis.
Training the Muscles to Open the Hand
With the hand in the gripping position two motion single agents are created. The first motion agent is fixed to the ball with the motion being with respect to a reference frame attached to the hand. This agent will facilitate the "pulling" of the ball out of the hand. The second agent is fixed to the arm which will facilitate the motion of the arm. Together these motion constitute a ball dropping activity in which the muscle reaction forces will be calculated to perform in a subsequent forward-dynamics simulation.
Step 58: Bring up the motion agent delete panel, delete all the motion agents
Select MOTION on the main-menu and DELETE on the sub-menu. Select Delete All to delete all the motion agents.
Step 59: Bring up the motion agent create single panel
Select MOTION on the main-menu and CREATE SINGLE AGENT on the sub-menu.
Step 60: Create a spline for ball movement
Use the following ADAMS/View command to create the spline:
dat cre spl spl=.World.SPL_ball &
x=0,.25,.5,.75,1,1.7,2.2,2.8,3.3,3.9,4.4,5 &
y=0,0,-10,-50,-133,-200,-300,-400,-400,-400,-400,-400
Step 61: Create the reference frame for ball motion
A marker is created on the left_hand part to act as a reference frame for the motion of the ball. The marker will move with the hand, therefore, the motion agents will be working off this moving reference frame.
Step 62: Create the single motion agent on the ball
Use the data in the figure above to create the single motion agent on the ball.
Step 63: Create the data spline for the arm movement
Use the following ADAMS/View command to create the spline:
dat cre spl spl=.World.SPL_arm &
x=0,.6,1.1,1.7,2.2,2.8,3.3,3.9,4.4,5 &
y=0,-500,-600,-620,-620,-620,-750,-620,-620,-620
Step 64: Create the single motion agent on the arm
Create a motion agent on the Left_Hand at location 144,478,473. Leave the rotational dof's free. Fix the x_dof, drive the y_dof with the spline SPL_arm and leave the z_dof as free. Select global reference frame and use the same stiffness/damping properties as in the ball motion agent.
Step 65: Bring up the analyze panel
Select ANALYZE in the maine-menu and DYNAMICS in the sub-menu.
Step 66: Delete the lock joint between the ball and the hand and the hand and ground
Delete the ballfix and handfix lock joints using the following ADAMS/View command:
constraint del con=.World.ballfix
constraint del con=.World.handFix
Step 67: Run the inverse dynamics simulation
Select Default integrator settings. Rung the simulation for 2 seconds and 200 time steps.
Step 68: Animate the results
Use the ADAMS/View toolbox to animate the results of the simulation.
Running the Forward Dynamics Analysis
With the muscles now trained from the inverse dynamics analysis, the motion agents are deleted and a forward dynamics simulation is performed. The simulation is complete with the ball-hand dynamics and the ball-box dynamics.
Step 69: Bring up the muscles training panel
Select SOFT TISSUES on the main-menu and TRAINING on the sub-menu. Select the light bulb next to Install Trained Driver Elements.
Step 70: Update the muscles with the inverse dynamics data
Enter 500000.0 for the Controller Gain and 500 for the Derivative Gain of the muscle controllers. Select Apply to update the muscles with trained driver elements.
Step 71: Bring up the analyze panel
Select ANALYZE in the maine-menu and DYNAMICS in the sub-menu.
Step 72: Turn off the motion agents and run the forward dynamics simulation
Check Disable Motion Agents, and default integrator settings. Run the analysis for 2 seconds and 200 time steps.
Step 73: Reduce the muscle scale, turn off the attachments and animate the results
Use the BodySIM Display panel to reduce the scale of the muscles to 2 and turn off the attachment graphics.
Use the ADAMS/View toolbox to animate the results of the simulation.
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:
- Individual muscle forces
- Individual ligament forces
- Disk compression forces
- Disk shear forces
Step 74: Bring up results panel
Select RESULTS in the main-menu and ANIMATION in the sub-menu. Select "Results Window" button to bring up the results processor
Step 75: Turn off ellipsoids and animate the front view
Set the external representation to none in the BodySIM Display Toolbox. Also turn of the tissue attachments using the toolbox. Select .Ball.cm as the trace marker. select front view and run the animation.
Step 76: Turn off the visibility of the box and animate
Select Thorin_Left_Hand.cm as the Fix to Camera Marker, select fix rotations. Select front view and run the animation.
Step 77: Scale the muscles and run the animation fixing the camera to the lower arm
Select Thorin_Left_Lower_Arm.cm as the Fix to Camera Marker, select fix rotations. Select right view and run the animation.
Step 78: Animate the left view
Select Thorin_Left_Lower_Arm.cm as the Fix to Camera Marker, select fix rotations. Select right view and run the animation.
Step 79: Examine the forces in the extensor digitorum muscles
Select DATA DISPLAY in the sub-menu and Soft Tissues as the Data Type. Select the Tension Characteristic. Select Create Full Plot for the following soft tissues
- Thorin_Nstiss_1_SLIDE_1
- Thorin_Nstiss_2_SLIDE_1
- Thorin_Nstiss_3_SLIDE_1
- Thorin_Nstiss_4_SLIDE_1
Step 80: Animate the model with scaling muscle graphics
Select ANIMATION in the sub-menu. Turn on the local scaling of the muscle graphics by selecting Scale Joint/Tissue Graphics, Tissues, Scale Locally and the light bulb to scale the muscle graphics. Select divide window, right view and animate.
Step 81: Examine the forces in the flexor digitorum muscles
Select DATA DISPLAY in the sub-menu and Soft Tissues as the Data Type. Select the Tension Characteristic. Select Create Full Plot for the following soft tissues
- Thorin_Nstiss_6_SLIDE_1
- Thorin_Nstiss_7_SLIDE_1
- Thorin_Nstiss_8_SLIDE_1
- Thorin_Nstiss_9_SLIDE_1
Step 82: Animate the model with scaling muscle graphics
Select ANIMATION in the sub-menu. Turn on the local scaling of the muscle graphics by selecting Scale Joint/Tissue Graphics, Tissues, Scale Locally and the light bulb to scale the muscle graphics. Select divide window, left view and animate.
Step 83: Examine the finger tip contact forces
Select DATA DISPLAY in the sub-menu and Contacts as the Data Type. Select the Mag Component Characteristic. Select Create Full Plot for the following soft tissue forces:
- Thorin_NScon_7
- Thorin_NScon_8
- Thorin_NScon_9
- Thorin_NScon_10
Step 84: Animate the model with muscle graphics turned off
Select ANIMATION in the sub-menu. Select Muscles as the Tissues and toggle off using the BodySIM Display Toolbox. Select divide window, left view and animate.
Step 85: Zoom in on the hand and animate
Select ANIMATION in the sub-menu. Select Muscles as the Tissues and toggle off using the BodySIM Display Toolbox. Select zoom with center coordinates of 130, 448, 413 with a scale factor of 2. Select divide window, left view and animate.
Step 86: DEMO COMPLETE
Further
This model could be used to explore many aspects including:
- Various muscle/ligament parameters
- Various acceleration profiles
-
|