ROS API

virtualplume_node

virtualplume_node is a wrapper for the VirtualPlume library. Robots can access odor readings over a service and visualization of the plume is possible on rviz over the plumesim_markers topic.

Published Topics

~virtualplume_markers (visualization_msgs/Marker)
  • Plume particles for visualization purposes.

Services

~read_virtualplume (virtualplume/ReadVirtualPlume)
  • Read the chemical value on the robot's current position.

Parameters

General Parameters
The following parameters affect VirtualPlume no matter the plume type.
~type (string, default: )
  • Type of plume. Accepted values are meadering, gaussian, fluent and pslog. Keep in mind that VirtualPlume provides Gaussian and Meandering plumes as a quick and easy way to get started. These will not take obstacles into account, neither do they provide realistic chemical plume simulations. For that you should use CFD software such as ANSYS Fluent. PlumeSim accepts Fluent log files and plays them back in ROS. You can also use a pslog file containing data from your choice of CFD software, your own plume generation algorithms or even from a recorded plume using a chemical sensor network.
~global_frame_id (string, default: /map)
  • The frame_id in which odor readings and markers will be returned.
~color/r (float, default: 1.0)
  • Red component of the RGB plume color.
~color/g (float, default: 0.0)
  • Green component of the RGB plume color.
~color/b (float, default: 0.0)
  • Blue component of the RGB plume color.
~color/a (float, default: 0.9)
  • Alpha component of the color.
~ns (string, default: plume)
  • Plume namespace.
~id (int, default: 0)
  • Plume id.
~frequency (float, default: 1.0)
  • Plume update frequency.
Meadering
Parameters for the case of type=meadering.
~releasepoint/x (float, default: 0.0)
  • Release point x.
~releasepoint/y (float, default: 0.0)
  • Release point y.
~releasepoint/z (float, default: 0.0)
  • Release point z.
~arena/start/x (float, default: 0.0)
  • Arena start corner x.
~arena/start/y (float, default: 0.0)
  • Arena start corner y.
~arena/end/x (float, default: 0.0)
  • Arena send corner x.
~number_of_points (int, default: 100)
  • Number of points to represent the plume.
~release_rate (float, default: 10)
  • Plume release rate.
~dispersion_coeficient (float, default: 0.06)
  • Plume dispersion coeficient.
~radius (float, default: 0.1)
  • Plume reading bubble radius.
Gaussian
Parameters for the case of type=gaussian.
~releasepoint/x (float, default: 0.0)
  • Release point x.
~releasepoint/y (float, default: 0.0)
  • Release point y.
~releasepoint/z (float, default: 0.0)
  • Release point z.
~arena/start/x (float, default: 0.0)
  • Arena start corner x.
~arena/start/y (float, default: 0.0)
  • Arena start corner y.
~arena/end/x (float, default: 0.0)
  • Arena send corner x.
~cell_size (float, default: 0.01)
  • Cell size.
~diffx (float, default: 0.0)
  • Something x.
~diffy (float, default: 0.0)
  • Something y.
~radius (float, default: 0.1)
  • Plume reading bubble radius.
~max_points_per_cell (int, default: 10)
  • Maximum number of particles per cell.
Fluent
Parameters for the case of type=fluent.
~file_name (string, default: )
  • Fluent log file name.
~num_of_frames (int, default: 0)
  • Number of frames to read from the log file.
~max_concentration (float, default: 1.0)
  • Maximum chemical concentration found on the log file.
~max_points_per_cell (int, default: 10)
  • Maximum number of particles per cell.
~cell_size (float, default: 0.01)
  • Cell size.
PSlog
Parameters for the case of type=pslog.
~file_name (string, default: )
  • PSlog file name.
~max_points_per_cell (int, default: 10)
  • Maximum number of particles per cell.

PSLog

PlumeSim allows you to run simulated plumes in ROS from a VirtualPlume log file called PSLog. These are merely .txt files with the following structure:

Coming soon...

Tutorials

  1. Downloading and installing VirtualPlume

    This tutorial guides you through the process of downloading and installing VirtualPlume.

  2. Using VirtualPlume with virtual_nose

    This tutorial teaches how to use virtual_nose with VirtualPlume to simulate a virtual nose.

Wiki: virtualplume (last edited 2013-04-16 14:01:21 by Gonçalo Cabrita)