Page last modified: Aug 12 2020.
Contents
Foward Looking Sonar
Demonstration and tutorial for forward looking sonar (FLS) examples to illustrate using visual models (meshes and textures) along with configuring the UUV Simulator image sonar plugin (see Image Sonar Notes and Description).
Visual Models
Three FLS models are available. Each runs stand-alone in a tank. Here are the views and point clouds for each:
BlueView P900
The physical BlueView P900-90 operates at 900 kHz. The sensor characteristics are as follows
- (Horizontal) field-of-view, 90 degrees.
- Beam width, 90 x 1 degrees
- Number of beams, 512
- Beam spacing 0.18 degrees
- Range resolution 2.45 cm
The parameters of the UUV Simulator image sonar plugin is configured in the blueview_p900/model.sdf. The horizontal field of view is set to 90 degrees. The sonar simulation is based on a depth camera image with a width of 512 points and a height of 114 (corresponding to 20 degree vertical FOV), resulting in 58,368 depth points that are provided as a ROS point cloud.
The plugin further processes this depth image to generate a 2D sonargram.
Video: https://drive.google.com/file/d/1u5Nix6vD8MxADoiyXhxg3vwYggv_2qJ7/view?usp=sharing
Run by typing:
roslaunch nps_uw_sensors_gazebo sonar_tank_blueview_p900.launch
BlueView M450
Scan is 90 degrees horizontal by 10 degrees vertical. Horizontal scan is 256 points, each one degree wide and 10 degrees tall resulting in a 90 degree view. See the blueview_m450/model.sdf for configuration of the image sonar plugin. We model this as a point cloud of axially symmetric points. Views are similar to above but showing the BlueView part and showing a shorter view, only 10 degrees vertical.
Run by typing:
roslaunch nps_uw_sensors_gazebo sonar_tank_blueview_m450.launch
SeaBat F50: Scan is set to 90 degrees horizontal. Horizontal scan is 256 points and only one scan across. See the seabat_f50/model.sdf for configuration of the image sonar plugin. In this view, only one row of dots show in the point cloud.
Run by typing:
roslaunch nps_uw_sensors_gazebo sonar_tank_seabat_f50.launch
Tutorial: Creating FLS Standalone Example
In this example we will demonstrate one aspect of the fls_gazebo
ROS package that includes a Gazebo model of a Blueview P900 forward looking sonar. See creating new models for generic past instructions on creating models.
The goal is to great a standalone instance of the forward looking sonar model currently used in uuv_simulator
to support testing and evaluation.
See wiki description of the image sonar plugin for details on the plugin.
Quickstart
To run the example, start gazebo with…
roslaunch fls_gazebo blueview_standalone.launch
which will start gazebo with a world file that includes the sonar model and two target objects.
Then…
roslaunch fls_gazebo blueview_visualize.launch
The launch file also opens rqt and rviz to visualize the plugin generated images and point cloud.
If everything works, you should see these three windows
Below provides an outline of the steps taken to create this example.
Creating a ROS package and a new model
Create the model by creating a fls_gazebo/models/blueview_P900
directory with the following:
- model.config
- model.sdf
- meshes/p900.dae
Make sure you have the <export>
tags completed in the package.xml
file so that the models are available to Gazebo.
Run Gazebo with roslaunch
so that Gazebo is aware of the models in the ROS package. (Just running gazebo
doesn’t add the correct model path.)
roslaunch gazebo_ros empty_world.launch
You should now be able to graphically insert the model and see it in Gazebo. Go to Insert tab in the GUI and navigation tot he blueview_p900 model. If successful you should see something like this…
Create a world file with the new model already in place
Following basic outline of Tutorial: Using roslaunch to start Gazebo, world files and URDF models. Create a launch file and a world file to facilitate loading our blueview_standalone.world
file with roslaunch
.
roslaunch fls_gazebo blueview_standalone.launch
Also add a few objects within the field of view of the sonar.
Adding and configuring the plugin
Generally following the Intermediate: Velodyne tutorial. In the model.sdf
description, add the sensor (of type DepthCameraSensor) within the forward_sonar_link
link SDF tags.
There is not a lot of documentation on the Gazebo depth camera: Use a Gazebo Depth Camera with ROS and DepthCameraSensor.
Add viewer / visualization
rosrun rqt_image_view rqt_image_view
Use the rqt_image_view to look at the other image types to get a sense of the image generation process.
Can also visualize using the Gazebo Topic Viewer
Then you can use Gazebo Translation and Rotation modes to move around the sonar head or the targets. Here is a video demonstration of what you should see.