AGX Dynamics 2.41.3.0
Loading...
Searching...
No Matches
agx::IGenericConstraint Class Referenceabstract

#include <IGenericConstraint.h>

+ Inheritance diagram for agx::IGenericConstraint:

Public Member Functions

virtual ~IGenericConstraint ()
 
Bool add (RigidBody *rb)
 Register rigid body part of this many-body constraint.
 
Bool addChild (Constraint *constraint)
 Add child constraint (binary or many-body).
 
virtual void addNotification () final override
 Called when added to a simulation.
 
GenericConstraintComplianceMatrixgetComplianceMatrix () const
 If this constraint active rows doesn't vary and isStaticSize = true has been flagged when enabling support for compliance matrix, this method will return the matrix at any time.
 
int getNumDOF () const override
 
virtual void onAddNotification ()=0
 
virtual void onPostSolve ()=0
 
virtual bool onPreSolve ()=0
 
virtual void onRemoveNotification ()=0
 
Bool remove (RigidBody *rb)
 Remove rigid body from this many-body constraint.
 
void removeAllBodies ()
 Removes all bodies previously added.
 
void removeAllChildren ()
 Removes all child constraints previously added.
 
Bool removeChild (Constraint *constraint)
 Remove child constraint.
 
virtual void removeNotification () final override
 Called when removed from a simulation.
 
void render (class agxRender::RenderManager *manager, float scale) const override
 Inherited method of how to render this constraint into DebugRenderer.
 
Bool setRigidBodies (RigidBody *rb1, RigidBody *rb2)
 Assign/update rigid bodies of this constraint.
 
void setSupportComplianceMatrix (Bool enable, Bool isStaticSize=false)
 Enable/disable updateComplianceMatrix callback with write access to the elements in the compliance matrix of this constraint.
 
virtual void updateComplianceMatrix (GenericConstraintComplianceMatrix *matrix)=0
 
- Public Member Functions inherited from agx::Constraint
agx::Bool addElementaryConstraint (const agx::Name &name, agx::ElementaryConstraint *elementaryConstraint)
 Add elementary constraint (like Spherical, Dot1, Dot2 etc) given name.
 
agx::Bool addSecondaryConstraint (const agx::Name &name, agx::ElementaryConstraint *secondaryConstraint)
 Add secondary constraint (like motor, range and/or lock etc) given name.
 
 AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE (agx::Constraint)
 
template<typename T >
T * as ()
 Try to do dynamic_cast on the constraint and return a pointer to the casted constraint.
 
template<typename T >
const T * as () const
 Try to do dynamic_cast on the constraint and return a pointer to the casted constraint.
 
RealVector calculateCurrentViolation () const
 Calculates the current violation of the ordinary degrees of freedom of this constraint, e.g., three translational and two rotational (total 5 elements) of a hinge, i.e., controllers DOF are not included.
 
agx::UInt calculateNumActiveRows () const
 Calculates the current number of active rows, including both elementary and secondary constraints.
 
template<typename T >
ref_ptr< T > createFromBody (Vec3 bodyPoint, Vec3 bodyAxis, RigidBody *rb1, RigidBody *rb2)
 
template<typename T >
ref_ptr< T > createFromWorld (Vec3 worldPoint, Vec3 worldAxis, RigidBody *rb1, RigidBody *rb2)
 
agx::AttachmentgetAttachment (agx::UInt i) const
 
agx::RigidBodyAttachmentgetAttachment (const agx::RigidBody *rb) const
 
agx::AttachmentPairgetAttachmentPair () const
 
agx::RigidBodygetBodyAt (agx::UInt i)
 
const agx::RigidBodygetBodyAt (agx::UInt i) const
 
virtual agx::Real getCompliance (agx::UInt dof) const
 Get the compliance for DOF i.
 
agx::Real getCurrentForce (agx::UInt dof) const
 Consider using getLastForce instead.
 
virtual Real getDamping (agx::UInt dof) const
 Get the damping for DOF dof.
 
virtual agx::Real getElasticity (agx::UInt dof) const
 Get the elasticity for DOF i.
 
agx::ElementaryConstraintgetElementaryConstraint (const agx::UInt index) const
 
