-
Notifications
You must be signed in to change notification settings - Fork 15
Architectural Overview
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.
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):
Check the Tethys Comm Plugin architecture for more information on how it operates.
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:
These are plugins that simulate different parts or behaviors of the Tethys class LRAUV.
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):
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):
To learn more about how to use the Tethys Comm Plugin:
System that creates and updates DopplerVelocityLog (DVL) sensors.
Doppler Velocity Log (DVL) sensor, built as a custom rendering sensor to leverage GPU shaders for speed.
To learn more about how to use the Doppler Velocity Log (DVL) Sensor:
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:
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:
- Science Sensor System Configuration
- Science Sensor System Topics (API)
- Science Sensor System Services (API)
- Generate and Load new Science Data
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.
These are plugins that help simulate parts of the environment where the robot moves.
This plugin helps simulate an acoustics based communication channel.
To learn more about how to use the Acoustic Comms Plugin:
- Acoustic Comms Plugin Configuration
- Acoustic Comms API
- Example on how to send and receive packets using the acoustic subsystem
This plugin provides hydrodynamic behavior for underwater vehicles.
To learn more about how to use the hydrodynamics 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:
Allows to print simulation step size and real time factor values for later plotting and debugging purposes.
These plugins add functionality that help users visualize the simulation or interact with it in an easier way.
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>
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:
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.
Allows the user to spawn Tethys class LRAUV from the Gazebo UI panel.
Allows the user to load a CSV file with data to configure the different environment values.
To learn more about the World Config Plugin: