Parallel OctoMapping: A Scalable Framework for Enhanced Path Planning in Autonomous Navigation
Organizations: Department of Mechanical and Aerospace Engineering, University of Florida, Gainesville, FL 32611 USA · Department of Electrical and Systems Engineering, University of Pennsylvania, Philadelphia, PA 19104 USA
Abstract
Mapping is essential in robotics and autonomous systems because it provides the spatial foundation for path planning. Efficient mapping enables planning algorithms to generate reliable paths while ensuring safety and adapting in real time to complex environments. Fixed-resolution mapping methods often produce overly conservative obstacle representations that lead to suboptimal paths or planning failures in cluttered scenes. To address this issue, we introduce Parallel OctoMapping (POMP), an efficient OctoMap-based mapping technique that maximizes available free space and supports multi-threaded computation. To the best of our knowledge, POMP is the first method that, at a fixed occupancy-grid resolution, refines the representation of free space while preserving map fidelity and compatibility with existing search-based planners. It can therefore be integrated into existing planning pipelines, yielding higher pathfinding success rates and shorter path lengths, especially in cluttered environments, while substantially improving computational efficiency.
Figures & tables
| Category | Term | Definition | Sym. |
| OctoMap | node | A hierarchical spatial unit in the Octree corresponding to a cubic region of space. | |
| leaf size | The edge length of a leaf node. | ||
| threshold | A user-defined range to classify points as unsafe, safe or clear for navigation. | thr | |
| occupied state | A state in which the OctoMap node contains point cloud. | ||
| unoccupied state | A state where no point cloud is marked in an OctoMap node. | ||
| Region | region | A leaf node equally separated into 4 regions in 2D and 8 regions in 3D. |
| Region pair | Axis-dir. navigability | Diag-dir. navigability | Marking in cell | Notes |
| [unsafe unsafe] | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ | Marking both diagonal cells as occupied | Axis-aligned: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ Diagonal: both regions contain points ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ |
| [safe safe] | safe: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ safe: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | safe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ safe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ | Mark one as occupied to block diagonal access while preserving axis-aligned navigation in the other region | Axis-aligned: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Diagonal: both regions contain points ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ |
| [clear clear] | clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | Keep unoccupied in both diagonal cells | Both regions do not contain points ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ |
| [unsafe safe] | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ safe: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ safe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ | Mark the unsafe cell as occupied . Allow axis-aligned navigation in the safe region. | Axis-aligned: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Diagonal: both regions contain points ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ |
| [unsafe clear] | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | unsafe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | Mark the unsafe cell as occupied . Allow axis-aligned and diagonal navigation in the clear region. | Axis-aligned: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ Diagonal: unsafe region is non-empty ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ The clear region contains no points ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ |
| [safe clear] | safe: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | safe: ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ clear: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ | Mark the safe cell as occupied . Allow axis-aligned and diagonal navigation in the clear region. | Axis-aligned: ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Diagonal: safe region is non-empty ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ ✗ The clear region contains no points ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ |
| Resolution (m) | |||||||
| 1.0 | 1.5 | 2.0 | 2.5 | 3.0 | 3.5 | 4.0 | |
| POMP 0.95 | 82.2% | 68.8% | 58.8% | 50.0% | 38.4% | 23.0% | 15.4% |
| POMP 0.75 | 82.2% | 67.4% | 57.7% | 46.4% | 37.6% | 21.8% | 14.4% |
| POMP 0.50 | 81.4% | 66.8% | 56.3% | 43.0% | 35.0% | 19.6% | 13.0% |
| POMP 0.25 | 81.4% | 66.4% | 55.8% | 42.4% | 34.0% | 19.0% | 12.4% |
| OGM | 81.4% | 66.4% | 55.6% | 42.0% | 32.2% | 16.2% | 9.6% |
| Dataset | Map dimensions ( ) | Point number |
| Cambridge_15 | 400 400 60 | 119684095 |
| Cambridge_16 | 400 400 35 | 113159239 |
| Cloud_7 | 45 104 12 | 12915992 |
| Apartment_0 | 9.4 14.8 5.3 | 4564613 |
| Apartment_1 | 10.7 7.9 2.9 | 1909995 |
| Apartment_2 | 9.4 10.2 2.8 | 2136963 |
| Dataset | Cambridge_15 | Cambridge_16 | Apartment_0 | Apartment_1 | Apartment_2 | ||||||||||
| Resolution (m) | 1.0 | 3.0 | 5.0 | 1.0 | 3.0 | 5.0 | 0.05 | 0.10 | 0.50 | 0.05 | 0.10 | 0.50 | 0.05 | 0.10 | 0.50 |
| OctoMap | 5089.00 | 4893.54 | 4878.26 | 4825.89 | 4626.40 | 4613.28 | 364.46 | 236.26 | 190.91 | 152.30 | 97.51 | 79.40 | 168.87 | 109.26 | 89.23 |
| OctoMap-MTX | 2695.07 | 2650.77 | 2511.81 | 2528.09 | 2446.34 | 2346.05 | 112.45 | 102.49 | 86.37 | 40.87 | 36.98 | 33.38 | 45.62 | 41.39 | 37.37 |
| OGM | 454.99 | 450.45 | 447.62 | 430.51 | 425.16 | 421.18 | 17.11 | 17.68 | 16.94 | 7.16 | 7.01 | 7.02 | 8.35 | 7.99 | 7.26 |
| Ours | 314.25 | 244.38 | 220.13 | 296.04 | 233.06 | 214.62 | 19.71 | 13.04 | 8.07 | 7.22 | 4.57 | 4.04 | 8.40 | 5.40 | 4.11 |
| Dataset | Cambridge_15 | Cambridge_16 | Apartment_0 | Apartment_1 | Apartment_2 | ||||||||||
| Resolution (m) | 1.0 | 3.0 | 5.0 | 1.0 | 3.0 | 5.0 | 0.05 | 0.10 | 0.50 | 0.05 | 0.10 | 0.50 | 0.05 | 0.10 | 0.50 |
| OctoMap | 3336.56 | 3222.84 | 3209.94 | 3167.78 | 3047.52 | 3039.78 | 220.76 | 144.46 | 121.60 | 88.18 | 59.50 | 51.10 | 99.44 | 67.50 | 57.98 |
| OctoMap-MTX | 1873.78 | 1826.14 | 1721.92 | 1724.86 | 1677.24 | 1613.94 | 63.84 | 57.66 | 48.41 | 16.7 | 15.44 | 14.16 | 18.92 | 17.06 | 15.82 |
| OGM | 437.32 | 433.98 | 427.26 | 417.36 | 407.78 | 403.34 | 17.46 | 16.82 | 16.12 | 7.24 | 6.90 | 6.92 | 8.08 | 8.02 | 8.10 |
| Ours | 213.78 | 158.74 | 135.08 | 205.08 | 151.14 | 128.54 | 17.20 | 11.78 | 6.58 | 8.02 | 5.88 | 3.16 | 8.68 | 6.84 | 3.64 |
| Cambridge_15 | Cambridge_16 | Cloud 7 | |||||||||||
| Resolution (m) | 2 | 6 | 10 | 14 | 2 | 6 | 10 | 14 | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 |
| OGM Pathfinding (%) | 84.1 | 46.7 | 36.7 | 20.2 | 81.4 | 24.6 | 7.0 | 0.4 | 82.8 | 45.2 | 25.0 | 5.4 | 0.7 |
| POMP Pathfinding (%) | 91.5 | 68.8 | 50.2 | 45.1 | 82.7 | 29.6 | 7.5 | 6.3 | 92.1 | 68.4 | 44.9 | 33.6 | 16.4 |
| OGM Path Length (m) | 225.46 | 218.34 | 233.43 | 211.10 | 222.58 | 241.99 | 177.16 | - | 45.90 | 48.08 | 52.62 | 33.23 | - |
| POMP Path Length (m) | 225.42 | 218.30 | 233.40 | 210.90 | 222.42 | 237.70 | 176.64 | - | 45.84 | 47.70 | 50.94 | 31.22 | - |
| A* on OGM (ms) | 217.113 | 5.148 | 0.853 | 0.03 | 130.048 | 3.045 | 0.071 | - | 86.984 | 8.314 | 1.928 | 0.074 | - |
| Res. (m) | POMP | OctoMap-MTX | OctoMap |
| 0.2 | |||
| 0.5 | |||
| 1.0 | |||
| 1.5 | |||
| 2.0 | |||
| 2.5 |
| VAT-0723U-03 | VAT-0723U-04 | |||
| Res. (m) | POMP | OctoMap | POMP | OctoMap |
| 0.2 | ||||
| 0.5 | ||||
| 1.0 | ||||
| 1.5 | ||||
| 2.0 | ||||
| VAT-0723U-03 | VAT-0723U-04 | |||||||||||||||
| Res. (m) | Succ. (%) | A* time (ms) | JPS time (ms) | Length (m) | Succ. (%) | A* time (ms) | JPS time (ms) | Length (m) | ||||||||
| POMP | OGM | POMP | OGM | POMP | OGM | POMP | OGM | POMP | OGM | POMP | OGM | POMP | OGM | POMP | OGM | |
| 0.2 | 52.200 | 42.787 | 15.466 | 50.810 | 15.015 | |||||||||||
| 0.5 | 1.100 | 0.571 | 15.491 | 1.053 | 0.579 | 14.594 | ||||||||||
| 1.0 | 0.113 | 0.068 | 14.303 | 0.124 | 0.074 | 15.207 | ||||||||||
| 1.5 | 0.050 | 0.033 | 16.427 | 0.048 | 0.032 | 16.024 | ||||||||||
| VAT-0723U-03 | VAT-0723U-04 | |||
| Res. (m) | POMP | OGM | POMP | OGM |
| 0.2 | ||||
| 0.5 | ||||
| 1.0 | ||||
| 1.5 | ||||
| 2.0 | ||||