Marine systems simulation
|
#include <Winch.h>
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::ExternalRigidCoupling * | WinchCoupling (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) |
SpoolingDevice * | GetSpoolingDevice () |
CollisionManager::ExternalObject * | GetSpoolingDeviceContactGeometry () |
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 |
SupergridWinchCable * | m_line_structure |
double | m_beta |
ObjectFactoryStack< ObjectAndStates > | m_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 |
SpoolingDevice * | m_spooling_device |
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.
|
inline |
returns all cable elements that are currently retracted on to the winch"
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"
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.
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