Plume Tracing in UUV Simulator
Winter 2019
This is my MSR winter quarter project. I used the plume simulation feature in the UUV Simulator to implement a plume detection and tracing algorithm. UUV Simulator was developed by Musa Morena Marcusso Manhaes in the scope of the EU ECSEL project 662107 SWARMS for unmanned underwater vehicle simulation based on Gazebo and ROS. It supports custom underwater robot models, thruster managers, and seabed models, as well as utilizing underwater dynamics and plume disperson models from academic papers and established works. Since when it began development in 2016 it seems to have gained significant traction in the maritime ROS and robotics community, especially in Europe. It was a topic of discussion at underwater ROS workshops such as BTS 2018 and an underwater ROS workshop at Woods Hole Oceanographic Institution.

With this project I aimed to familiarize myself with a potentially useful tool for future work and study in the field of underwater robots. Furthermore, I hoped to learn about the unique challenges that face robots in underwater environments through implementation of plume detection and tracing, a very common application of underwater robots in both commercial and scientific uses.
To individually test and familiarize myself with the components that I would need for the final plume tracing portion of my project, I used the documentation and tutorials provided online and in the packages. Shown to the left is the RViz simulation of one of the tutorials, moving the robot with the default PID controller by passing it a list of positional waypoints. Moving the robot is also possible by passing in a waypoint through a service call, which is what I used in my final implementation.
At this point I should mention that all the simulation for this project took place in RViz; the visualization for plume simulation is currently unavailable on Gazebo. User-controllable options for the plume included: location of the source, plume visualization boundary, and velocity of the current (limited to horizontal manipulation). Simulated particles naturally rise due to buoyancy modelled within the simulator. Shown below is a plume with no current and a 'normal' plume. The colors represent time from creation - particles are continuously created at source.
The methodology for plume tracing came from "Chemical plume tracing via an autonomous underwater vehicle" by Farrell, Pang, and Li. The method centralizes on the idea of behavior-based planning, drawing inspiration from animal intelligence in nature. It also assumes that the AUV involved knows its position and current flow velocity, and can sense chemical concentrations in the vicinity. Lastly, the planning method assumes a two-dimensional plume. A diagram of the behaviors and their relationships with each other from the aforementioned paper is shown below.
Behaviors:
J. A. Farrell, S. Pang, W. Li, "Chemical plume tracing via an autonomous underwater vehicle", IEEE Journal Of Oceanic Engineering, vol. 30, no. 2, pp. 428-442, April 2005.
To briefly summarize the planning, the AUV will traverse the operational area until it finds the plume. The robot then zigzags up the plume, backtracking as necessary when it loses contact with the plume, until it can determine a source based on a stored list of contact positions. The demo video of the plume tracing in action is embedded below. Since the simulation is not very fast, the video has been sped up. The white spherical marker that appears near the robot at the end of the demo is where the robot thinks the plume source is.
Please refer to the project repository for details.