|
traversability_generator3d
|
[](LICENSE)
A C++ library for 3D traversability estimation from Multi-Level Surface (MLS) maps, developed at the DFKI Robotics Innovation Center.
The library takes an MLS map as input and produces a TraversabilityMap3d enriched with slope, step height, orientation constraints, and soil semantics. This enables safe and robot-specific navigation in unstructured outdoor environments.
Install dependencies automatically when building traversability_generator3d. Defining -DINSTALL_DEPS=ON for cmake, builds and installs the source dependencies automatically. When -DCMAKE_INSTALL_PREFIX is used, the dependencies are also installed there. The install script generates an env.sh file in the CMAKE_INSTALL_PREFIX folder. It exports all neccessary environment variables.
The core output of traversability_generator3d is a TraversabilityMap3d, where each cell is represented as a node enriched with slope, step height, soil information, etc.
To support planning and decision-making, nodes are classified into the following categories:
TraversabilityMapGenerator and should investigate.
This rich classification scheme provides more than just a binary safe/unsafe map. It enables planners to:
Together, these node types form the backbone of the TraversabilityMap3d, making it both a planning tool and a research framework for robust traversability estimation.
Traversability estimation can optionally incorporate semantic soil information that influences traversal costs and feasibility.
Supported soil types:
Each soil sample is modeled as a Gaussian distribution over the map with configurable parameters:
sigmaX, sigmaY β spatial influence (spread)uncertainty β [0,1] β confidence of the soil labelThis allows soft, probabilistic integration of sparse soil observations into the traversability map.
Key parameters in TraversabilityConfig that control traversability generation:
maxStepHeight** β Maximum step height the robot can traverse (default: 0.05m)obstacleInflationMultiplier** β Scales robot radius for collision checking safety margins (default: 1.0)robotHeight** β Robot body height including clearance to ground (default: 0.5m)robotSizeX, robotSizeY** β Robot footprint dimensions (default: 0.5m)distToGround** β Distance from body frame origin to ground (default: 0m)maxSlope** β Maximum traversable slope in radians (default: 0.45 rad β 26Β°)inclineLimittingMinSlope** β Minimum slope where incline limiting activates (default: 0.22 rad)inclineLimittingLimit** β Maximum path deviation from steepest slope direction (default: 0.43 rad)enableInclineLimitting** β Enable orientation constraints on steep terrain (default: false)slopeMetric** β Slope calculation method: NONE, AVG_SLOPE, MAX_SLOPE, TRIANGLE_SLOPE (default: NONE)slopeMetricScale** β Scale factor for slope metric (default: 1.0)gridResolution** β Resolution of traversability map (default: 0.3m)initialPatchVariance** β Initial variance for patch generation (default: 0.0001)minTraversablePercentage** β Threshold for unknown patch detection (default: 0.5)costFunctionDist** β Corridor width for cost function influence (default: 0.0m)useSoilInformation** β Enable soil-aware traversability (default: false)traverseSand, traverseRocks, traverseGravel, traverseConcrete** β Soil type traversability flagsallowForwardDownhill** β Allow forward downhill movement (default: true)Below the visualization window, the GUI provides:
No selection (default)CONCRETEROCKSSANDGRAVEL[0, 1]This interaction model ensures a clear separation between navigation setup and environment annotation.
You can quickly verify the setup by downloading and running the provided test datasets.
π‘ Tip: The following enviroment variables can be used to control the behaviour of the logger: BASE_LOG_LEVEL Set to one of DEBUG, INFO, WARN, ERROR or FATAL to define the maximum logging level.
A minimal executable is provided to demonstrate the full traversability generation pipeline on a real 3D point cloud. The walkthrough loads a point cloud, builds the MLS map, and computes the traversability and frontier regions.
π‘ Tip: The start position is assumed to be at
(0, 0, -distToGround).
If your point cloud is offset or uses a different coordinate frame, update the start position accordingly to ensure expansion begins on the ground surface.
Run the walkthrough using:
The traversability generator is validated using unit tests. The tests cover core functionality such as:
To build and run the test suite:
This library was developed at the DFKI Robotics Innovation Center and funded by the German Federal Ministry of Education and Research (BMBF).
This project is released under the [BSD-3-Clause License](LICENSE).