You are viewing the documentation for OpenSim 2.4. Are you looking for the latest OpenSim 4.0 Documentation?

Joint Reactions Analysis

The topics covered in this section include:

JointReaction is an OpenSim Analysis for calculating the joint forces and moments transferred between consecutive bodies in a model. These forces and moments correspond to the internal loads carried by the joint structure. These loads represent the contributions of all un-modeled joint structures that would produce the desired joint kinematics, such as cartilage contact and any omitted ligaments. The reaction load acts at the joint center (mobilizer frame) of both the parent and child bodies. The loads can be reported and expressed in either the child, parent, or ground frames. The default behavior is to express the force on the child in the ground frame. For more detailed description of the method implementation see Tibiofemoral Contact Force during Crouch Gait (Steele et al, in review).

In this section, we provide a conceptual review of the inputs and outputs for a JointReaction Analysis along with a set of troubleshooting tips and best practices. Running an Analysis like JointReaction is covered in detail in the How to Use the Analysis Tool section.

Input

Inputs Specific to JointReaction:

  1. joint_names: List of the names of the joints of interest. JointReaction reports loads for only listed joints that exist in the model. Joint names may be repeated any number of times to allow reporting on different bodies or with respect to different reference frames. Using the keyword 'all' reports the loads for all joints in the model. Default is 'all'.
  2. apply_on_bodies: List of the body (parent or child) on which the corresponding reaction occurred. If the array has only one entry, that selection is applied to all joints specified in joint_names. The default is 'child'.
  3. express_in_frame: List of the frames (ground, parent, or child) in which the corresponding reaction is expressed. If the array has only one entry, that selection is applied to all joints specified in joint_names.
  4. forces_file: The name of a file containing forces storage. If a file name is provided, the applied forces for all actuators will be constructed from the forces_file instead of from the states. This option should be used to calculate joint loads from static optimization results.

Output

JointReaction prints results to one storage file with the suffix "_ReactionLoads.sto". This file contains rows of time-stamped data containing the 3 force and 3 moment vector components of the reaction load at each joint specified. Each data column label includes all information about how the load is applied and expressed. Specifically, the form is 
< joint name >on<body>in<frame>_<component>. 

For example, the column containing the z-component of hip force occurring on the femur and expressed in the femur frame would be labeled "hip_on_femur_in_femur_FX" while the y-component of the knee moment occurring on the tibia and expressed in the ground frame would have the label "knee_on_tibia_in_ground_MY". 

Best Practices and Troubleshooting Tips

  1. If JointReaction doesn't recognize a specified joint, body, or frame name, it will perform its default action. The overall default action is to report the loads on all joints as applied to the joint's child body and expressed in the ground reference frame. 
  2. Consistency of modeling inputs to the Analyze tool: The validity of the joint loads depends on modeling assumptions and correct modeling practices. JointReaction is very sensitive to the consistency of all inputs that define a dynamic trial, including the following inputs to the Analyze Tool: <model_file>, <replace_force_set>, <force_set_files>, <states_file>, <coordinates_file>, <speeds_file>, <lowpass_cutoff_frequency_for_coordinates>,<external_loads_file>, <external_loads_model_kinematics_file>, <lowpass_cuttoff_frequency_for_load_kinematics>
  3. If any of these files are not associated with the same dynamic trial, the system of accelerations and forces will not be consistent. Therefore, JointReaction will calculate incorrect joint loads. 
  4. Special Types of Forces: Certain types of forces and actuators, called SpringGeneralizedForce, CoordinateLimitForce, and CoordinateActuator, are associated with specific degrees of freedom and treated as part of the joint structure. This means that any contribution from these components will be treated as part of the resultant loads reported by JointReaction instead of body forces. As an example, consider a reserve actuator on the hip joint of a gait model. If this reserve actuator is defined as a CoordinateActuator, its contribution is treated as a residual force provided by the joint and therefore will be added to the resultant load at the hip. However, if the hip reserve is defined as a TorqueActuator, its torque will be treated as a motor external to the joint and attached between the pelvis and femur. Therefore, its torque will not be added to the reported resultant load at the hip.

OpenSim is supported by the Mobilize Center , an NIH Biomedical Technology Resource Center (grant P41 EB027060); the Restore Center , an NIH-funded Medical Rehabilitation Research Resource Network Center (grant P2C HD101913); and the Wu Tsai Human Performance Alliance through the Joe and Clara Tsai Foundation. See the People page for a list of the many people who have contributed to the OpenSim project over the years. ©2010-2024 OpenSim. All rights reserved.