agx::ElementaryConstraintgetElementaryConstraintGivenName (const agx::Name &name) const
 Find elementary constraint given name.
 
agx::Bool getEnable () const
 
agx::Bool getEnableComputeForces () const
 
bool getEnableDebugRendering () const
 
bool getEnableLinearization () const
 
agx::UInt32 getEntityId () const
 
agx::RangeReal getForceRange (agx::UInt dof=0) const
 Get the force range for DOF dof.
 
agx::Bool getLastForce (agx::UInt bodyIndex, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body with bodyIndex.
 
agx::Bool getLastForce (const agx::RigidBody *rb, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body rb.
 
agx::Bool getLastLocalForce (agx::UInt bodyIndex, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body with bodyIndex.
 
agx::Bool getLastLocalForce (const agx::RigidBody *rb, agx::Vec3 &retForce, agx::Vec3 &retTorque, agx::Bool giveForceAtCm=false) const
 If 'compute forces' is enabled, returns the last force and torque applied by this constraint on the body rb.
 
agx::UInt getNumBodies () const
 returns the number of bodies involved
 
virtual int getNumDOF () const =0
 
agx::UInt getNumElementaryConstraints () const
 
agx::UInt getNumSecondaryConstraints () const
 
virtual agx::RegularizationParametersgetRegularizationParameters (agx::UInt i)
 
virtual const agx::RegularizationParametersgetRegularizationParameters (agx::UInt i) const
 
agx::ConstraintImplementationgetRep ()
 
const agx::ConstraintImplementationgetRep () const
 
agx::ElementaryConstraintgetSecondaryConstraint (const agx::UInt index) const
 
agx::ElementaryConstraintgetSecondaryConstraintGivenName (const agx::Name &name) const
 Find secondary constraint given name.
 
agx::Constraint::SolveType getSolveType () const
 
agx::Bool getValid () const
 
agx::Bool isEnabled () const
 
virtual agx::Bool rebind ()
 Rebind this constraint, i.e., use current state as the initial configuration.
 
agx::Bool removeElementaryConstraint (agx::ElementaryConstraint *elementaryConstraint)
 Remove elementary constraint.
 
agx::Bool removeElementaryConstraint (const agx::Name &name)
 Remove elementary constraint.
 
agx::Bool removeSecondaryConstraint (agx::ElementaryConstraint *secondaryConstraint)
 Remove secondary constraint.
 
agx::Bool removeSecondaryConstraint (const agx::Name &name)
 Remove secondary constraint.
 
virtual void render (class agxRender::RenderManager *mgr, float scale) const =0
 Inherited method of how to render this constraint into DebugRenderer.
 
void restore (agxStream::InputArchive &in) override
 
virtual void restoreLightData (agxStream::StorageStream &str) override
 
void setCompliance (agx::Real compliance)
 Set the compliance of this constraint for all DOFs.
 
virtual void setCompliance (agx::Real compliance, agx::Int dof)
 Set the compliance of this constraint for the i:th DOF.
 
void setDamping (agx::Real damping)
 Set the damping of this constraint for all DOFs.
 
virtual void setDamping (agx::Real damping, agx::Int dof)
 Set the damping of this constraint for the i:th DOF.
 
virtual void setElasticity (agx::Real elasticity)
 Set the elasticity of this constraint for all DOFs.
 
virtual void setElasticity (agx::Real elasticity, agx::Int dof)
 Set the elasticity of this constraint for the i:th DOF.
 
virtual void setEnable (agx::Bool enable)
 Enable/disable a constraint.
 
void setEnableComputeForces (agx::Bool enable)
 Enable (or disable) computation of the forces applied to the dynamic bodies in this constraint.
 
void setEnableDebugRendering (agx::Bool enable)
 Enable/disable debug rendering of this constraint.
 
void setEnableLinearization (bool enable)
 Pass true to enable linearization of constraint compliance.
 
void setForceRange (agx::RangeReal forceRange)
 Assign force range for all DOF of the elementary constraints.
 
void setForceRange (agx::RangeReal forceRange, agx::Int dof)
 Assign force range, of an elementary constraint, for a given DOF.
 
void setForceRange (agx::Real lower, agx::Real upper, agx::Int dof)
 Assign force range, of an elementary constraint, for a given DOF.
 
void setSolveType (agx::Constraint::SolveType solveType)
 Specify the solve type for this constraint.
 
void store (agxStream::OutputArchive &out) const override
 
virtual void storeLightData (agxStream::StorageStream &str) const override
 
- Public Member Functions inherited from agx::Interaction
 Interaction ()
 Default constructor.
 
 AGXSTREAM_DECLARE_SERIALIZABLE_BASE (agx::Interaction)
 
const agx::NamegetName () const
 
agx::PropertyContainergetPropertyContainer ()
 
const agx::PropertyContainergetPropertyContainer () const
 
agxSDK::SimulationProxygetSimulationProxy () const
 
agx::Bool hasPropertyContainer () const
 
virtual void postSystemCallback (agx::DynamicsSystem *)
 Called after all post step events, after solve.
 
virtual void preSystemCallback (agx::DynamicsSystem *)
 Called after all pre step events, before solve.
 
void setName (const agx::Name &name)
 Name this interaction.
 
void setPropertyContainer (agx::PropertyContainer *propertyContainer)
 Assign a new property container.
 
virtual void updateForce (agx::DynamicsSystem *dynamicsSystem)
 This virtual method is implemented so that it computes the interaction forces on all the physical bodies implicated.
 
- Public Member Functions inherited from agx::Referenced
 Referenced ()
 Default constructor.
 
 Referenced (const Referenced &)
 
template<typename T >
T * as ()
 Subclass casting.
 
template<typename T >
const T * as () const
 
template<typename T >
T * asSafe ()
 Safe subclass casting, return nullptr if template type does not match.
 
template<typename T >
const T * asSafe () const
 
int getReferenceCount () const
 
template<typename T >
bool is () const
 Subclass test.
 
Referencedoperator= (const Referenced &)
 Assignment operator. Will increment the number of references to the referenced object.
 
void reference (void *ptr=nullptr) const
 Explicitly increment the reference count by one, indicating that this object has another pointer which is referencing it.
 
void unreference (void *ptr=nullptr) const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
void unreference_nodelete () const
 Decrement the reference count by one, indicating that a pointer to this object is referencing it.
 
- Public Member Functions inherited from agxStream::Serializable
virtual ~Serializable ()
 Destructor for normal C++ use but hidden from SWIG bindings.
 
virtual const char * getClassName () const
 
bool getEnableSerialization () const
 
bool getEnableUuidGeneration ()
 
agx::UInt32 getIndex () const
 This index is given at creation of this object.
 
virtual StorageAgent * getStorageAgent () const =0
 
agx::Uuid getUuid () const
 
bool isFinished () const
 
void setEnableSerialization (bool flag)
 Set to false to disable serialization of this object.
 
void setFinished ()
 Tells this class that it is restored correctly and should not be deleted during destruction of an Archive.
 
void setUuid (const agx::Uuid &uuid)
 Explicitly set a Uuid on a serializable object.
 

Static Public Member Functions

static void onCleanup (const agxSDK::Simulation *simulation)
 
static void onPostSolveCallback (const agxSDK::Simulation *simulation)
 
static void onPreSolveCallback (const agxSDK::Simulation *simulation)
 
- Static Public Member Functions inherited from agx::Constraint
static agx::Bool calculateFramesFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, agx::Vec3 secondBodyAxis, const agx::RigidBody *body, agx::Frame *bodyFrame, const agx::RigidBody *otherBody, agx::Frame *otherFrame)
 Calculates the constraint attachment frames given point and axes in body coordinates of body.
 
static agx::Bool calculateFramesFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, const agx::RigidBody *body, agx::Frame *bodyFrame, const agx::RigidBody *otherBody, agx::Frame *otherFrame)
 Calculates the constraint attachment frames given point and axis in body coordinates of body.
 
static agx::Bool calculateFramesFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, agx::Vec3 secondWorldAxis, const agx::RigidBody *rb1, agx::Frame *rb1Frame, const agx::RigidBody *rb2, agx::Frame *rb2Frame)
 Given a point and two axes in world, this function calculates each local attachment frame for one or two bodies.
 
