Skip to content

Architectural Overview

Marco A. Gutiérrez edited this page Sep 14, 2022 · 25 revisions

The LRAUV Simulation runs in Gazebo. Gazebo is a set development libraries and cloud services to make simulation easy, you can learn more about Gazebo's structure here.

The simulation is structured in the form of Gazebo plugins. Each one of them add different functionalities to the Gazebo simulation. Please, have a look at the Gazebo documentation if you want to learn how Gazebo plugins work.

Overall Architecture

The primary way to interact with the simulation is through the Tethys Comm Plugin. The control software will read process the state messages in order to produce the LRAUVCommand that send the commands to the LRUAV (click on the image to access the version with info links):

LRUAV Control Feedback Architecture

Check the Tethys Comm Plugin architecture for more information on how it operates.

Plugins Details

The plugins used here relate to different parts of the simulation system depending on their functionality. Here is a rough classification of them looking at what parts of the simulation they might affect:

LRAUV World Environment User Interface
Tethys LRAUV Gazebo Sim Water World Tethys Gazebo Sim
Tethys Comm Plugin Acoustic Comms Plugin Control Panel Plugin
Doppler Velocity Log Hydrodynamics Plugin Reference Axis
Range Bearing World Comm Plugin Spawn Panel Plugin
Doppler Velocity Log System Time Analysis Plugin World Config Plugin
Science Sensor System

LRAUV Tethys

These are plugins that simulate different parts or behaviors of the Tethys class LRAUV.

Tethys Comm Plugin

This plugin takes care of the communication with the LRAUV Simulated Vehicle. This is the main point for the control software to send commands and the main source of information about the state of the simulation. As shown in the general architecture image above, the control software will use the state information to create the next command that will be sent to the Tethys Comm Plugin to indicate new actions.

Here is an overview on the architecture related to how the information is collected to Tethys Comm Plugin to create the state message and send publish it for the control software to read it (click on the image to access the version with info links):

LRUAV State Message Architecture

This is an overview of the processing of commands by the Tethys Comm Plugin and how the different parts of the LRAUVCommand reach the correct entities in the system (click on the image to access the version with info links):

LRUAV Send Command Architecture

To learn more about how to use the Tethys Comm Plugin:

Doppler Velocity Log System

System that creates and updates DopplerVelocityLog (DVL) sensors.

Doppler Velocity Log

Doppler Velocity Log (DVL) sensor, built as a custom rendering sensor to leverage GPU shaders for speed.

Doppler Velocity Log Sensor

To learn more about how to use the Doppler Velocity Log (DVL) Sensor:

Range Bearing

This plugin simulates a two way ranging protocol over an acoustic network including the delays in the system.

To learn more about how to use the Range Bearing plugin:

Science Sensors System

System that creates and updates the science sensors that are read from a csv file. It leverages on the LOOKUP_SENSOR macro to create different sensors. It currently contains:

  • A salinity sensor that detects and publishes salinity values in PSU.
  • A sensor that detects temperature, publishes in Celsius.
  • A sensor that detects and publishes chlorophyll values in ug / L.
  • A sensor that detects 3D current velocities in m / s using the following consensus: X: East, Y: North, Z: Up.

To learn more about how to use the Science Sensor System:

Lookup Sensor

Generic macro for sensors that look up a value in a table. It is currently used by the Science Sensors System to generate the sensors that are feed from a csv file.

World Environment

These are plugins that help simulate parts of the environment where the robot moves.

Acoustic Comms Plugin

This plugin helps simulate an acoustics based communication channel.

To learn more about how to use the Acoustic Comms Plugin:

Hydrodynamics Plugin

This plugin provides hydrodynamic behavior for underwater vehicles.

To learn more about how to use the hydrodynamics plugin:

World Comm Plugin

This plugin allows the controller to spawn vehicles into simulation. I listens to LRAUVInit messages from the controller to spawn the vehicles.

To learn more about how to use the World Comm Plugin:

Time Analysis Plugin

Allows to print simulation step size and real time factor values for later plotting and debugging purposes.

User Interface

These plugins add functionality that help users visualize the simulation or interact with it in an easier way.

Reference Axis

This plugin adds a few reference frames to the 3D scene:

  • ENU: floating op the user camera's top-left corner
  • NED: floating op the user camera's top-right corner
  • FSK: attached to all models specified in <fsk>

Reference Axis Plugin

Unfortunately, the floating text doesn't work on Ogre2 yet, so to see it, you need to use Ogre1:

gz sim buoyant_tethys.sdf -v 4 -r --render-engine=ogre

To learn more about how to set up the reference axis plugin:

Control Panel Plugin

This plugin adds UI controls over the Tethys class LRAUV. It allows the user to change the values of the rudder, elevator, mass shifter, thruster, buoyancy engine and to drop the weight.

Control Panel Plugin

Spawn Panel Plugin

Allows the user to spawn Tethys class LRAUV from the Gazebo UI panel.

Spawn Panel  Plugin

World Config Plugin

Allows the user to load a CSV file with data to configure the different environment values.

World Config Plugin

To learn more about the World Config Plugin: