Proprioception Is All You Need: Terrain Classification for Boreal Forests

Northern Robotics Laboratory, Université Laval, Quebec City, Canada

*Indicates Equal Contribution

BorealTC : a publicly available dataset containing annotated data from a wheeled UGV for various mobility-impeding terrain types typical of the boreal forest. The data was acquired in winter and spring on deep snow and silty loam, two uncommon terrains in an urban setting.

Abstract

Recent works in field robotics highlighted the importance of resiliency against different types of terrains. Boreal forests, in particular, are home to many mobility-impeding terrains that should be considered for off-road autonomous navigation. Also, being one of the largest land biomes on Earth, boreal forests are an area where autonomous vehicles are expected to become increasingly common. In this paper, we address the issue of classifying boreal terrains by introducing BorealTC, a publicly available dataset for proprioceptive-based terrain classification (TC). Recorded with a Husky A200, our dataset contains 116 min of Inertial Measurement Unit (IMU), motor current, and wheel odometry data, focusing on typical boreal forest terrains, notably snow, ice, and silty loam. Combining our dataset with another dataset from the literature, we evaluate both a Convolutional Neural Network (CNN) and the novel state space model (SSM)-based Mamba architecture on a TC task. We show that while CNN outperforms Mamba on each separate dataset, Mamba achieves greater accuracy when trained on a combination of both. In addition, we demonstrate that Mamba's learning capacity is greater than a CNN for increasing amounts of data. We show that the combination of two TC datasets yields a latent space that can be interpreted with the properties of the terrains. We also discuss the implications of merging datasets on classification. Our source code and dataset are publicly available online.

Types of terrains considered in our dataset

Video Presentation

Our approach

Approach

Overview of the training process. From the left, data from asynchronous sensors were recorded and the terrain on which the robot was driven is hand-labeled. To allow a 5-fold cross-validation, trajectories are split into 5s partitions. Classes are then rebalanced through oversampling before being fed to the different networks. The CNN performed classification on spectrograms, while Mamba classified the samples directly in the time domain.

Models performance

We ealuated both models on our dataset and on the Vulpi dataset published by Vulpi et al. (2021).


Results on the BorealTC dataset

Terrain CNN Mamba
Precision (%) Recall (%) F1 score (%) Accuracy (%) Precision (%) Recall (%) F1 score (%) Accuracy (%)
Asphalt 92.98 83.89 88.20 93.96 91.90 85.50 88.59 93.68
Flooring 97.29 98.70 97.99 95.46 98.17 96.79
Ice 97.25 98.11 97.68 97.12 97.36 97.24
Silty Loam 96.00 97.24 96.61 95.39 96.20 95.79
Snow 86.84 92.31 89.49 88.68 91.57 90.10

Results on the Vulpi dataset

Terrain CNN Mamba
Precision (%) Recall (%) F1 score (%) Accuracy (%) Precision (%) Recall (%) F1 score (%) Accuracy (%)
Asphalt 92.98 83.89 88.20 94.12 91.90 85.50 88.59 86.76
Flooring 97.29 98.70 97.99 95.46 98.17 96.79
Ice 97.25 98.11 97.68 97.12 97.36 97.24
Silty Loam 96.00 97.24 96.61 95.39 96.20 95.79

Impact of the size of the train dataset on the performance of the models

We performed an ablation study to examine the impact of train dataset size on test error. To have a larger dataset to work with, we combined our dataset with the Vulpi dataset.

Train Sizes

t-SNE visualization of the combination of both datasets

Your browser doesn't support the object tag.

Poster

BibTeX

@article{LaRocque2024Proprioception,
    title         = {{Proprioception Is All You Need: Terrain Classification for Boreal Forests}},
    author        = {Damien LaRocque and William Guimont-Martin and David-Alexandre Duclos and Philippe Giguère and François Pomerleau},
    doi           = {10.48550/arXiv.2403.16877},
    url           = {https://arxiv.org/abs/2403.16877},
    eprint        = {2403.16877},
    archiveprefix = {arXiv},
    journal       = {arXiv preprint arXiv:2403.16877, submitted for the 2024 IEEE IROS},
    year          = {2024},
    arxivid       = {2403.16877},
    primaryclass  = {cs.RO}
}