Presentation is loading. Please wait.

Presentation is loading. Please wait.

Agenda : January 27th 8:30 – 9:00 Verify your Opensim installation

Similar presentations


Presentation on theme: "Agenda : January 27th 8:30 – 9:00 Verify your Opensim installation"— Presentation transcript:

1 Agenda : January 27th 8:30 – 9:00 Verify your Opensim installation
9:00 – 9:30 Introducing faculty and participants Ilse Jonkers & Friedl De Groote 9:30 – 10:00 Musculoskeletal modeling in Opensim - Use and application Ilse Jonkers 10:00 – 10:30 Data import, marker set definition, and scaling Marjolein van der Krogt 10:30 – 11:00 Coffee 11:00 – 13:00 Work on your own project 13:00 – 14.00 Lunch 14:00 – 14:30 Inverse Kinematics Friedl De Groote 14:30– 16:00 16:00-16:30 16:30-17:00 Inverse Dynamics Giordano Valente

2 Musculoskeletal modeling
OpenSim Workshop

3 OpenSim is a repository of models
Lumbar-spine: Christophy et al, 2011 Lower-extremity: Arnold et al, 2010 Shoulder: Matias et al, in prep. Running: Hamner et al, 2010 A standard format for exchanging musculoskeletal models Online repository of models: lower and upper extremity, wrist, neck, and spine Improved lower-extremity model by Edith Arnold “Fiber operating regions of human lower limb muscles during walking and running” Session ??? Model used to simulate running at long-distance speed by Samuel Hamner, “Muscle contributions to mediolateral mass center acceleration during running” Session ???

4 Components of an OpenSim Model
Components of an OpenSim Model

5 What is a musculoskeletal model?
Skeleton: Bones are rigid bodies Joints permit motion between bodies Constraints limit motion Muscles : Specialized forces Other forces: PrescribedForce BushingForce CoordinateActuator Contact A Bushing Force is the force proportional to the deviation of two frames. One can think of the Bushing as being composed of 3 linear and 3 torsional spring-dampers, which act along or about the bushing frames. The underlying Force in Simbody is a SimtK::Force::LinearBushing

6 What is a musculoskeletal model?

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

8 Tree Topology of Multibody Models
Each body is connected by ONE joint to create a chain or open tree structure. Body Torso FreeJoint Body Left Arm BallJoint Body Right Arm BallJoint Body Ground Left Hand Body PinJoint Right Hand Body PinJoint Body Handle WeldJoint

9 Bodies of the musculoskeletal model

10 Defining a Body and its Joint
<Body name="block"> <mass> 5.00 </mass> <mass_center> </mass_center> <inertia_xx> 0.1 </inertia_xx> ... <inertia_yz> 0.0 </inertia_yz> <!—Joint connects the block to ground. --> <Joint> B P Bo Po Each body has a coordinate set – can be anywhere on body- isb –based excpet pelvis

11 Biological joints in Opensim
Let’s dive into more details about OpenSim. First, as a modeling platform OpenSim includes a variety of standard joints like, ball, slider, and pin joints, but also provides joint types that are useful for modeling biomechanical joints in particular. For example, the video on the left shows an Ellipsoid joint that describes the movement of the scapula on the thorax surface. Or on the right, we see the knee joint modeled by a 1-dof custom joint. Splines describe the translations of the tibia w.r.t the femur as a function of knee flexion. define novel joint types(e.g. Ellipsoid) customizable “spline” joints (e.g. Knee)

