Skip to content

AUV

AUV class - implements a Matlab-like simulation of an AUV in C++. More...

#include <AUV.h>

Public Functions

Name
AUV(double mass, double fluid_density, double zg, double vehicle_density, const Eigen::Vector3d & inertia_tensor, const Eigen::Matrix< double, 6, 1 > & linear_damping_tensor, const Eigen::Matrix< double, 6, 1 > & quadratic_damping_tensor, const Eigen::Matrix< double, 6, 1 > & added_mass_tensor, const Eigen::MatrixXd & allocation_matrix, const Eigen::Vector3d & lump_param_positive, const Eigen::Vector3d & lump_param_negative, const Eigen::Vector2d & min_max_thruster_input, double thrusters_gain, double thrusters_pole, double thrusters_delay, double sampling_period, const Eigen::Vector3d & disturbance_mean, const Eigen::Vector3d & disturbance_sigma, const Eigen::Vector3d & disturbance_minimum, const Eigen::Vector3d & disturbance_maximum)
void update(double dt, const Eigen::VectorXd & thrust)
State getState()
void setState(const State & state)
unsigned int getNumberThrusters()

Detailed Description

class AUV;

AUV class - implements a Matlab-like simulation of an AUV in C++.

Author: Marcelo Jacinto

Version: 1.0.0

Date: 2021/11/12

Copyright: MIT

Public Functions Documentation

function AUV

AUV(
    double mass,
    double fluid_density,
    double zg,
    double vehicle_density,
    const Eigen::Vector3d & inertia_tensor,
    const Eigen::Matrix< double, 6, 1 > & linear_damping_tensor,
    const Eigen::Matrix< double, 6, 1 > & quadratic_damping_tensor,
    const Eigen::Matrix< double, 6, 1 > & added_mass_tensor,
    const Eigen::MatrixXd & allocation_matrix,
    const Eigen::Vector3d & lump_param_positive,
    const Eigen::Vector3d & lump_param_negative,
    const Eigen::Vector2d & min_max_thruster_input,
    double thrusters_gain,
    double thrusters_pole,
    double thrusters_delay,
    double sampling_period,
    const Eigen::Vector3d & disturbance_mean,
    const Eigen::Vector3d & disturbance_sigma,
    const Eigen::Vector3d & disturbance_minimum,
    const Eigen::Vector3d & disturbance_maximum
)

Parameters:

  • mass The mass of the vehicle in Kg
  • fluid_density The density of the fluid the vehicle is in (a.k.a water density)
  • zg The center of gravity of the (sphere-like) vehicle
  • vehicle_density The density of the vehicle (Kg/m^3)
  • inertia_tensor A vector of 3 elements with the diagonal of the inertia matrix
  • linear_damping_tensor A vector of 6 elements with the diagonal of the linear damping matrix
  • quadratic_damping_tensor A vector of 6 elements with the diagonal of the quadratic damping matrix
  • added_mass_tensor A vector of 6 elements with the diagonal of the added mass matrix
  • allocation_matrix A matrix with the contributions of each thruster to the forces in X,Y and Z and the arms for computing the moments of inertia later [Fx, Fy, Fz, lx, ly, lz] (each line represents one thruster)
  • lump_param_positive The thrust curve parameters for the right side of the curve
  • lump_param_negative The thrust curve parameters for the left side of the curve
  • min_max_thruster_input The minimum and maximum normalized thruster inputs [min_input, max_input]^T
  • thrusters_gain
  • thrusters_pole
  • thrusters_delay
  • sampling_period An approximated sampling period (s) at which the simulation will run (NOTE: this is needed to discretize the thrusters model only and the integration of the dynamics of the vehicle will use the dt variable provided through the update method)
  • disturbance_mean A vector with the mean of the ocean disturbances (gaussian process)
  • disturbance_sigma A vector with the standard deviation of the ocean disturbances (gaussian process)
  • disturbance_minimum A vector with the minimum values for the ocean disturbances
  • disturbance_maximum A vector with the maximum values for the ocean disturbances

FarolAUV class constructor

function update

void update(
    double dt,
    const Eigen::VectorXd & thrust
)

Parameters:

  • dt The time difference (in seconds) between the last function call and the disturbance function call
  • thrust A vector of n elements with the thrust to apply to each of the n vehicle thursters (normalized between 0 and 1)

Method to update the state of the vehicle given the thrust applied to each individual thruster. This method verifies if (dt >= 0) and the size of thrust vector is the same as the number of thrusters of the model. If some of these conditions does not verify, a std::invalid_argument exception is thrown

function getState

inline State getState()

Return: A state object with the state of the vehicle

Method that returns a copy of the disturbance state of the vehicle

function setState

inline void setState(
    const State & state
)

Parameters:

  • state A state reference that contains the desired state of the vehicle

Method that sets the disturbance state of the vehicle to a new pre-defined state

function getNumberThrusters

inline unsigned int getNumberThrusters()

Return: The number of thrusters of the AUV

Method that returns the number of thrusters of the AUV based on the number of lines of the allocation matrix received by the constructor upon object construction


Updated on 2024-03-07 at 10:30:46 +0000


Last update: March 7, 2024