Skip to content

Bathymetry Integration

Woensug Choi edited this page Aug 13, 2021 · 29 revisions

Contents

Overview

A bathymetry integration plugin that automatically spawns and removes bathymetry DEM grids converted preliminarily from high-resolution NOAA bathymetry data.

  • Features
    • Automatic spawn/remove with vehicle locations
    • Overlaps for mission continuity

The plugin is defined at .world file and would require input settings used for preliminarily converted bathymetry data (prefix, spacings, number of columns/rows, anchored latitude/longitude) and a projection frame (epsg coordinate frame). The bathymetry tile data is located at dave/models/dave_worlds/bathymetry/.Also, each robot will provide its locations with intervals defined at urdf. The plugin is also usable for multiple robots.

*The plugin was developed by Micahel Jakuba at WHOI and implemented to the dave project by Woensug Choi.

Tutorial: How-to

Quickstart

  1. Download files for bathymetry demo and recompile to install
cd ~/uuv_ws/src/dave
wget -qO- https://bit.ly/3j1rJik | tar xvf -
cd ~/uuv_ws
catkin_make
  1. Run gazebo with roslaunch command for bathy_dave launch file:
roslaunch dave_demo_launch dave_bathymetry_demo.launch
  1. Unpause gazebo by clicking the play button at the bottom-left of the window.
  2. Wait (around 10 seconds) until the initial bathymetry is loaded based on the initial Rexrov spawned position.
  3. Zoom out to see the edge of the loaded bathymetry grid tile and the Rexrov.
  4. Give ocean current to move Rexrov toward the edge of the grid tile
  5. Run this command on a new terminal window (three lines at once)
rosservice call /hydrodynamics/set_current_velocity "velocity: 5.0
horizontal_angle: 2.8
vertical_angle: 0.0"

The Rexrov wil drift away due to input ocean current velocity pushing it to the edge of the loaded grid tile. When the Rexrov meets the edge, the new tile will be loaded beyond the overlap region.

Plugin settings

The details of the plugin settings are described at the end of the dave_bathymetry_demo.world file

    <plugin name="bathy_dave_plugin" filename="libbathy_dave_plugin.so">
      <projection epsg="26987" />
      <bathymetry interval_s="0.1">
        <grid prefix="ncei19" priority="1" epsg="26987" colmax="5" rowmax="5" anchor_lon="-70.699" anchor_lat="41.509" spacing_lon="0.012" spacing_lat="0.010" />
      </bathymetry>

Also, the update rate for the tiles is specified in each robot description. dave/urdf/robots/rexrov_description/urdf/rexrov_oberon7_bathymetry.xacro

  <gazebo>
      <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
        <robotNamespace>/$(arg namespace)</robotNamespace>
        <robotParam>/$(arg namespace)/robot_description</robotParam>

        <bathymetry>
          <interval_s>10.0</interval_s>
        </bathymetry>

      </plugin>
  </gazebo>

Video clip

Video tutorial link (2 min 50 sec)

Video tutorial link (2 min 50 sec)

Importing more bathymetry data

  • Advanced, approx. 2 hours at initial set-up, approx. 0.5 hours for conversions The bathymetry data need to be converted to be imported using the plugin. The converter to obtain bathymetry tiles from raw data downloaded from NOAA can be found at Bathymetry converter. Follow this tutorial.
Clone this wiki locally