Papers
Topics
Authors
Recent
Search
2000 character limit reached

Voxblox: CPU-Based 3D Mapping System

Updated 6 July 2026
  • Voxblox is a CPU-based 3D mapping system that integrates a TSDF for dense reconstruction and an incremental ESDF for planning in unstructured environments.
  • It employs merged raycasting and anti-grazing heuristics to significantly boost efficiency and preserve fine structural details.
  • The system supports dynamic map growth and enables real-time collision checking and trajectory optimization for robotic navigation.

Voxblox is a CPU-based 3D mapping system and C++ library that builds a Truncated Signed Distance Field (TSDF) from dense range data and incrementally derives a Euclidean Signed Distance Field (ESDF) for collision checking, trajectory optimization, and mesh generation. It was introduced for on-board Micro Aerial Vehicle planning in unknown, unstructured environments, with an emphasis on real-time operation, dynamically growing maps, and large voxel sizes appropriate for robotic navigation rather than ultra-fine surface reconstruction (Oleynikova et al., 2016).

1. Origin and scope

Voxblox was introduced to address a specific gap between dense 3D reconstruction and planning-oriented mapping. Classical 3D occupancy maps provide occupancy probabilities but do not directly expose obstacle distances or gradients, while TSDF systems from graphics and vision produce high-quality surfaces but do not directly provide globally valid Euclidean distance information for planning. Voxblox bridges these two regimes by maintaining a TSDF for reconstruction and an incrementally updated ESDF for planning, while supporting dynamic map growth through voxel hashing and real-time execution on a single CPU core (Oleynikova et al., 2016).

The system architecture is organized around dense sensor input, TSDF fusion, incremental ESDF propagation, and optional mesh extraction. In the original formulation, the map is divided into hashed voxel blocks allocated on demand, which makes memory usage proportional to explored volume rather than to a preallocated dense grid. Later work continued to treat Voxblox as a state-of-the-art volumetric mapping framework and as a reference mapping back-end for both occupancy detection and motion-planning pipelines, which reflects its role as a canonical explicit TSDF-to-ESDF architecture in robotics (Oleynikova et al., 2016).

2. TSDF integration and ESDF propagation

The TSDF in Voxblox stores, for each voxel center x\mathbf{x}, a signed projective distance to the nearest observed surface and an integration weight. In the original formulation, given a measured point p\mathbf{p} and a sensor origin s\mathbf{s}, the signed distance contribution is

d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),

and fusion follows the standard weighted running average

Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).

The original system emphasizes a depth-dependent weighting model, w=1/z2w = 1/z^2, motivated by the increase of depth variance with range, rather than constant weighting (Oleynikova et al., 2016).

A central implementation contribution is merged raycasting. Instead of raycasting once per point, Voxblox groups points by voxel, merges their contributions, and raycasts once per voxel. The original evaluation reports up to an order-of-magnitude speedup from this strategy, and in some descriptions the speedup is reported as up to approximately 20×20\times compared with naive TSDF raycasting. A second important heuristic is anti-grazing, which suppresses free-space updates in voxels already identified as surface voxels, thereby preserving thin structures that would otherwise be washed out by many grazing rays (Oleynikova et al., 2016).

The ESDF layer stores true Euclidean distance to the nearest obstacle and is updated incrementally from TSDF changes rather than recomputed from scratch. Voxblox uses a fixed band of near-surface TSDF voxels as trusted ESDF seeds and propagates distances outward using raise and lower wavefront queues derived from incremental Euclidean distance transform methods. For efficiency, the implementation uses a quasi-Euclidean metric; the reported maximum distance error is 8%8\% (Oleynikova et al., 2016). Later comparative analyses describe the standard Voxblox integrator as raycasting plus weighted averaging, with a weighting function that decreases quadratically with the distance from the sensor to the surface and linearly with the distance from the voxel to the surface, and they also note the availability of a constant-weight mode as an experimental configuration (Gomes et al., 2023).

3. Planning-oriented use and runtime characteristics

The ESDF is the component that makes Voxblox directly useful for motion planning. In the original motivation, collision checking for a spherical robot of radius rr reduces to a single ESDF lookup at the sphere center, whereas occupancy-grid checking requires testing all voxels intersecting the sphere. For trajectory optimization, the ESDF provides both distance values and gradients, which support CHOMP- and TrajOpt-style collision costs and make smooth, gradient-based replanning practical on-board (Oleynikova et al., 2016).