12 Joints in a musculoskeletal model
Available Joint Types WeldJoint: introduces no coordinates (degrees of freedom) and fuses bodies together PinJoint: one coordinate about the common Z-axis of parent and child joint frames SliderJoint: one coordinate along common X-axis of parent and child joint frames BallJoint: three rotational coordinates that are about X, Y, Z of B in P EllipsoidJoint: three rotational coordinates that are about X, Y, Z of B in P with coupled translations such that B traces and ellipsoid centered at P FreeJoint: six coordinates with 3 rotational (like the ball) and 3 translations of B in P CustomJoint: user specified 1-6 coordinates and user defined spatial transform to locate B with respect to P The CustomJoint Transform Most joints in an OpenSim model are custom joints since this is the most generic joint representation, which can be used to model both conventional (pins, slider, universal, etc…) as well as more complex biomechanical joints. The user must define the transform (rotation and translation) of the child in the parent (B and P, in the joint definition figure above) as a function of the generalized coordinates listed in the Joint’s CoordinateSet. Consider the spatial transform  : where q are the joint coordinates, and x are the spatial coordinates for the rotations (x1, x2, x3) and translations (x4, x5, x6) along user-defined axes that specify a spatial transform (X) according to functions fi. The behavior of a CustomJoint is specified by its SpatialTransform. A SpatialTransform is comprised of 6 TransformAxes (3 rotations and 3 translations) that define the spatial position of B in P as a function of coordinates. Each transform axis enables a function of joint coordinates to operate about or along its axis. The function of q is used to determine the displacement for that axis. The order of the spatial transform is fixed with rotations first followed by translations. Subsequently, coupled motion (i.e., describing motion of two degrees of freedom as a function of one coordinate) is easily handled. The example below (from the gait2354.osim model) describes coupled motion of the knee, with both tibial translation and knee flexion described as a function of knee angle: 

13 Joints in a musculoskeletal model

14 Body and Joint Reference Frames
child body B Bo B Joint P parent body P Po B0 is coordinaten systeem van body eg femur – at hip joint center (ISB defin) – Tibai (above knee)Alles in gewricht staat tov P en B (onderscheid B en B0 is vaste relatie =location and orientation in parent) – voor 2 gewrichten in een segment kan het makkelijker zijn om B toe te voegen anders wordt gewrichtsdefinitei moeilijk B specified by joint location and orientation P specified by joint locationInParent and orientationInParent Joint coordinates specify the kinematics of B relative to P

15 Defining a Body and its Joint
<SliderJoint name=""> <parent_body> ground </parent_body> <location_in_parent> </location_in_parent> <!-- 45 degrees in the horizontal plane --> <orientation_in_parent> </orientation_in_parent> <location> </location> <orientation> </orientation> B P Bo Po <!--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> </default_value> <range> </range> <locked> false </locked> </Coordinate> </objects> </CoordinateSet> </SliderJoint> </Joint> <VisibleObject name=""> ... </Body>

16 Kinematic Constriants
Kinematic Constraints in OpenSim OpenSim currently supports three types of built-in constraints: PointConstraint WeldConstraint and CoordinateCouplerConstraint. A point constraint fixes a point defined with respect to two bodies (i.e., no relative translations). A weld constraint fixes the relative location and orientation of two bodies (i.e., no translations or rotations). A coordinate coupler relates the generalized coordinate of a given joint (the dependent coordinate) to any other coordinates in the model (independent coordinates). The user must supply a function that returns a dependent value based on independent values. The following example implements coordinate coupler constraint for the motion of the patella as a function of the knee ankle and also welds the foot to ground. Example of constraints in OpenSim:

17 Available Joints and Constriants
<WeldJoint>: No q’s, adds body frame to parent <PinJoint>: One q, rotation about common Z <SliderJoint>: One q, translation along common X <BallJoint>: Three q’s, rotation about body-fixed X, Y, Z <FreeJoint>: Six q’s, rotations like Ball and 3 translations <CustomJoint>: User-defined SpatialTransform,1 to 6 q’s <WeldConstraint>: frames on two bodies are fixed <PointConstraint>: points on two bodies are fixed <CoordinateCouplerConstraint>: qdep = F(qind) Coord coupler – patella Free joint -> werkt niet met constraints – intern

18 Tree Topology of Multibody Models
Each body is connected by ONE joint to create a chain or open tree structure. Body Torso FreeJoint Body Left Arm BallJoint Body Right Arm BallJoint Body Ground Left Hand Body PinJoint Right Hand Body PinJoint Body Handle WeldJoint WeldConstraint Constraint is required to form a closed loop

