0% found this document useful (0 votes)
542 views13 pages

Intro To Opensim

A musculoskeletal model in OpenSim consists of: 1. A skeleton made up of rigid bodies connected by joints that permit motion. Joints have constraints that limit their motion. 2. Muscles that generate forces. 3. Other forces like prescribed forces, bushings, actuators, and contacts. The OpenSim model file defines all the components of the model. It includes bodies, joints connecting bodies, constraints between bodies, forces like muscles, and properties of the model. Joints and constraints establish the degrees of freedom between bodies in the model.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
542 views13 pages

Intro To Opensim

A musculoskeletal model in OpenSim consists of: 1. A skeleton made up of rigid bodies connected by joints that permit motion. Joints have constraints that limit their motion. 2. Muscles that generate forces. 3. Other forces like prescribed forces, bushings, actuators, and contacts. The OpenSim model file defines all the components of the model. It includes bodies, joints connecting bodies, constraints between bodies, forces like muscles, and properties of the model. Joints and constraints establish the degrees of freedom between bodies in the model.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Components of an OpenSim Model

What is a musculoskeletal model?


1. Skeleton:
Bones are rigid bodies
Joints permit motion between bodies
Constraints limit motion
2. Muscles :
Specialized forces
3. Other forces:
PrescribedForce
BushingForce
CoordinateActuator
Contact
OpenSim Workshop

OpenSim Model File


Model
<Model name=Arm26">
<!Default values for properties that are not specified.-->
<defaults> ...
<credits> Model authors Body
names..
<publications> ...
<length_units> m </length_units>
<force_units> N </force_units>
Joint
<!--Acceleration due to gravity.-->
<gravity> 0.00000000
-9.80650000
0.00000000 </gravity>
<!--Bodies in the model.-->
<BodySet name=""> ...
<!--Constraints in the model.-->
Constraint
<ConstraintSet name="">
...
<!All the force elements in the model.-->
<ForceSet name=""> ...
<!Kinematic markers on the model.-->
<MarkerSet name=""> ... Force
<!Surface meshes used by contact force elements in the model.-->
<ContactGeometrySet name=""> ...
</Model>

Marker

OpenSim Workshop

Tree Topology of Multibody Models


Each body is connected by ONE joint to create a chain or open tree structure.
Body
Torso
FreeJoint

PinJoint

WeldJoint

OpenSim Workshop

Body
Right Hand

Body
Handle

PinJoint

Body
Left Hand

Body
Ground

Defining a Body and its Joint


<Body name="block">
<mass> 5.00 </mass>
<mass_center> 0.0 0.0 0.0 </mass_center>
<inertia_xx> 0.1 </inertia_xx>
...
<inertia_yz> 0.0 </inertia_yz>
<!Joint connects the block to ground. -->
<Joint>

Bo
Po
P

OpenSim Workshop

Body and Joint Reference Frames

Joint
parent
body P

child
body B

B
Bo

Po

B specified by joint location and orientation


P specified by joint locationInParent and orientationInParent
Joint coordinates specify the kinematics of B relative to P

OpenSim Workshop

Defining a Body and its Joint


<Joint>
<SliderJoint name="">
<parent_body> ground </parent_body>
<location_in_parent>
0.0 0.0 0.0 </location_in_parent>
<!-- 45 degrees in the horizontal plane -->
<orientation_in_parent> 0.0 0.7853981633974483
0.0 </orientation_in_parent>
<location>
0.0
-0.1
0.0 </location>
<orientation>
0.0
0.7853981633974483
0.0 </orientation>
<!--Generalized coordinates parameterizing this joint.-->
<CoordinateSet name="">
<objects>
<Coordinate name="block_trans">
<!--Coordinate can describe rotational, translational, or coupled.-->
<motion_type> translational </motion_type>
<default_value>
0.00000000 </default_value>
<range> -10 10 </range>
<locked> false </locked>
</Coordinate>
</objects>
</CoordinateSet>
o
</SliderJoint>
</Joint>
<VisibleObject name=""> ...
o
</Body>

OpenSim Workshop

Tree Topology of Multibody Models


Each body is connected by ONE joint to create a chain or open tree structure.
Body
Torso
FreeJoint

PinJoint

WeldJoint

Constraint is required to form a closed loop

OpenSim Workshop

Body
Right Hand

WeldConstraint

Body
Handle

PinJoint

Body
Left Hand

Body
Ground

Kinematic Constriants

OpenSim Workshop

Available Joints and Constriants


<WeldJoint>: No qs, adds body frame to parent
<PinJoint>: One q, rotation about common Z
<SliderJoint>: One q, translation along common X
<BallJoint>: Three qs, rotation about body-fixed X, Y, Z
<FreeJoint>: Six qs, rotations like Ball and 3 translations
<CustomJoint>: User-defined SpatialTransform,1 to 6 qs
<WeldConstraint>: frames on two bodies are fixed
<PointConstraint>: points on two bodies are fixed
<CoordinateCouplerConstraint>: qdep = F(qind)

OpenSim Workshop

Types of Forces in OpenSim


Force

Prescribed

function of time

Ligament

Bushing

...

Actuator

function of state
PointActuator

TorqueActuator

function of control
CoordinateActuator

Muscle

OpenSim Workshop

Muscle Actuator Example


<Thelen2003Muscle name=brachialis_r">
<GeometryPath name="">
<!- points on bodies that define the path of the muscle -->
<PathPointSet name="">
<objects>
<PathPoint name=brachialis_r-P1">
<location> -0.00240000 -0.15330000 0.00710000 </location>
<body> humerus_r </body>
</PathPoint>
<PathPoint name="brachialis_r-P2">
<location> 0.00000000 0.03100000 -0.00530000 </location>
<body> r_ulna_radius_hand </body>
</PathPoint>
</objects>
<groups/>
</PathPointSet>
<PathWrapSet name=""> ...
</GeometryPath>
<!--maximum isometric force of the muscle fibers-->
<max_isometric_force> 972.00000000 </max_isometric_force>
<!--optimal length of the muscle fibers-->
<optimal_fiber_length> 0.08580000 </optimal_fiber_length>
<!--resting length of the tendon-->
<tendon_slack_length> 0.05300000 </tendon_slack_length>
<!--angle between tendon and fibers at optimal fiber length-->
<pennation_angle> 0.00000 </pennation_angle>
<!--time constant for ramping up of muscle activation-->
<activation_time_constant> 0.01000000 </activation_time_constant>
<!--time constant for ramping down of muscle activation-->
<deactivation_time_constant> 0.04000000 </deactivation_time_constant>
<!--maximum contraction velocity at full activation (fiber length/s)-->
<Vmax> 10.00000000 </Vmax>

...

</Thelen2003Muscle>

OpenSim Workshop

Hands On Example:
Add a Body and Actuator to the Model

Adding a joint to the model increases/


decreases the number of degrees of
freedom.
Adding a constraint increases/decreases
the number of system equations.
How are actuators different from other
types of OpenSim forces?

OpenSim Workshop

You might also like