Assumptions:
- A vehicle, considered a rigid body, is represented by a point in space, being this point the center of gravity (CoG).
- The CoG is the origin of the body-frame.
- There is no representation of multiples objects, neither contact or interaction betwen them.
- There is no representation of the environment (floor, surface, water currents, waves, etc)1.
- The vehicle is considered to be surrended by fluid infinitly in all directions.
- The gravity field is considered uniform.
The present dynamic model implements the formulation proposed mainly by Fossen.
It implements the dynamics and kinematics of a vehicle and its hydrodynamics effect. See UWV Parameters section. There are three induced hydrodynamics efforts:
- Added mass due to the inertia of the surrouding fluid.
- Damping effect.
- Restoring gravitational forces (weight and buoyancy).
The general formulation is:
M dv/dt + C(M,v) v + D(v) v + G = Efforts
The hydrodynamics effect is embedded in the parameters passed to the model. It is required that the parameters are identified previously. (The code doesn't estimate them).
In order to add some flexibility on how each term would affect the model, the present library has a ModelType property. It allows the user to choose a specific formulation of the damping term or to ignore the Coriolis effect for a simplified model, for example. See UWV Parameters section.
The control efforts applied in the vechile are considered to be in the CoG. In case a set of propellers need to be represented, the dynamic model just requires the resultant effect (in terms of forces and torques) in the CoG.
In the 6 degree of freedom (DOF) formulation, the order of representing each DOF is:
- linear x (surge)
- linear y (sway)
- linear z (heave)
- angular around x (roll)
- angular around y (pitch)
- angular around z (yaw)
The efforts applied as well as the velocities (both linear and angular) are represented in body-frame. The position and the orientation are represented in fixed world-frame.
As the main focus of the present library is the dynamics effect, it is possile to make the simulator ignores the kinematics part of the formulation. ModelSimulator defines if the integration from velocities to pose and orientation would be done or not. See Simulation section.
The parameters that need to be set for the dynamic model are:
- Model Type
- Inertia Matrix
- Damping Matrices
- Distance Body to Center of Buoyancy
- Weight
- Buoyancy
Model Type defines which effects will be present in the model. At the moment, three Model Types are defined:
-
SIMPLE: It ignores the Coriolis effect and consider the Damping vector with two terms, the first the linear damping and the second quadratic damping. It is based on Smallwood.
Note: For considering a decoupled model, one must set the matrices of inertia and damping as diagonal.
-
COMPLEX: It considers the Coriolis effect and a Damping vector with six terms, all quadratic damping, being relative to the 3 linear and 3 angular DOF respectivelly. It is based on McFarland.
-
INTERMEDIATE: It considers the Coriolis effect and a Damping vector with two terms, the first the linear and the second the quadratic damping.
Other ways to formulate the model could be defined.
The 6X6 inertia matrix consider both the inertia of the vehicle and the added mass.
M = Mvehicle + Madded_mass
with,
Mvehicle =
mass*Identity(3x3) | Zero(3x3) |
---|---|
Zero(3x3) | Inertia(3x3) |
The Damping Matrices
is a vector of 6X6 matrices and his terms are defined according to the Model Type.
For the SIMPLE and INTERMEDIATE model type, the damping is represented by a linear and a quadratic term.
D(v) = Dlinear + Dquadratic |v|
For the COMPLEX case, the damping is represented by six quadratic terms, one for each DOF.
D(v) = sum(|vi| Di)
with i going from 1 to 6.
Weight = mass * gravity
Resultant buoyancy
The simulation performs an integration of the states derivatives (acceleration and velocity) to the states of interest (velocity and position/orientation) using for that a 4th order Runge-Kutta. The parameters of the simulation are:
- Model Simulator
- Sampling Time
- Simulation per Cycle
- Initial Time
Model Simulator defines if the integration of velocities to position/orientation will be made. The two possibilities are:
-
DYNAMIC: Only the dynamics is taken in account. It integrates the accelerations to update the velocities. For this case, updated orientation needs to be set.
-
DYNAMIC_KINEMATIC: It considers both the dynamics and the kinematics and do the integration of all states.
The step used in integration
Can be increased for precision purpose of the integration.
1: Future improvements on the library may include the definition of an environment, with a floor (inferior limit) and a surface (superior limit) and the presence of water current. It also may include the possibility to add more than one object and defines their interaction.