19 Forces in a musculoskeletal model
OpenSim Workshop

20 Types of Forces in OpenSim
... Prescribed Ligament Bushing Actuator function of time function of state PointActuator TorqueActuator In order to actuate our model, we need to define the forces that will be applied to the model. Just like bodies are defined within the <BodySet> section, forces are defined in the <ForceSet> section of the model file. Forces come in two varieties: passive forces like springs, dampers, and contact and active forces like springs, idealized linear or torque actuators, and muscles. Active forces that require input (controls) supplied by the user or by a controller are called Actuators and are a subset of the ForceSet.  Available Forces OpenSim has several built-in forces that include: PrescribedForce, SpringGeneralizedForce, BushingForce, as well as HuntCrossleyForce and ElasticFoundationForce to model forces due to contact (Note: contact forces also require defining contact geometry). Below is an example of a bushing force used to model passive structures surrounding a single lumbar joint that connects a torso body to a pelvis body. Common Actuators OpenSim also includes “ideal” actuators which apply pure forces or torques that are directly proportional to the input control (i.e., excitation) via its optimal force (i.e., a gain). Forces and torques are applied between bodies, while generalized forces are applied along the axis of a generalized coordinate (i.e., a joint axis). function of control CoordinateActuator Muscle

21 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> </location> <body> humerus_r </body> </PathPoint> <PathPoint name="brachialis_r-P2"> <location> </location> <body> r_ulna_radius_hand </body> </objects> <groups/> </PathPointSet> <PathWrapSet name=""> ... </GeometryPath> <!--maximum isometric force of the muscle fibers--> <max_isometric_force> </max_isometric_force> <!--optimal length of the muscle fibers--> <optimal_fiber_length> </optimal_fiber_length> <!--resting length of the tendon--> <tendon_slack_length> </tendon_slack_length> <!--angle between tendon and fibers at optimal fiber length--> <pennation_angle> </pennation_angle> <!--time constant for ramping up of muscle activation--> <activation_time_constant> </activation_time_constant> <!--time constant for ramping down of muscle activation--> <deactivation_time_constant> </deactivation_time_constant> <!--maximum contraction velocity at full activation (fiber length/s)--> <Vmax> </Vmax> ... </Thelen2003Muscle> The Muscle Actuator There are several muscle models in OpenSim. All muscles include a set of muscle points where the muscle is connected to bones (bodies) and provide utilities for calculating muscle-actuator lengths and velocities. Internally muscle models may differ in the number and type of parameters. Muscles typically include muscle activation and contraction dynamics and their own states (for example activation and muscle fiber length). The control values are typically bounded excitations (ranging from 0 to 1) which lead to a change in activation and then force. Below is an example of a muscle model, as described by Thelen (2003), from an OpenSim model.  In addition to the muscle properties, we need to define its geometry. In this example, a geometry path is defined for the muscle using a set of path points.

22 Muscle Actuator Example
OpenSim Workshop

23 Contact modeling in Opensim
Deformation-Based Contact Forces Hunt-Crossley for analytical shapes Elastic foundation for an arbitrary mesh Contact is vital for synthesizing new motion. (e.g. no experimental ground reaction force data) OpenSim provides two types of contact forces: HC: uses analytical shapes that is efficient to solve EF: is mesh-based with an elastic element at the centroid of every face In both cases, you can set stiffness and dissipation to match material properties.

24 Markers in a musculoskeletal model
OpenSim Workshop

25 Markers Markers In order to perform Inverse Kinematics, you will need to define a virtual marker set that matches the experimental marker set used to collect motion capture data. Markers are defined in a <MarkerSet>. The figure below (Example XML Marker) shows an example from Arm26 defining a <Marker>. Note tags that define the marker, such as <body> and <location>. Additionally, the marker name is important, as it must match the name of the corresponding experimental marker. OpenSim Workshop


Download ppt "Agenda : January 27th 8:30 – 9:00 Verify your Opensim installation"

Similar presentations


Ads by Google