controls  3.0.0
Public Member Functions | List of all members
AsvSystemDynamics Class Reference

3DOF hydrodynamic model for the autonomous surface vehicle More...

#include <AsvSystemDynamics.h>

Inheritance diagram for AsvSystemDynamics:
SystemDynamicsBase

Public Member Functions

 AsvSystemDynamics ()
 Constructs the ASV dynamics model as a 3DOF (XY-Yaw) system. More...
 
Vector6d getInverseDynamics (const Vector6d &velocity, const Vector6d &acceleration, const Quaterniond &orientation) const override
 Computes inverse dynamics and zeros the Z, Roll, and Pitch components. More...
 
- Public Member Functions inherited from SystemDynamicsBase
 SystemDynamicsBase (const bool is3DOF)
 Constructs the dynamics base and sets the DOF flag. More...
 
virtual ~SystemDynamicsBase ()=default
 Virtual destructor. More...
 
const Matrix6dgetM () const
 Returns the total mass matrix M = Mrb + Ma. More...
 
const Matrix6dgetMrb () const
 Returns the rigid-body mass matrix Mrb. More...
 
const Matrix6dgetMaMatrix () const
 Returns the added-mass matrix Ma. More...
 
const Matrix6dgetDlMatrix () const
 Returns the linear damping matrix Dl. More...
 
const Matrix6dgetDnlMatrix () const
 Returns the quadratic damping matrix Dnl. More...
 
const Vector3d & getRgbVec () const
 Returns the centre of gravity in the body frame. More...
 
const Vector3d & getRbbVec () const
 Returns the centre of buoyancy in the body frame. More...
 
const Vector3d & getFgn () const
 Returns the gravitational force vector in the world frame. More...
 
const Vector3d & getFbn () const
 Returns the buoyancy force vector in the world frame. More...
 
double getMassValue () const
 Returns the vehicle mass in kg. More...
 
double getWeight () const
 Returns the vehicle weight in N. More...
 
double getBuoyancyValue () const
 Returns the net buoyancy force in N. More...
 
Matrix6d getD (const Vector6d &velocity) const
 Evaluates the total damping matrix D(v) = Dl + Dnl*diag(|v|) More...
 
Matrix6d getCrb (const Vector6d &velocity) const
 Evaluates the rigid-body Coriolis matrix Crb(v) More...
 
Matrix6d getCa (const Vector6d &velocity) const
 Evaluates the added-mass Coriolis matrix Ca(v) More...
 
Matrix6d getC (const Vector6d &velocity) const
 Evaluates the total Coriolis matrix C(v) = Crb(v) + Ca(v) More...
 
Vector6d getG (const Quaterniond &q) const
 Evaluates the 6DOF gravitational and buoyancy restoring vector G(q) More...
 
Vector6d getG (const Vector3d &rpy) const
 Evaluates the 6DOF gravitational and buoyancy restoring vector G(rpy) More...
 
void setMass (double m)
 Sets vehicle mass and recomputes weight, buoyancy, and the rigid-body mass matrix. More...
 
void setBuoyancy (double factor)
 Sets the buoyancy force as a scale factor relative to vehicle weight. More...
 
void setI (const std::array< double, 6 > &I)
 Sets the rigid-body inertia tensor. More...
 
void setMa (const std::array< double, 6 > &m)
 Sets the diagonal added-mass coefficients. More...
 
void setDl (const std::array< double, 6 > &d)
 Sets the diagonal linear damping coefficients. More...
 
void setDnl (const std::array< double, 6 > &d)
 Sets the diagonal quadratic (nonlinear) damping coefficients. More...
 
void setRbb (const std::array< double, 3 > &rbb)
 Sets the centre-of-buoyancy position in the body frame. More...
 
void setRgb (const std::array< double, 3 > &rgb)
 Sets the centre-of-gravity position in the body frame. More...
 

Additional Inherited Members

- Public Attributes inherited from SystemDynamicsBase
const bool isSystem3DOF
 True if the vehicle is constrained to the XY-Yaw plane (3DOF surface vehicle) More...
 

Detailed Description

3DOF hydrodynamic model for the autonomous surface vehicle

Inherits the dynamics from SystemDynamicsBase with isSystem3DOF = true and overrides getInverseDynamics() to zero the Z, Roll, and Pitch force components, constraining the vehicle to the XY-Yaw plane. Parameters are loaded at runtime via ROS parameters in ControlsROS2Wrapper.

Constructor & Destructor Documentation

◆ AsvSystemDynamics()

AsvSystemDynamics::AsvSystemDynamics ( )

Constructs the ASV dynamics model as a 3DOF (XY-Yaw) system.

Member Function Documentation

◆ getInverseDynamics()

Vector6d AsvSystemDynamics::getInverseDynamics ( const Vector6d velocity,
const Vector6d acceleration,
const Quaterniond &  orientation 
) const
overridevirtual

Computes inverse dynamics and zeros the Z, Roll, and Pitch components.

Parameters
velocity[in] 6DOF body-frame velocity
acceleration[in] 6DOF body-frame acceleration
orientation[in] Vehicle orientation as a unit quaternion
Returns
6-element force vector with Z, Roll, and Pitch entries set to zero

Reimplemented from SystemDynamicsBase.


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