chrono::ChLinkMotorLinearSpeed Class Reference

Description

A linear motor that enforces the speed v(t) between two frames on two bodies, using a rheonomic constraint.

Note: no compliance is allowed, so if the actuator hits an undeformable obstacle it hits a pathological situation and the solver result can be unstable/unpredictable. Think at it as a servo drive with "infinitely stiff" control. This type of motor is very easy to use, stable and efficient, and should be used if the 'infinitely stiff' control assumption is a good approximation of what you simulate (e.g., very good and reactive controllers). By default it is initialized with constant speed: df/dt= 1. Use SetSpeedFunction() to change to other speed functions.

#include <ChLinkMotorLinearSpeed.h>

Inheritance diagram for chrono::ChLinkMotorLinearSpeed:
Collaboration diagram for chrono::ChLinkMotorLinearSpeed:

Public Member Functions

 ChLinkMotorLinearSpeed (const ChLinkMotorLinearSpeed &other)
 
virtual ChLinkMotorLinearSpeedClone () const override
 "Virtual" copy constructor (covariant return type).
 
void SetSpeedFunction (const std::shared_ptr< ChFunction > function)
 Set the speed function of time v(t). More...
 
std::shared_ptr< ChFunctionGetSpeedFunction () const
 Get the speed function v(t).
 
void SetMotionOffset (double mo)
 Get initial offset, by default = 0.
 
double GetMotionOffset ()
 Get initial offset.
 
void SetAvoidPositionDrift (bool mb)
 Set if the constraint must avoid position drift. More...
 
bool GetAvoidPositionDrift ()
 Set if the constraint is in "avoid position drift" mode.
 
virtual double GetMotorForce () const override
 Get the current actuator reaction force.
 
virtual unsigned int GetNumCoordsPosLevel () override
 Get the number of coordinates at the position level. More...
 
ChVariablesGenericVariables ()
 
virtual void ArchiveOut (ChArchiveOut &archive_out) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive_in) override
 Method to allow deserialization of transient data from archives. More...
 
- Public Member Functions inherited from chrono::ChPhysicsItem
 ChPhysicsItem (const ChPhysicsItem &other)
 
ChSystemGetSystem () const
 Get the pointer to the parent ChSystem().
 
virtual void SetSystem (ChSystem *m_system)
 Set the pointer to the parent ChSystem(). More...
 
void AddVisualModel (std::shared_ptr< ChVisualModel > model)
 Add an (optional) visualization model. More...
 
std::shared_ptr< ChVisualModelGetVisualModel () const
 Access the visualization model (if any). More...
 
void AddVisualShape (std::shared_ptr< ChVisualShape > shape, const ChFrame<> &frame=ChFrame<>())
 Add the specified visual shape to the visualization model. More...
 
std::shared_ptr< ChVisualShapeGetVisualShape (unsigned int i) const
 Access the specified visualization shape in the visualization model (if any). More...
 
void AddVisualShapeFEA (std::shared_ptr< ChVisualShapeFEA > shapeFEA)
 Add the specified FEA visualization object to the visualization model. More...
 
std::shared_ptr< ChVisualShapeFEAGetVisualShapeFEA (unsigned int i) const
 Access the specified FEA visualization object in the visualization model (if any). More...
 
virtual unsigned int GetNumVisualModelClones () const
 Return the number of clones of the visual model associated with this physics item. More...
 
void AddCamera (std::shared_ptr< ChCamera > camera)
 Attach a ChCamera to this physical item. More...
 
std::vector< std::shared_ptr< ChCamera > > GetCameras () const
 Get the set of cameras attached to this physics item.
 
virtual bool IsCollisionEnabled () const
 Tell if the object is subject to collision. More...
 
virtual void AddCollisionModelsToSystem (ChCollisionSystem *coll_sys) const
 Add to the provided collision system any collision models managed by this physics item. More...
 
virtual void RemoveCollisionModelsFromSystem (ChCollisionSystem *coll_sys) const
 Remove from the provided collision system any collision models managed by this physics item. More...
 
virtual void SyncCollisionModels ()
 Synchronize the position and bounding box of any collsion models managed by this physics item.
 
virtual ChAABB GetTotalAABB ()
 Get the entire AABB axis-aligned bounding box of the object. More...
 
virtual void GetCenter (ChVector3d &mcenter)
 Get a symbolic 'center' of the object. More...
 
virtual void Setup ()
 This might recompute the number of coordinates, DOFs, constraints, in case this might change (ex in ChAssembly), as well as state offsets of contained items (ex in ChMesh)
 
virtual void ForceToRest ()
 Set zero speed (and zero accelerations) in state, without changing the position. More...
 
