Function Karana::Dynamics::Algorithms::evalFramesOSCM#
Defined in File Algorithms.h
Function Documentation#
-
km::Mat Karana::Dynamics::Algorithms::evalFramesOSCM(SubTree &st, const std::vector<kc::ks_ptr<kf::Frame>> &body_frames, const std::vector<kc::ks_ptr<PhysicalSubhinge>> &subhinges = {})#
Calculate the tree system operational space compliance matrix (OSCM).
The OSCM is defined at J*M^{-1}*J^*, where J is the Jacobian matrix, and M is the mass matrix of the system. This method does not use this brute force expression. Instead it uses the {{ SOA }} recursive methods to do this computation without ever computing the mass matrix or its inverse, or even the Jacobian matrix itself.
In addition, one or more subhinges can also be provided. The returned matrix will include additional mass matrix inverse rows and columns for these subhinges. This is equivalent to computing the OSCM for the “extended Jacobian” defined as [J \ E], where E is a selector matrix that picks out a subset of the subhinges in the system. While the rows and columns associated with the frames define a mapping between spatial forces and spatial accelerations, the subhinge rows and columns define the mapping between generalized forces and generalized accelerations. The off-diagonal sub-blocks define cross-term mappings.
If no subhinges are specified, the returned matrix is the regular OSCM, and if no frames are specified, the returned matrix is the sub-block of the mass matrix inverse with rows and columns for the specified subhinges. This more general form of the OSCM allows users to properly handle a mix of constraints from the task and joint spaces.
See the System Properties Algorithms section for more information.
- Parameters:
st – SubTree instance
body_frames – list of Frame instances to compute the OSCM for
subhinges – list of physical subhinge mass matrix inverse contributions to include
- Returns:
The tree OSCM matrix