Table of Contents
Joint Power
Joint power represents the rate of work at which muscles add or remove energy from the system for a specific joint.
Overview
Inverse dynamics provides a framework for estimating the work across the joint of a linked segment system. By combining measured kinematics, external forces, and segment inertial properties, it is possible to infer the rate of work required to produce the observed motion, as well as quantify the mechanical interactions occurring at each joint [1]. Within Visual3D, these quantities can be computed using the 'Compute Model Based Data' command.
A positive joint power indicates that muscles are adding energy as in a concentric contraction, whereas a negative power indicates that muscles are removing energy from the system as an eccentric contraction. It is important to note that the joint power is the 'net' joint power, the intersegmental components are not isolated and cannot be calculated separately.
Joint power is widely used in biomechanical analysis, including gait analysis, sports performance, and clinical assessment, where they help quantify joint power during movements such as walking, running, and jumping [2].
Foundation
The joint power at a joint (P_j) is given by the following equation:
If we apply Newton's third law of equal and opposite forces and the simplification of equal and opposite moments on both sides of the joint system [3], this equation becomes:
For equations specific to a certain joint, the limbs can be modelled as rigid bodies and the joint power computed around the joint's instant center of rotation (ICR). The according forces and velocity can then be derived and used in the above equation. An example free body diagram is shown below.
Example
Calculating the joint power is done completely in the Visual3D background with the 'Compute Model Based Data' and the 'Joint Power' selected in the 'Model Based Item Properties' dropdown. The only prerequisite is that the model has already been built, if it has not, reference Building a 6 DOF Model. The image below shows the 'Compute Model Based Data' Window for the inputs required to calculate the joint power at a specific joint.
This joint power can be resolved into the lab coordinate system or into any segment coordinate system. It is important to note that the joint power itself does not change when a different resolution coordinate system is selected; rather, the force vector is decomposed along the axes of the chosen coordinate system. Because each coordinate system has a different orientation, the distribution of the power across the X, Y, and Z components will vary. This results in different numerical values for each component, even thought they represent the same underlying force.
For example, to compute the joint power at the right knee relative to the right thigh, set the joint to be RKNEE and set the resolution coordinate system to be the Right Thigh.
The output of this command is a [X Y Z] vector representing the powers in each axis. The length of the vector is the length of the complete data waveform and the units are Newtons.
Depending on how the data is being used, joint powers will most likely need be to be filtered. Reference the Signal Processing page.
Normalization
As you can see above in the sample image of the joint power calculation, there is a textbox to select the normalization method. Joint power is commonly normalized to account for differences in subject size, allowing for meaningful comparisons between individuals/conditions and studies. The most common approach is to normalize the power to mass, expressing the joint power as a multiple of the subject's mass. Visual3D provides four options to normalize the computed value for the joint power.
- Normalization Off: The computed value is not normalized.
- Normalize using default normalization: The computed value is normalized according to the subject's mass.
- Normalize to local file metric value: The user specifies the METRIC value in the local file with which to normalize the computed value. Once selected, another drop down menu will appear to prompt a selection.
- Normalize to global metric value: The user specifies the METRIC value in the GLOBAL workspace with which to normalize the computed value. Once selected, another drop down menu will appear to prompt a selection.
Scalar vs. Vector and Anatomical Meaning
In its simplest form, joint power is a scalar term computed by the dot product of the torque and angular velocity of the joint:
Power = [Mx,My,Mz] . [wx,wy,wz]
In biomechanics, it is common to resolve power into a segment 3D coordinate system (which this model command does). This produces three components (e.g., along anatomical axes), but does not turn power into a vector, it simply separate the same scalar into axis-specific contributions. Because joint power is not a vector:
- The components do not behave like vector components.
- There is no need to reflect or flip signs between left and right sides to assign anatomical meaning.
- Multiplying power by -1 is inappropriate, it changes the physiological interpretation. The sign already has meaning:
- Positive power: energy generation (concentric contraction)
- Negative power: energy absorption (eccentric contraction)
For a single, non-resolved value of joint power, see JOINT_POWER_SCALAR.
Pipeline
Compute_Model_Based_Data /RESULT_NAME=RKNEE_JOINT_POWER /SUBJECT_TAG=ALL_SUBJECTS /FUNCTION=JOINT_POWER /SEGMENT=RSK /REFERENCE_SEGMENT= /RESOLUTION_COORDINATE_SYSTEM=RTH ! /USE_CARDAN_SEQUENCE=FALSE /NORMALIZATION=TRUE /NORMALIZATION_METHOD=DEFAULT_NORMALIZATION ! /NORMALIZATION_METRIC= ! /NEGATEX=FALSE ! /NEGATEY=FALSE ! /NEGATEZ=FALSE ! /AXIS1=X ! /AXIS2=Y ! /AXIS3=Z ! /INCLUDE_REMOTE_ANGULAR_MOMENTUM=FALSE ! /TREADMILL_DATA=FALSE ! /TREADMILL_DIRECTION=UNIT_VECTOR(0,1,0) ! /TREADMILL_SPEED=0.0 ;
Common Issues / FAQ
- Necessity of defining a joint
- For Visual3D to calculate joint power, a Joint (e.g., knee, hip, shoulder) must first be defined. This is because joint power is computed using Joint Angular Velocity, which represents the relative motion between two segments that meet at a joint.
- It is possible to obtain a non-zero joint moment while joint power returns “No Data.” This occurs when no joint has been identified in the model. Without a defined joint, there is no joint angular velocity, and therefore power cannot be calculated. A common example is the shoulder joint, which may not be automatically identified if the distance between the head of the humerus (the origin of the upper arm segment) and the distal end of the torso exceeds the torso segment’s defined distal radius.
- You can confirm whether a joint has been created in Model Builder mode. Look for a yellow sphere at the proximal end of the humerus segment; if it is not visible, ensure that joint display is enabled in the visualization settings.
Suggested Resources
- Research Methods in Biomechanics, Chapter 7 [1].
See Also
Similarly to this 'Joint Power' command, there are also model based items for JOINT_POWER_SCALAR, JOINT_MOMENT and JOINT_FORCE.
References
[1] D. G. E. Robertson, Ed., Research methods in biomechanics, Second edition. in Human Kinetics LIbrary. Champaign, IL: Human Kinetics, 2014. doi: 10.5040/9781492595809.
[2] Stuart McErlain-Naylor, Inverse Dynamics, Joint Reaction Forces, and Loading | Prof Bill Baltzopoulos, (Apr. 30, 2020). Accessed: Mar. 17, 2026. [Online Video]. Available: https://www.youtube.com/watch?v=b0dX-hS1mUY
[3] M. Latash and V. Zatsiorsky, “Joint stiffness: Myth or reality?,” Human Movement Science, vol. 12, pp. 653–692, Dec. 1993, doi: 10.1016/0167-9457(93)90010-M.




