Marine systems simulation
CoRiBoDynamics::Structures::Winch Class Reference

#include <Winch.h>

+ Collaboration diagram for CoRiBoDynamics::Structures::Winch:

Classes

struct  AttachedElement
 
class  InitialStatesLoader
 
struct  ObjectAndStates
 
class  SpatialPartition
 
class  SpoolingDevice
 
struct  StateData
 

Public Member Functions

 Winch (double drum_length, double drum_diameter, double flange_diameter, double flange_thickness, double beta)
 
vec6 ReactionForces ()
 
void SetWinchRotation (double theta, double omega)
 
double GetWinchTheta ()
 
double GetWinchOmega ()
 
Quat GetStandardizedOrientationNED ()
 
void SetStates (const vec3 &P, const Quat &Q, const vec3 &V, const vec3 &W)
 Returns orientation in a standardized Forward-Starboard-Down oriented coordinate system in a Roll/Pitch/Yaw convention. More...
 
JointConstraint::ExternalRigidCouplingWinchCoupling (DiscreteElement *connection_element)
 
void PushElement (AttachedElement &attached_element)
 
void PushElement (DiscreteElement *element, const vec3 &P, const Quat &Q)
 
void PushElement (DiscreteElement *element, const double *X)
 
void PopElement (ObjectFactoryStack< DiscreteElement::TempStates > &temp_states_buffer)
 
vec3 P ()
 
Quat Q ()
 
vec3 V ()
 
vec3 W ()
 
Quat baseQ ()
 
const std::vector< AttachedElement, Eigen::aligned_allocator< AttachedElement > > GetAttachedCableElements ()
 
std::vector< std::vector< CollisionManager::ExternalObject * > > GetAttachedGeometry (const std::vector< CollisionManager::InternalObject * > &InternalObjects)
 
std::vector< CollisionManager::ExternalObject * > CollisionCandidates (GeometryTools::AABB aabb)
 
double DrumVirtualRadius ()
 
double DrumRadius ()
 
double DrumDiameter ()
 
double DrumLength ()
 
double FlangeRadius ()
 
double FlangeDiameter ()
 
void SetLineStructure (SupergridWinchCable *line_structure)
 
virtual void XmlInfo (TiXmlElement &xml_node)
 
double GetRetractedLength ()
 
void WriteAttachedGeometryDataToFile (std::string filename)
 
void LoadAttachedGeometryDataFromFile (InitialStatesLoader states, std::vector< DiscreteElement * > &super_elements, size_t &super_ix, size_t &sub_ix, const vec3 &target_point)
 
GeometryTools::AABB GetWinchAABB ()
 
void SetSpoolingDevice (vec3 relative_position, double rail_radius)
 
SpoolingDeviceGetSpoolingDevice ()
 
CollisionManager::ExternalObjectGetSpoolingDeviceContactGeometry ()
 

Static Public Member Functions

static void WinchInitFileInfo (std::string filename, std::vector< double > &angle, std::vector< double > &retracted_length)
 

Protected Member Functions

void UpdateWinchDrumGeometry ()
 

Protected Attributes

SpatialPartition m_spatial_partition
 
SupergridWinchCablem_line_structure
 
double m_beta
 
ObjectFactoryStack< ObjectAndStatesm_attached_geometry
 
std::map< int, ObjectAndStates * > m_accumulated_candidates
 
std::vector< AttachedElement, Eigen::aligned_allocator< AttachedElement > > m_attached_elements
 
std::vector< CollisionManager::ExternalObject * > m_winch_geometry
 relative position and orientation of attached cable elements
 
CollisionManager::ExternalObject m_drum_capsule
 
CollisionManager::ExternalObject m_flange1_disk
 
CollisionManager::ExternalObject m_flange2_disk
 
CollisionManager::ExternalObject m_block_pin_upper
 
CollisionManager::ExternalObject m_block_pin_lower
 
double m_drum_length
 
double m_drum_diameter
 
double m_flange_diameter
 
double m_flange_thickness
 
double m_virtual_radius
 
double m_nominal_cable_radius
 
double m_base_Q_array [4]
 
double m_block_upper_V_array [3]
 
double m_block_lower_V_array [3]
 
double m_block_upper_P_array [3]
 
double m_block_lower_P_array [3]
 
double m_winch_Q_array [4]
 
double m_flange1_V_array [3]
 
double m_flange2_V_array [3]
 
double m_flange1_P_array [3]
 
double m_flange2_P_array [3]
 
double m_theta
 
double m_omega
 winch rotation
 
Quat m_base_Q
 winch rotation speed
 
vec3 m_base_W
 winch base orientation
 
vec3 m_P
 winch base rotation speed
 
Quat m_Q
 center position
 
vec3 m_V
 center orientation
 
vec3 m_W
 center velocity
 
vec3 m_winch_base_pin_connection
 center angular velocity
 
vec3 m_winch_base_flange_connection
 
vec3 m_winch_base_connection_vector
 
JointConstraint::ExternalRigidCoupling m_winch_connection
 
SpoolingDevicem_spooling_device
 

Detailed Description

Author
Jorgen Haavind Jensen

Implements a winch drum with physical collition contact. Cable elements are "added" to the winch as they are deactivated from dynamic simulation. The deactivated elements are merged into a contact mesh that the active cable elements can collide with.

Member Function Documentation

◆ GetAttachedCableElements()

const std::vector< AttachedElement, Eigen::aligned_allocator< AttachedElement > > CoRiBoDynamics::Structures::Winch::GetAttachedCableElements ( )
inline

returns all cable elements that are currently retracted on to the winch"

◆ ReactionForces()

vec6 CoRiBoDynamics::Structures::Winch::ReactionForces ( )

Get the sum of all forces [N] and torques [Nm] acting on the winch by the cable. Includes the weight of cable "on the drum"

◆ SetStates()

void CoRiBoDynamics::Structures::Winch::SetStates ( const vec3 &  P,
const Quat &  Q,
const vec3 &  V,
const vec3 &  W 
)

Update the position and velocities of the winch. Note that the "identity rotation quaternion" refers to a winch laying flat on its side.

◆ SetWinchRotation()

void CoRiBoDynamics::Structures::Winch::SetWinchRotation ( double  theta,
double  omega 
)

Update the rotation state of the winch. {theta} is rotation in radians and {omega} is rotation speed in radians per second


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