The topics covered in this section include:


JointReaction is an OpenSim Analysis for calculating resultant forces and moments at joint.  Specifically, it calculates the joint forces and moments transferred between consecutive bodies as a result of all loads acting on the 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.


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.


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_FZ" 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

Joint Reactions vs Inverse Dynamics

Users should be aware of the differences between Inverse Dynamics calculations and Joint Reaction calculations:

To illustrate the difference, let's consider the hip joint, which is modeled as a ball and socket and actuated by muscles. This joint allows three rotations, but prohibits translations.


Next: Probes