OpenSim example and library models
Posted: Tue May 25, 2010 5:01 am
Hi,
I tried to download several OpenSim models from here: https://simtk.org/home/nmblmodels
And I found that some differences exist between OpenSim example models which are includes in the example folder of OpenSim install folder and the models from above link.
So I’d like to ask you some questions.
1) Many models from the above Neuromuscular Models Library have a lot of zero-mass(inertia) segments. Should OpenSim users set their masses manually to use them for inverse/forward dynamics?
2) There are two types of muscles that are mainly used, Thelen2003Muscle and Schutte1993Muscle types. Would you please explain the main differences between these two different muscle types? Is Thelen2003Muscle type better for muscle control problems?
3) In arm26.osim file and Gait2354_Simbody.osim file, there are some common portions.
At the beginning of those files:
<ControlLinear name="default">
<is_model_control> true </is_model_control>
<extrapolate> true </extrapolate>
<default_min> -1.00000000000000000000 </default_min>
<default_max> 1.00000000000000000000 </default_max>
<filter_on> false </filter_on>
<use_steps> false </use_steps>
<x_nodes/>
<min_nodes/>
<max_nodes/>
<kp> 100.00000000000000000000 </kp>
<kv> 20.00000000000000000000 </kv>
</ControlLinear>
<CoordinateActuator name="default">
<coordinate> </coordinate>
<optimal_force> 300.00000000000000000000 </optimal_force>
</CoordinateActuator>
<PointActuator name="default">
<body> </body>
<point> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </point>
<point_is_global> false </point_is_global>
<direction> -1.00000000000000000000 -0.00000000000000000000 -0.00000000000000000000 </direction>
<force_is_global> true </force_is_global>
<optimal_force> 1000.00000000000000000000 </optimal_force>
</PointActuator>
<TorqueActuator name="default">
<bodyA> </bodyA>
<bodyB> </bodyB>
<torque_is_global> true </torque_is_global>
<axis> -1.00000000000000000000 -0.00000000000000000000 -0.00000000000000000000 </axis>
<optimal_force> 300.00000000000000000000 </optimal_force>
</TorqueActuator>
And the followings are also included:
<CMC_Joint name="default">
<!--Flag (true or false) indicating whether or not a task is on.-->
<on> false </on>
<!--Name of body frame with respect to which a tracking objective is
specified. The special name 'center_of_mass' refers to the system
center of mass. This property is not used for tracking joint angles.-->
<wrt_body> -1 </wrt_body>
<!--Name of body frame in which the tracking objectives are expressed.
This property is not used for tracking joint angles.-->
<express_body> -1 </express_body>
<!--Array of 3 flags (each true or false) specifying whether a component
of a task is active. For example, tracking the trajectory of a point
in space could have three components (x,y,z). This allows each of
those to be made active (true) or inactive (false). A task for
tracking a joint coordinate only has one component.-->
<active> false false false </active>
<!--Weight with which a task is tracked relative to other tasks. To track
a task more tightly, make the weight larger.-->
<weight> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </weight>
<!--Position error feedback gain (stiffness). To achieve critical damping
of errors, choose kv = 2*sqrt(kp).-->
<kp> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </kp>
<!--Velocity error feedback gain (damping). To achieve critical damping of
errors, choose kv = 2*sqrt(kp).-->
<kv> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </kv>
<!--Feedforward acceleration gain. This is normally set to 1.0, so no
gain.-->
<ka> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </ka>
<!--Direction vector[3] for component 0 of a task. Joint tasks do not use
this propery.-->
<r0> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r0>
<!--Direction vector[3] for component 1 of a task. Joint tasks do not use
this property.-->
<r1> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r1>
<!--Direction vector[3] for component 2 of a task. Joint tasks do not use
this property.-->
<r2> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r2>
<!--Name of the coordinate to be tracked.-->
<coordinate> </coordinate>
<!--Error limit on the tracking accuracy for this coordinate. If the
tracking errors approach this limit, the weighting for this coordinate
is increased.-->
<limit> 0.00000000000000000000 </limit>
</CMC_Joint>
But the models in the Neuromuscular Models Library don’t include above codes. Especially the osim models those are converted from SIMM model files don’t have those codes. Would you please explain the meanings of above codes?
Thanks for reading this post.
Best regards,
Moonki
I tried to download several OpenSim models from here: https://simtk.org/home/nmblmodels
And I found that some differences exist between OpenSim example models which are includes in the example folder of OpenSim install folder and the models from above link.
So I’d like to ask you some questions.
1) Many models from the above Neuromuscular Models Library have a lot of zero-mass(inertia) segments. Should OpenSim users set their masses manually to use them for inverse/forward dynamics?
2) There are two types of muscles that are mainly used, Thelen2003Muscle and Schutte1993Muscle types. Would you please explain the main differences between these two different muscle types? Is Thelen2003Muscle type better for muscle control problems?
3) In arm26.osim file and Gait2354_Simbody.osim file, there are some common portions.
At the beginning of those files:
<ControlLinear name="default">
<is_model_control> true </is_model_control>
<extrapolate> true </extrapolate>
<default_min> -1.00000000000000000000 </default_min>
<default_max> 1.00000000000000000000 </default_max>
<filter_on> false </filter_on>
<use_steps> false </use_steps>
<x_nodes/>
<min_nodes/>
<max_nodes/>
<kp> 100.00000000000000000000 </kp>
<kv> 20.00000000000000000000 </kv>
</ControlLinear>
<CoordinateActuator name="default">
<coordinate> </coordinate>
<optimal_force> 300.00000000000000000000 </optimal_force>
</CoordinateActuator>
<PointActuator name="default">
<body> </body>
<point> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </point>
<point_is_global> false </point_is_global>
<direction> -1.00000000000000000000 -0.00000000000000000000 -0.00000000000000000000 </direction>
<force_is_global> true </force_is_global>
<optimal_force> 1000.00000000000000000000 </optimal_force>
</PointActuator>
<TorqueActuator name="default">
<bodyA> </bodyA>
<bodyB> </bodyB>
<torque_is_global> true </torque_is_global>
<axis> -1.00000000000000000000 -0.00000000000000000000 -0.00000000000000000000 </axis>
<optimal_force> 300.00000000000000000000 </optimal_force>
</TorqueActuator>
And the followings are also included:
<CMC_Joint name="default">
<!--Flag (true or false) indicating whether or not a task is on.-->
<on> false </on>
<!--Name of body frame with respect to which a tracking objective is
specified. The special name 'center_of_mass' refers to the system
center of mass. This property is not used for tracking joint angles.-->
<wrt_body> -1 </wrt_body>
<!--Name of body frame in which the tracking objectives are expressed.
This property is not used for tracking joint angles.-->
<express_body> -1 </express_body>
<!--Array of 3 flags (each true or false) specifying whether a component
of a task is active. For example, tracking the trajectory of a point
in space could have three components (x,y,z). This allows each of
those to be made active (true) or inactive (false). A task for
tracking a joint coordinate only has one component.-->
<active> false false false </active>
<!--Weight with which a task is tracked relative to other tasks. To track
a task more tightly, make the weight larger.-->
<weight> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </weight>
<!--Position error feedback gain (stiffness). To achieve critical damping
of errors, choose kv = 2*sqrt(kp).-->
<kp> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </kp>
<!--Velocity error feedback gain (damping). To achieve critical damping of
errors, choose kv = 2*sqrt(kp).-->
<kv> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </kv>
<!--Feedforward acceleration gain. This is normally set to 1.0, so no
gain.-->
<ka> 1.00000000000000000000 1.00000000000000000000 1.00000000000000000000 </ka>
<!--Direction vector[3] for component 0 of a task. Joint tasks do not use
this propery.-->
<r0> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r0>
<!--Direction vector[3] for component 1 of a task. Joint tasks do not use
this property.-->
<r1> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r1>
<!--Direction vector[3] for component 2 of a task. Joint tasks do not use
this property.-->
<r2> 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 </r2>
<!--Name of the coordinate to be tracked.-->
<coordinate> </coordinate>
<!--Error limit on the tracking accuracy for this coordinate. If the
tracking errors approach this limit, the weighting for this coordinate
is increased.-->
<limit> 0.00000000000000000000 </limit>
</CMC_Joint>
But the models in the Neuromuscular Models Library don’t include above codes. Especially the osim models those are converted from SIMM model files don’t have those codes. Would you please explain the meanings of above codes?
Thanks for reading this post.
Best regards,
Moonki