This repository contains complementary material for the corresponding submission.
Version of the document submission with high-quality figures.
Abstract
Mobile ground robots operating on unstructured terrain must predict which areas of the environment they are able to pass in order to plan feasible paths. We address traversability estimation as a heightmap classification problem: we build a convolutional neural network that, given an image representing the heightmap of a terrain patch, predicts whether the robot will be able to traverse such patch from left to right. The classifier is trained for a specific robot model (wheeled, tracked, legged, snake-like) using simulation data on procedurally generated training terrains; the trained classifier can be applied to unseen large heightmaps to yield oriented traversability maps, and then plan traversable paths. We extensively evaluate the approach in simulation on six real-world elevation datasets, and run a real-robot validation in one indoor and one outdoor environment.
Repository content:
- Media material of the experiments on the real robot and real elevation maps,
- Data files (heightmaps and csv) to generate the training and evaluation datasets,
- and the source code to each module of our traversability estimation framework:
- simulation and data generation,
- heightmap generation,
- dataset generation,
- definition, training and evaluation of the CNN classifier,
- generation of traversability representations such as oriented traversability maps and minimal traversability maps,
- and visualization of the results as 3D renderings
verify the software requirements to test the code
Media
This is a selection of available media of our traversability estimation framework:
Reachability overlay and paths for selected points on the Slope map
Minimal traversability overlay on the Sullens map
Demonstration of the experiments on the real Pioneer 3AT robot
Minimal traversability overlay on the Quarry map
Oriented traversability overlays for 32 orientations on the Quarry map
Pioneer 3AT on simulated procedurally generated heightmaps
A larger number of visualizations can be generated/found in the
code
>visualization
section of this repository.
Data
This folder contains the heightmaps (gray-scale images) and the csv files with the data from each simulated trajectory.
Code
In this folder we provide several sub-folders for each module of our traversability estimation framework:
Simulation
Code for simulating the Pioneer 3AT robot on a generated heightmap.
This code can be accessed as a docker image that setups all the needed libraries:
docker pull romarcg/traversability-ros-ubuntu-gazebo
or by copying the simulation
folder files to an existing ros+gazebo
setup.
Heightmap generation
Contains a document explaining in detail the procedural generation of heightmaps and a script that implements such procedure.
Here are some examples of the generated heightmaps:
Dataset generation
Contains a script that takes a csv file and builds a dataframe
that is used to generate the training/evaluation/real-evaluation dataset.
Training
Contains a script that builds the CNN architecture, takes the dataset generated by the previous script and starts the network training (this task may take several hours). In addition, a report of common metrics is provided as evaluation of the trained CNN.
The model generated by this script is saved to be used in future scripts.
An already trained model file is provided to avoid the training step.
Evaluation
This script computes oriented traversability maps and minimal traversability maps using the trained model on unseen (testing) heightmaps.
Visualization
This script processes traversability maps and generates 3D renderings to interactively examine a heightmap and its estimated map.
A set of already generated traversability maps is provided as sample files to avoid regenerating them.
Software requirements
In order to use the provided scripts, these are the list of requirements:
- python 3.5.3
- numpy 1.12.1
- matplotlib 2.0.0
- pandas 0.19.2
- tensorflow-gpu 1.0
- keras 2.0.3
- scikit-learn 0.18.1
- scikit-image 0.13.0
- joblib 0.11
- mayavi