static agx::Bool calculateFramesFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, const agx::RigidBody *rb1, agx::Frame *rb1Frame, const agx::RigidBody *rb2, agx::Frame *rb2Frame)
 Given a point and an axis in world, this function calculates each local attachment frame for one or two bodies.
 
template<typename T >
static agx::ref_ptr< T > createFromBody (agx::Vec3 bodyPoint, agx::Vec3 bodyAxis, agx::RigidBody *rb1, agx::RigidBody *rb2=nullptr)
 Creates a constraint given a point and an axis in rb1 model frame.
 
template<typename T >
static agx::ref_ptr< T > createFromWorld (agx::Vec3 worldPoint, agx::Vec3 worldAxis, agx::RigidBody *rb1, agx::RigidBody *rb2=nullptr)
 Creates a constraint given a point and an axis in world frame.
 
- Static Public Member Functions inherited from agx::Interaction
static agxStream::Serializablecreate (agxStream::InputArchive &)
 
- Static Public Member Functions inherited from agx::Referenced
template<typename T >
static bool ValidateCast (const Referenced *object)
 
- Static Public Member Functions inherited from agxStream::Serializable
static void setEnableUuidGeneration (bool flag)
 Specify if there should be UUID:s generated for each new Serializable object. By default it is enabled.
 