Subsequent planning literature treated Voxblox as a state-of-the-art incremental ESDF/TSDF mapping system. In a comparative study on whole-body motion planning, it was used as a CPU-based mapping back-end that incrementally fuses point clouds into a TSDF and updates an ESDF, running in multi-threaded mode with 8 threads and a propagation distance of 0.8m0.8\,\text{m}. The reported update times were p\mathbf{p}0 at p\mathbf{p}1 resolution, p\mathbf{p}2 at p\mathbf{p}3, and p\mathbf{p}4 at p\mathbf{p}5 (Finean et al., 2021). In that study, Voxblox was not selected for the final deployed system because GPU-Voxels provided substantially lower latency at the fine resolutions required for dynamic whole-body replanning, but Voxblox remained the representative CPU incremental ESDF baseline (Finean et al., 2021).

The original paper also positions Voxblox against Octomap and occupancy-derived ESDF pipelines. It reports that TSDFs can be built faster than Octomaps and that ESDFs derived from TSDFs are more accurate than those derived from occupancy maps, while remaining suitable for real-time execution on-board an MAV (Oleynikova et al., 2016).

4. Parameter sensitivity and application-specific behavior

Later work showed that Voxblox’s behavior is highly sensitive to application-dependent choices of voxel size, truncation distance, and weighting. In a comparative analysis for volumetric occupancy detection in collaborative robot cells, Voxblox was evaluated against OctoMap and SkiMap under default settings of minimum voxel length p\mathbf{p}6, truncation distance p\mathbf{p}7, and constant weight set to False. Under those default settings, the reported metrics were precision p\mathbf{p}8, recall p\mathbf{p}9, and s\mathbf{s}0 s\mathbf{s}1, indicating high precision but extremely low recall for dynamic actor detection (Gomes et al., 2023).

That same study showed that careful tuning can dramatically change performance. With voxel size s\mathbf{s}2 and truncation distance s\mathbf{s}3, Voxblox achieved precision s\mathbf{s}4, recall s\mathbf{s}5, and s\mathbf{s}6 s\mathbf{s}7. The authors identify the ratio voxel size / truncation distance as critical and report that, in this volumetric detection scenario, a ratio of at least s\mathbf{s}8 was beneficial, in contrast to Voxblox’s more generic recommendation of approximately s\mathbf{s}9 (Gomes et al., 2023).

The same analysis also reports that using constant weights degrades performance relative to distance-based weighting. With voxel size d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),0 and truncation distance d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),1, the constant-weight configuration yielded precision d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),2, recall d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),3, and d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),4 d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),5, whereas the default distance-aware weighting yielded precision d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),6, recall d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),7, and d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),8 d(x,p,s)=px  sign((px)(ps)),d(\mathbf{x}, \mathbf{p}, \mathbf{s}) = \|\mathbf{p} - \mathbf{x}\|\; \mathrm{sign}\Big( (\mathbf{p} - \mathbf{x}) \cdot (\mathbf{p} - \mathbf{s}) \Big),9 (Gomes et al., 2023). These results illustrate that Voxblox is not a task-agnostic occupancy detector; its TSDF/ESDF parameters must be matched to scene geometry, sensor characteristics, and downstream use.

5. Extensions built on Voxblox

Voxblox has frequently served as a backbone for systems that augment geometry with higher-level scene structure. One prominent extension is volumetric instance-aware semantic mapping from localized RGB-D data, where the TSDF and free-space modeling of Voxblox are kept intact while class and instance information are fused on top. In that formulation, each voxel stores a segment label, and global co-occurrence tables Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).0 and Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).1 maintain segment-to-instance and segment-to-class associations over time. The authors describe their system explicitly as an extension of the Voxblox volumetric mapping framework and report, for a real office-floor deployment at Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).2 voxel size over an approximately Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).3 trajectory, a memory footprint of approximately Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).4, comparable with the bare Voxblox framework (Grinvald et al., 2019).

