File size: 3,850 Bytes
684e499 ec8eab4 684e499 ec8eab4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 | ---
license: apache-2.0
library_name: pytorch
tags:
- robotics
- point-cloud
- terrain-analysis
- autonomous-navigation
- 3d-perception
- deep-learning
- PointNet
---
# TerrainFreeSpaceNet
TerrainFreeSpaceNet is a deep learning model designed to predict **terrain free-space from 3D point cloud data**.
It enables robots to estimate terrain traversability in uneven environments using raw point cloud observations.
This model is based on a **PointNet-style neural network** that processes unordered 3D points and outputs a normalized free-space score.
---
# Overview
Autonomous ground robots operating in outdoor environments often encounter:
- uneven terrain
- vegetation
- slopes and depressions
- irregular obstacles
Traditional geometric free-space detection methods may struggle in these environments.
TerrainFreeSpaceNet learns to **estimate terrain traversability directly from 3D point clouds**, making it suitable for:
- outdoor robotics
- off-road navigation
- agricultural robots
- exploration robots
---
## Model Architecture
The model uses a **PointNet-style architecture** consisting of:
1. Shared MLP layers implemented using Conv1D
2. Batch normalization and ReLU activation
3. Global max pooling
4. Fully connected regression layers
5. Sigmoid output for normalized free-space score
Input shape:
[B, 3, N]
Where:
- `B` = batch size
- `3` = (x,y,z) coordinates
- `N` = number of sampled points
Output:
[B,1]
Free-space score in range:
- 0 → non-traversable
- 1 → highly traversable
---
## Input Format
The model expects **CSV point cloud input**.
Example:
x,y,z
0.12,0.31,0.02
0.15,0.34,0.05
0.18,0.29,0.04
---
## Example Inference
Example usage using the provided inference script.
```python
from inference import run_inference
score = run_inference("sample_input.csv", checkpoint="model.pt")
print("Free space score:", score)
```
Example output:
```
Free space score: 0.84
```
## Training
The model was trained using frame-level 3D point cloud samples.
Each frame contains:
```
frame_id,x,y,z,free_space
```
Where:
- `frame_id` identifies the point cloud frame
- `free_space` represents terrain traversability score
## Applications
TerrainFreeSpaceNet can be used for:
- terrain-aware robot navigation
- autonomous ground vehicles
- off-road robotics
- agricultural robots
- exploration robots
- rough terrain mobility analysis
## Limitations
- The model currently assumes XYZ coordinates only
- Performance depends on training dataset diversity
- Large terrain variations may require retraining
- Real-time deployment requires optimized inference
## Related Research
This model was developed as part of research on:
**Autonomous robot navigation in uneven terrain using 3D perception**.
It is designed to integrate with the **Agoraphilic-3D Navigation Framework**.
Repository
Full project code available here:
https://github.com/dinusharg/TerrainFreeSpaceNet
## Citation
If you use this model in research, please cite:
```bibtex
@article{10.1007/s12555-025-0624-2,
author = {Gunathilaka, W. M. Dinusha and Kahandawa, Gayan and Ibrahim, M. Yousef and Hewawasam, H. S. and Nguyen, Linh},
title = {Agoraphilic-3D Net: A Deep Learning Method for Attractive Force Estimation in Mapless Path Planning for Unstructured Terrain},
journal = {International Journal of Control, Automation and Systems},
volume = {23},
number = {12},
pages = {3790-3802},
ISSN = {2005-4092},
DOI = {10.1007/s12555-025-0624-2},
url = {https://doi.org/10.1007/s12555-025-0624-2},
year = {2025},
type = {Journal Article}
}
|