Skip to content

How to generate new science data?

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

Science data is loaded by the Science Sensors Plugin to generate salinity, temperature, chlorophyll and current sensors. Values are read from a csv file with the following fields, indicating their names in the first line of the file:

elapsed_time_second
latitude_degree
longitude_degree
depth_meter
sea_water_temperature_degC
sea_water_salinity_psu
mass_concentration_of_chlorophyll_in_sea_water_ugram_per_liter
eastward_sea_water_velocity_meter_per_sec
northward_sea_water_velocity_meter_per_sec

In a csv file along with some data, it should look like this:

elapsed_time_second,latitude_degree,longitude_degree,depth_meter,sea_water_temperature_degC,sea_water_salinity_psu,mass_concentration_of_chlorophyll_in_sea_water_ugram_per_liter,eastward_sea_water_velocity_meter_per_sec,northward_sea_water_velocity_meter_per_sec
0,36.8024781413352,-121.829647676843,0,16.4777568562924,33.4406838402469,5.59611283346742,-0.0303889695119743,0.0241565608953265
0,36.8024781413352,-121.82933140694,0,16.4880578739855,33.440635436351,5.56476938370162,-0.0299001674494645,0.0237270864038717

In order to load new data files the World Config Plugin interface, the /world/science_sensor/environment_data_path topic or the <data_path> option can be used.

Examples of science data can be found in the data directory of this repository.

Usage

As mentioned above there's several ways to load new science data into the system. Lets look into the steps of how this can be done.

The world file

New science data files can be loaded through the world file. Example science data csv files can be found here. Lets use the buoyant_tethys.sdf world file as as an example. The buoyant_tethys.sdf world file uses the Science Sensors System to load the data from the csv file and publish it through the plugin topics. The path for the science data is specified in the world file as follows:

<!-- Example world file --->

<world>

   <!-- Other plugins and models --->

    <plugin
      filename="ScienceSensorsSystem"
      name="tethys::ScienceSensorsSystem">
      <data_path>2003080103_mb_l3_las.csv</data_path>
      <!--data_path>2003080103_mb_l3_las_1x1km.csv</data_path-->
      <!--data_path>simple_test.csv</data_path-->
    </plugin>

   <!-- Other plugins and models --->

</world>

The example world file above is loading the 2003080103_mb_l3_las.csv file that is located in the data directory of the repository.

Note that the file must be located in one of the directories in the resource path of Gazebo and you should use the path relative to that directory. In order to add a new directory to the gazebo data path you can just add the path to the GZ_SIM_RESOURCE_PATH environment variable. This can be done by sing the following command:

export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/your/path/to/data/dir

Run the world file and read the published data

To run the world and load the data the following command can be executed:

gz sim buoyant_tethys.sdf 

Any of the available topics for chlorophyll, salinity, current or temperature can be checked directly by using the Gazebo CLI commands. Here is an example that echoes the chlorophyll values:

gz topic -e -t /model/tethys/chlorophyll

Alternative ways to load csv files

The csv file can also be loaded using the topic /world/science_sensor/environment_data_path topic. In the previous world the path can be updated to a new csv just by publishing to the topi. Here is the example of how to this using the Gazebo CLI:

gz topic -t /world/science_sensor/enviroment_data_path_topic -m gz.msgs.StringMsg -p 'data:"/path/to/datafile"'

The the reflected changes can be checked again using the CLI:

gz topic -e -t /model/tethys/salinity

Finally the csv file can also be loaded through the GUI using the world config plugin. The loaded file will be published on its topic /world/science_sensor/environment_data_path.