virtual unsigned int GetNumCoordsVelLevel ()
 Get the number of coordinates at the velocity level. More...
 
unsigned int GetOffset_x ()
 Get offset in the state vector (position part)
 
unsigned int GetOffset_w ()
 Get offset in the state vector (speed part)
 
unsigned int GetOffset_L ()
 Get offset in the lagrangian multipliers.
 
void SetOffset_x (const unsigned int moff)
 Set offset in the state vector (position part) Note: only the ChSystem::Setup function should use this.
 
void SetOffset_w (const unsigned int moff)
 Set offset in the state vector (speed part) Note: only the ChSystem::Setup function should use this.
 
void SetOffset_L (const unsigned int moff)
 Set offset in the lagrangian multipliers Note: only the ChSystem::Setup function should use this.
 
virtual void IntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv)
 Computes x_new = x + Dt , using vectors at specified offsets. More...
 
virtual void IntStateGetIncrement (const unsigned int off_x, const ChState &x_new, const ChState &x, const unsigned int off_v, ChStateDelta &Dv)
 Computes Dt = x_new - x, using vectors at specified offsets. More...
 
virtual void VariablesQbIncrementPosition (double step)
 Increment item positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More...
 
virtual void ConstraintsBiLoad_Qc (double factor=1)
 Adds the current Qc (the vector of C_dtdt=0 -> [Cq]*q_dtdt=Qc ) to the known term (b_i) of encapsulated ChConstraints.
 
virtual void ConstraintsFbLoadForces (double factor=1)
 Adds the current link-forces, if any, (caused by springs, etc.) to the 'fb' vectors of the ChVariables referenced by encapsulated ChConstraints.
 
- Public Member Functions inherited from chrono::ChObj
 ChObj (const ChObj &other)
 
int GetIdentifier () const
 Get the unique integer identifier of this object. More...
 
void SetTag (int tag)
 Set an object integer tag (default: -1). More...
 
int GetTag () const
 Get the tag of this object.
 
void SetName (const std::string &myname)
 Set the name of this object.
 
std::string GetName () const
 Get the name of this object.
 
double GetChTime () const
 Gets the simulation time of this object.
 
void SetChTime (double m_time)
 Sets the simulation time of this object.
 
virtual std::string & ArchiveContainerName ()
 

Friends

class ChSystemMulticore
 

Additional Inherited Members

 Type of guide constraint.
- Protected Member Functions inherited from chrono::ChObj
int GenerateUniqueIdentifier ()
 
- Protected Attributes inherited from chrono::ChPhysicsItem
ChSystemsystem
 parent system
 
std::shared_ptr< ChVisualModelInstancevis_model_instance
 instantiated visualization model
 
std::vector< std::shared_ptr< ChCamera > > cameras
 set of cameras
 
unsigned int offset_x
 offset in vector of state (position part)
 
unsigned int offset_w
 offset in vector of state (speed part)
 
unsigned int offset_L
 offset in vector of lagrangian multipliers
 
- Protected Attributes inherited from chrono::ChObj
double ChTime
 object simulation time
 
std::string m_name
 object name
 
int m_identifier
 object unique identifier
 
int m_tag
 user-supplied tag
 

Member Function Documentation

◆ ArchiveIn()

void chrono::ChLinkMotorLinearSpeed::ArchiveIn ( ChArchiveIn archive_in)
overridevirtual

Method to allow deserialization of transient data from archives.

Method to allow de serialization of transient data from archives.

Reimplemented from chrono::ChLinkMotorLinear.

◆ GetNumCoordsPosLevel()

virtual unsigned int chrono::ChLinkMotorLinearSpeed::GetNumCoordsPosLevel ( )
inlineoverridevirtual

Get the number of coordinates at the position level.

Might differ from coordinates at velocity level if quaternions are used for rotations.

Reimplemented from chrono::ChPhysicsItem.

◆ SetAvoidPositionDrift()

void chrono::ChLinkMotorLinearSpeed::SetAvoidPositionDrift ( bool  mb)
inline

Set if the constraint must avoid position drift.

If true, it means that the constraint is satisfied also at the position level, by integrating the velocity in a separate auxiliary state. Default, true.

◆ SetSpeedFunction()

void chrono::ChLinkMotorLinearSpeed::SetSpeedFunction ( const std::shared_ptr< ChFunction function)
inline

Set the speed function of time v(t).

To prevent acceleration pikes, this function should be C0 continuous.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono/physics/ChLinkMotorLinearSpeed.h
  • /builds/uwsbel/chrono/src/chrono/physics/ChLinkMotorLinearSpeed.cpp