Hi all,
We recently published in JOSS about traversability_generator3d, a C++ library that generates 3D traversability maps from Multi-Level Surface (MLS) maps.
The library converts MLS maps into a TraversabilityMap3d that includes:
- Plane fitting and slope estimation (RANSAC-based)
- Step height evaluation (AABB / OBB checks)
- Orientation-dependent motion constraints
- Footprint-aware obstacle inflation
- Frontier detection and bounded map expansion
It also optionally supports soil-aware traversability, If soil information is available, where:
- Each cell maintains soil probability distributions
- Soil types (e.g., sand, gravel, rocks, concrete, unknown) influence traversal cost
- Gaussian spatial propagation models soil uncertainty
- Specific soils can be configured as forbidden,
automatically converting cells to obstacles - Geometric and semantic costs are combined in a unified 3D map structure
Unlike 2.5D elevation maps, MLS preserves multiple surface hypotheses per cell, enabling reasoning about overlapping terrain layers such as rubble, vegetation, tunnels, or bridges.
The output map classifies cells as:
TRAVERSABLE
OBSTACLE
FRONTIER
INFLATED_OBSTACLE / INFLATED_FRONTIER
UNKNOWN / UNSET
If you have a PLY or PCD map available, feel free to run it through the pipeline and try the visualization to inspect the generated traversability layers and node classifications.



