Odor remains an understudied modality in embodied AI. Most machine olfaction research focuses on recognizing what a smell is. Yet odor is also spatial and temporal: airborne chemicals form concentration fields that change over space and time. In gas-leak detection, early-stage fire detection, and searches for concealed drugs, odor can be the first cue, signaling a source before it can be seen or identified. The task is then to find that source.
Finding that source requires more than following a local odor reading. Olfactory measurements are noisy, can be misleading, and must be interpreted over time, while vision reveals where the agent can move. Real-world odor transport also depends on airflow, temperature, geometry, and ventilation, making experiments difficult to reproduce and compare. OdorSpaces provides a physics-based, controllable benchmark for studying this visual-olfactory navigation problem in realistic 3D environments.
The benchmark spans 17 Replica and 25 Matterport3D environments, from compact rooms to complex indoor layouts.
Replica17 scenesMatterport3D25 scenes
Representative layouts from the two scene collections.
Two Safety Tasks, Two Odor Regimes
Invisible gas leak
Odor cue: Propane (C₃H₈)
We simulate a propane gas leak to model liquefied petroleum gas (LPG) leakage. Propane is the principal component of LPG, which is typically odorized for human detectability. We use simulated propane gas density as the olfactory cue. Released horizontally from the source, propane is denser than air and settles near the floor, forming a low-altitude odor field.
Early-stage fire
Odor cue: Carbon dioxide (CO₂)
We simulate a methanol pool fire, a canonical setting in fire modeling and FDS validation studies. Combustion-generated carbon dioxide rises through heat-driven buoyancy, and we use its density as a surrogate olfactory cue for fire-related burning odor.
Drag to rotate the scene and use the timeline to inspect dispersion. Both viewers show relative values within each timestep.
Physics-Based Odor Simulation
Fire Dynamics Simulator (FDS) is a computational fluid dynamics solver developed by NIST for low-speed, thermally driven flows. Its predictive capability has been assessed under ASTM E1355 and documented in the NIST FDS Validation Guide, with validation studies covering compartment-fire smoke, toxic-gas concentrations, and atmospheric gas dispersion.
We use FDS to simulate the time-varying 3D gas-density fields for our propane gas-leak and methanol pool-fire scenarios. We then spatially align these fields with Replica and Matterport3D scenes in Habitat-Sim, so agents can sample local gas density while receiving visual observations and navigating the same environment.
Visual-Olfactory Navigation Policy Architecture
Our multimodal policy combines depth observations, olfactory measurements, and pose history with recurrent memory for action prediction.
Results
Metric: SPL (%) ↑
Mean SPL (%) ± standard deviation across three test seeds. Highest mean in each column is bold.
Method
Propane gas leak
Methanol pool fire
Replica
Matterport3D
Replica
Matterport3D
Temporal Gradient
4.59 ± 0.44
1.83 ± 0.96
0.00 ± 0.00
0.00 ± 0.00
Chemotactic
17.33 ± 2.50
27.10 ± 2.70
0.00 ± 0.00
0.00 ± 0.00
Biomimetic (Moth)
36.11 ± 0.51
33.56 ± 1.69
0.00 ± 0.00
0.00 ± 0.00
DRT-RL
54.50 ± 5.50
65.41± 5.15
17.58 ± 3.45
2.74 ± 1.83
OdorSpaces (ours)
65.26± 6.59
63.82 ± 7.85
24.72± 3.69
14.16± 2.96
Our policy demonstrates competitive performance across baselines, datasets, and odor-source scenarios. The policy integrates visual observations, olfactory measurements, and navigation history with recurrent memory. These results highlight the potential of multimodal perception and spatio-temporal modeling for robust odor-guided navigation.
Compare the Agents
Representative Failure Cases
Citation
@misc{lee2026odorspacesvisualolfactoryembodiednavigation,
title={OdorSpaces: Visual-Olfactory Embodied Navigation in 3D Environments},
author={Changyeon Lee and Kelin Yu and Zheng Wei and Shuna Ni and Ruohan Gao},
year={2026},
eprint={2611.05738},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2611.05738},
}