Protected Member Functions

 IGenericConstraint (GenericConstraintImplementation *implementation)
 
- Protected Member Functions inherited from agx::Constraint
 Constraint ()
 
virtual ~Constraint ()
 
virtual void addNotification () override
 Called when added to a simulation.
 
virtual void postSystemCallback (agx::DynamicsSystem *dynamicsSystem) override
 Called after all post step events, after solve.
 
virtual void preSystemCallback (agx::DynamicsSystem *dynamicsSystem) override
 Called after all pre step events, before solve.
 
virtual void removeNotification () override
 Called when removed from a simulation.
 
void setRep (agx::ConstraintImplementation *_rep)
 
virtual void setSimulation (agxSDK::Simulation *simulation) override
 Assign simulation.
 
virtual void setSystem (agx::DynamicsSystem *)
 
- Protected Member Functions inherited from agx::Interaction
virtual ~Interaction ()
 Reference counted object, protected destructor.
 
virtual void addNotification ()
 Called when added to a simulation.
 
virtual void removeNotification ()
 Called when removed from a simulation.
 
virtual void setSimulation (agxSDK::Simulation *simulation)
 Assign simulation.
 
- Protected Member Functions inherited from agx::Referenced
virtual ~Referenced ()
 Destructor.
 
void allocateObserverVector () const
 
void deleteUsingDeleteHandler () const
 
- Protected Member Functions inherited from agxStream::Serializable
 Serializable ()
 Default constructor.
 
 Serializable (const Serializable &other)
 Copy constructor.
 
void generateUuid ()
 

Additional Inherited Members

- Public Types inherited from agx::Constraint
enum  SolveType { DIRECT = 1 , ITERATIVE = (1<<2) , DIRECT_AND_ITERATIVE = (DIRECT | ITERATIVE) }
 Specifies in what solvers the constraint will be solved. More...
 
- Static Protected Member Functions inherited from agx::Referenced
static DeleteHandlergetDeleteHandler ()
 
static void setDeleteHandler (DeleteHandler *handler)
 Internal: Set a DeleteHandler to which deletion of all referenced counted objects will be delegated to.
 
- Protected Attributes inherited from agx::Constraint
agx::ConstraintImplementationm_implementation
 
- Protected Attributes inherited from agx::Referenced
Mutex m_mutex
 
ObserverContainer m_observers
 
AtomicValue m_refCount
 

Detailed Description

Definition at line 26 of file IGenericConstraint.h.

Constructor & Destructor Documentation

◆ ~IGenericConstraint()

virtual agx::IGenericConstraint::~IGenericConstraint ( )
virtual

◆ IGenericConstraint()

agx::IGenericConstraint::IGenericConstraint ( GenericConstraintImplementation *  implementation)
protected

Member Function Documentation

◆ add()

Bool agx::IGenericConstraint::add ( RigidBody rb)

Register rigid body part of this many-body constraint.

Parameters
rb- rigid body to add
Returns
true if added, false if nullptr.

◆ addChild()

