Class LoopsCompoundBody#

Inheritance Relationships#

Base Type#

Class Documentation#

class LoopsCompoundBody : public Karana::Dynamics::CECompoundBody#

Constraint embedding class for a bodies with loop constraints.

This class is embedding loop constraint for a subgraph of bodies.

Public Functions

virtual ~LoopsCompoundBody()#

Destructor.

inline virtual const std::string &typeString() const noexcept override#

Returns the type string of the SubTree.

Returns:

The type string.

LoopsCompoundBody(const std::string &name, kc::ks_ptr<SubGraph> parent_subtree, kc::ks_ptr<SubGraph> bodies_tree, const std::vector<kc::ks_ptr<PhysicalBody>> &indep_bodies)#

Constructs a LoopsCompoundBody.

Public Static Functions

static kc::ks_ptr<LoopsCompoundBody> create(kc::ks_ptr<SubGraph> parent_subtree, const std::string &name, kc::ks_ptr<SubGraph> component_bodies, std::vector<kc::ks_ptr<PhysicalBody>> indep_bodies)#

Protected Functions

virtual void _updateDependentQ(const km::Vec &min_Q) const override#

Convert the input minimal coords Q into the full dependent Q for all the aggregated subhinges for the compound body

virtual km::Mat _constraintX() const override#

Convert the input full dependent coords for all the aggregated subhinges for the compound body Q into the minimal independent Q Return the X matrix that maps the min independent U to the full dependent U for the compound body

virtual km::Mat _constraintXdot() const override#

Return the Xdot matrix that is the time derivative of the X constraint matrix

virtual km::Mat _invConstraintX() const override#

Return the X matrix pseudo inverse that maps the full dependent U for the compound body to the min independent U

virtual kc::ks_ptr<CoordData> _makeIndependentCoordData() override#

Create a CoordData with just the CoordBased with the independent coordinates for this body

Protected Attributes

kc::ks_ptr<ConstraintKinematicsSolver> _cks = nullptr#

the CK solver used to solve for the dependent coordinates

kc::ks_ptr<MultiJacobianGenerator> _jacgen = nullptr#

Jacobian generator for computing X and Xdot. Has no frozen coords

std::vector<kc::ks_ptr<PhysicalBody>> _indep_bodies#

list of bodies whose subhinges define the independent coords for the compound body

kc::ks_ptr<CoordData> _subhge_coord_data = nullptr#

Clone of bodies_tree subhinge coord data - except this one has no frozen subhinges

std::vector<unsigned int> _independent_offsets#
std::vector<unsigned int> _dependent_offsets#