A later LiDAR-centric extension remains structurally close to vanilla Voxblox—TSDF in a voxel grid, incremental fusion of range observations, and marching-cubes extraction—but adds a LiDAR–inertial frontend, per-voxel semantic histograms, dynamic label-conditioned truncation, sparsity compensation, and behind-surface damping. In that system, each voxel stores Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).5, Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).6, a label histogram Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).7, and a dominant label Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).8; the implementation uses voxel size Di+1(x)=Wi(x)Di(x)+w(x,p)d(x,p)Wi(x)+w(x,p),Wi+1(x)=min(Wi(x)+w(x,p),Wmax).D_{i+1}(\mathbf{x}) = \frac{W_i(\mathbf{x}) D_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})\, d(\mathbf{x},\mathbf{p})} {W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p})}, \qquad W_{i+1}(\mathbf{x}) = \min\big( W_i(\mathbf{x}) + w(\mathbf{x},\mathbf{p}),\, W_{\max}\big).9, w=1/z2w = 1/z^20, and w=1/z2w = 1/z^21. On the Oxford Spires dataset, the paper reports that Voxblox achieved Acc. w=1/z2w = 1/z^22, Comp. w=1/z2w = 1/z^23, and F1 w=1/z2w = 1/z^24, whereas the semantics-aware method achieved Acc. w=1/z2w = 1/z^25, Comp. w=1/z2w = 1/z^26, and F1 w=1/z2w = 1/z^27 (Affan et al., 10 Apr 2026).

Voxblox has also been adapted to explicit uncertainty-aware mapping. In vision-based underwater robotics, RAFT-Stereo depth and confidence were integrated into Voxblox by replacing the standard depth-dependent weight with a confidence-based weight and modifying the weight update from accumulation to averaging,

w=1/z2w = 1/z^28

so that voxel weight reflects average confidence rather than observation count. In that work, the voxel weight becomes a proxy for mapping reliability, and the resulting maps are visualized with confidence-coded surface voxels rather than treated as uniformly reliable geometry (Bhowmik et al., 15 Jul 2025).

6. Comparative position in later SDF mapping research

Later SDF mapping research often uses Voxblox as the explicit-grid reference point against which newer neural, kernel, and GPU systems are evaluated. Neural SDF work positions Voxblox as a voxel-grid pipeline that first builds a TSDF and then computes a full SDF via wavefront propagation. In room-scale experiments, one such study fixed Voxblox at w=1/z2w = 1/z^29 voxel size so that SDF updates remained approximately 20×20\times0, and reported memory usage of approximately 20×20\times1 for the Voxblox SDF volume, compared with approximately 20×20\times2 for the neural model (Ortiz et al., 2022). Large-scale implicit mapping work similarly frames Voxblox as a TSDF-based incremental mapper whose fixed-resolution voxel grids induce a uniform resolution versus memory trade-off, contrasting that design with hybrid explicit–implicit maps using learned voxel features and shallow decoders (Liu et al., 2023).

Kernel-based continuous SDF estimation makes a sharper critique: projective TSDF fusion and breadth-first ESDF integration are described as sources of distance error, and fixed-resolution grids are described as limiting differentiability, scalability, and uncertainty quantification. In the reported timing benchmarks, Voxblox required a frame processing time of approximately 20×20\times3 and a 20×20\times4k-query time of approximately 20×20\times5 on Replica room0, whereas Kernel-SDF reported approximately 20×20\times6 and 20×20\times7, respectively (Dai et al., 31 Mar 2026).

At the same time, GPU volumetric SLAM systems remain recognizably within the Voxblox design family. coVoxSLAM uses block-hashed TSDF and ESDF submaps together with global consistency through submap pose-graph optimization, and explicitly situates itself near Voxblox and Voxgraph. It reports TSDF integration speedups of 20×20\times8–20×20\times9 over Voxblox on large MAV flights, ESDF speedups of 8%8\%0–8%8\%1 over Voxgraph’s Voxblox-based ESDF integration, and backend speedups of 8%8\%2–8%8\%3 over Voxgraph, while maintaining comparable localization accuracy on public datasets (Höss et al., 2024).

Across these comparisons, Voxblox persists as the standard explicit TSDF-to-ESDF baseline: deterministic, block-hashed, planning-oriented, and straightforward to extend. Later systems may replace its CPU execution model, its fixed-resolution voxel discretization, or its lack of calibrated uncertainty, but they typically do so by departing from a representation that Voxblox made technically and practically central to robotic dense mapping.

Topic to Video (Beta)

No one has generated a video about this topic yet.

Whiteboard

No one has generated a whiteboard explanation for this topic yet.

Follow Topic

Get notified by email when new papers are published related to Voxblox.