The odor simulation plugin is based the filament-based atmospheric dispersion model proposed by Farrell et al. in 2002. That is, odor is simulated as filaments in the air, which represent odor packets of a certain size and concentration. The odor simulation plugin therefore consists of five main components: a wind model, an odor filament propagation model, an odor source model, as well as a wind sensor and an odor sensor model.
Wind can be simulated in different ways:
- Constant wind field: In the simplest case the wind field is constant. This corresponds to a homogeneous laminar wind flow. Even though this model is not very realistic, it is very handy due to its simplicity and straightforward configuration.
- OpenFOAM wind field (to be tested): More realistic wind fields can be generated with OpenFOAM and then loaded by the odor simulation plugin. This allows to simulate turbulent flows with obstacles. The odor simulation plugin supports loaded a static wind field or a dynamic wind field. Using dynamics wind fields could be slow due to the enormous amount of data that has to be loaded from the disk.
- Wind model presented in Farrell's paper (to be implemented)
Note that none of the wind fields takes obstacles (i.e. the robots) that you place within webots into account.
Odor Filament PropagationEdit
Odor filaments motion is based on two mechanisms:
- Filaments are transported by the wind (large-scale advection).
- To model small-scale movements of the wind, a stochastic process is superimposed. (Details can be found in Farrell's paper.)
Each filament represents a gaussian-shaped cloud of molecules. When filaments age, this could gets wider, but the concentration drops (to keep the number of molecules in a filament constant). The odor concentration at one point is the sum of the concentrations contributed by all filaments.
The odor simulation plugin supports multiple odor sources to be placed in the environment. Each source can release a different type of chemicals. A source is modeled as a circular area in which filaments appear.
Odor sensors are modeled as sensors which return a noisy concentration measurement at one precise point. The noise is gaussian around the actual concentration. In addition, odor sensors can be configured to return a running average of the actual concentration.
Wind sensors return a 3d vector of the wind measured at one specific point. The vector is a combination of the wind vector interpolated from the wind field, and gaussian noise. The wind sensor can be configured to return a running average of that value.