Bool agx::IGenericConstraint::addChild ( Constraint constraint)

Add child constraint (binary or many-body).

Note
It's up to the user to make sure this child constraint isn't added multiple times.
Parameters
constraint- child constraint to add
Returns
true if added, false if nullptr.

◆ addNotification()

virtual void agx::IGenericConstraint::addNotification ( )
finaloverridevirtual

Called when added to a simulation.

Reimplemented from agx::Constraint.

◆ getComplianceMatrix()

GenericConstraintComplianceMatrix * agx::IGenericConstraint::getComplianceMatrix ( ) const

If this constraint active rows doesn't vary and isStaticSize = true has been flagged when enabling support for compliance matrix, this method will return the matrix at any time.

Otherwise nullptr is returned.

Returns
compliance matrix if accessible, otherwise nullptr

◆ getNumDOF()

int agx::IGenericConstraint::getNumDOF ( ) const
overridevirtual
Returns
the number of DOF for this constraint, not including secondary constraints. -1 if num DOF is undefined for the constraint.

Implements agx::Constraint.

◆ onAddNotification()

virtual void agx::IGenericConstraint::onAddNotification ( )
pure virtual

◆ onCleanup()

static void agx::IGenericConstraint::onCleanup ( const agxSDK::Simulation simulation)
static

◆ onPostSolve()

virtual void agx::IGenericConstraint::onPostSolve ( )
pure virtual

◆ onPostSolveCallback()

static void agx::IGenericConstraint::onPostSolveCallback ( const agxSDK::Simulation simulation)
static

◆ onPreSolve()

virtual bool agx::IGenericConstraint::onPreSolve ( )
pure virtual

◆ onPreSolveCallback()

static void agx::IGenericConstraint::onPreSolveCallback ( const agxSDK::Simulation simulation)
static

◆ onRemoveNotification()

virtual void agx::IGenericConstraint::onRemoveNotification ( )
pure virtual

◆ remove()

Bool agx::IGenericConstraint::remove ( RigidBody rb)

Remove rigid body from this many-body constraint.

Parameters
rb- rigid body to remove
Returns
true if removed, otherwise false.

◆ removeAllBodies()

void agx::IGenericConstraint::removeAllBodies ( )

Removes all bodies previously added.

◆ removeAllChildren()

void agx::IGenericConstraint::removeAllChildren ( )

Removes all child constraints previously added.

◆ removeChild()

Bool agx::IGenericConstraint::removeChild ( Constraint constraint)

Remove child constraint.

Parameters
constraint- child constraint to remove
Returns
true if removed, otherwise false.

◆ removeNotification()

virtual void agx::IGenericConstraint::removeNotification ( )
finaloverridevirtual

Called when removed from a simulation.

Reimplemented from agx::Constraint.

◆ render()

void agx::IGenericConstraint::render ( class agxRender::RenderManager mgr,
float  scale 
) const
overridevirtual

Inherited method of how to render this constraint into DebugRenderer.

Implements agx::Constraint.

◆ setRigidBodies()

Bool agx::IGenericConstraint::setRigidBodies ( RigidBody rb1,
RigidBody rb2 
)

Assign/update rigid bodies of this constraint.

Note that rb1 must be valid for this constraint to be valid.

Parameters
rb1- first rigid body
rb2- second rigid body
Returns
true if this constraint is valid after the bodies has been assigned, otherwise false

◆ setSupportComplianceMatrix()

void agx::IGenericConstraint::setSupportComplianceMatrix ( Bool  enable,
Bool  isStaticSize = false 
)

Enable/disable updateComplianceMatrix callback with write access to the elements in the compliance matrix of this constraint.

If isStaticSize is true, meaning the number of active rows in this constraint is constant, the matrix is accessible and wont reset to zero each time step.

Note
This is only supported by the direct solver.
Parameters
enable- true to enable, false to disable
isStaticSize- true if this constraints active rows is constant, e.g., LockJoint, enabling access to the compliance matrix in runtime and the matrix isn't reset to zero each time step.

◆ updateComplianceMatrix()

virtual void agx::IGenericConstraint::updateComplianceMatrix ( GenericConstraintComplianceMatrix matrix)
pure virtual

The documentation for this class was generated from the following file: