OpenSim Inverse Dynamics for Closed Kinematic Chain with Skewed Joint Axes
Posted: Fri Mar 26, 2021 1:42 pm
I have an inverse dynamics analysis question for systems with a closed kinematic chain and a joint rotational axis direction that is 'skewed' and not along any of the parent or child body x, y, or z axes (for example, <axis>0.0048 0.9991 0.0424</axis>).
For a model with only open kinematic chains, we can perform a standard OpenSim inverse dynamics analysis, and OpenSim reports the inverse dynamics moments that would generate the input motion. Even if the joint axes are skewed in their respective bodies, OpenSim still outputs joint moments that can immediately be used as coordinate actuators to perform a forward dynamic simulation that will replicate the original inverse dynamic input motion. So all is good.
In contrast, if we have a model with a closed kinematic chain, then to do an inverse dynamics analysis, we need to prescribe the motion of the independent coordinates and perform a forward dynamic simulation. If we perform a Joint Reaction Analysis as part of the forward dynamic simulation, we can get the net reaction force and moment from each joint applied to either the parent or child body and expressed in terms of the parent or child body. HOWEVER, if some of the axes in the model are skewed with respect to the parent or child body, it is not clear how to take the outputs of the Joint Reaction Analysis and turn them into coordinate actuators that can be applied to the skewed joint axes of the model when performing a subsequent forward dynamic simulation.
One possible way around this problem is to take the joint reaction moment output by the Joint Reaction Analysis, express it in terms of the body in which the skewed joint axis is fixed, and then dot it with the skewed joint axis unit vector to get the component of the reaction moment along the axis direction. It seems like the result could then be used as a coordinate actuator to drive the model in a forward dynamic simulation with no specified motions but that will reproduce the specified motions.
I have two questions about the close kinematic chain case with skewed joint axes:
1) Is my proposed method for calculating a coordinate actuator moment to be used in a forward dynamic simulation correct?
2) Even if it is, is there an easier way to get the component of the joint reaction moment that is already along the direction of a skewed joint axis, similar to what an Inverse Dynamics Analysis gives automatically for an open kinematic chain?
Thanks for any light that you can shed on these questions!
For a model with only open kinematic chains, we can perform a standard OpenSim inverse dynamics analysis, and OpenSim reports the inverse dynamics moments that would generate the input motion. Even if the joint axes are skewed in their respective bodies, OpenSim still outputs joint moments that can immediately be used as coordinate actuators to perform a forward dynamic simulation that will replicate the original inverse dynamic input motion. So all is good.
In contrast, if we have a model with a closed kinematic chain, then to do an inverse dynamics analysis, we need to prescribe the motion of the independent coordinates and perform a forward dynamic simulation. If we perform a Joint Reaction Analysis as part of the forward dynamic simulation, we can get the net reaction force and moment from each joint applied to either the parent or child body and expressed in terms of the parent or child body. HOWEVER, if some of the axes in the model are skewed with respect to the parent or child body, it is not clear how to take the outputs of the Joint Reaction Analysis and turn them into coordinate actuators that can be applied to the skewed joint axes of the model when performing a subsequent forward dynamic simulation.
One possible way around this problem is to take the joint reaction moment output by the Joint Reaction Analysis, express it in terms of the body in which the skewed joint axis is fixed, and then dot it with the skewed joint axis unit vector to get the component of the reaction moment along the axis direction. It seems like the result could then be used as a coordinate actuator to drive the model in a forward dynamic simulation with no specified motions but that will reproduce the specified motions.
I have two questions about the close kinematic chain case with skewed joint axes:
1) Is my proposed method for calculating a coordinate actuator moment to be used in a forward dynamic simulation correct?
2) Even if it is, is there an easier way to get the component of the joint reaction moment that is already along the direction of a skewed joint axis, similar to what an Inverse Dynamics Analysis gives automatically for an open kinematic chain?
Thanks for any light that you can shed on these questions!