wikillm

Concept · 1 paper · updated 2026-11-01

Signed distance field

A grid that stores, for each cell, the distance to the nearest surface, with a sign for inside versus outside. Common pipelines fuse depth into a truncated SDF (TSDF), then derive a Euclidean SDF (ESDF) at a chosen resolution. Covered so far by one paper: a GPU depth-to-ESDF stack for high-DoF robot motion generation, with author-reported speed and memory results.

geometrycollision-checkingmappingrobotics

Markdown4 min read

AI-compiled overview, updated 2026-11-01, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

Overview

A signed distance field (SDF) assigns each point of a volume the distance to the closest surface. The sign separates the free side from the occupied side. The distance is the quantity planners and collision checks read; the sign tells them which side of a surface a query is on. The paper uses two stages. A truncated SDF (TSDF) is fused from depth images and only keeps values near the observed surfaces. An ESDF is then generated from the TSDF, at a resolution the task chooses, and holds distances over the whole grid 2603.05493 §5.

The shared invariant is that the magnitude comes from an exact nearest-surface assignment, while the sign is recovered from a sample on the query side of the surface. Unobserved cells need an explicit rule, and the paper treats them as free space 2603.05493 §5.4.

Variants

Depth-fused TSDF with on-demand ESDF

Space is stored as 8x8x8-voxel blocks, and memory is reserved only for blocks near observed geometry. A hash table finds each block's slot, and two float16 channels hold the depth average and an SDF for analytic primitives. The paper quotes about 350 MB for 100k active blocks, roughly 11 times less than a dense grid 2603.05493 §5.1. Integration projects every voxel into the depth image, so no atomic writes are needed. Each observation is weighted by the projected voxel area 2603.05493 §5.2. Each step multiplies block weights by a time factor, and blocks in view get an extra frustum factor, which removes stale observations 2603.05493 §5.3. The ESDF is seeded from cells that sit near a surface, propagated with an exact nearest-site method, and given a sign from an adjacent static sample 2603.05493 §5.4. Card: cuRoboV2.

Other variants

None in the wiki yet. The paper's comparison baseline for ESDF generation is nvblox, whose results are reported in 2603.05493 §7.6.

When to use which

The rows below rest on the author-reported benchmarks in one paper and one scene. They are not independent replications.

SituationUseWhy
Live depth stream, GPU available, distance needed each frameDepth-fused TSDF with on-demand ESDFAt 20 mm on a Redwood bedroom sequence, the paper reports 1.52 ms and 0.82 GB against nvblox's 2.97 ms and 2.55 GB, at similar recall 2603.05493 §7.6. Benchmarks use an RTX 4090 2603.05493 §7.
Sensor resolution finer than the planner needsDecouple TSDF and ESDF voxel sizesThe ESDF can be coarser than the TSDF 2603.05493 §5.4. The real-robot setup used a 2.5 mm TSDF with a 2 cm ESDF 2603.05493 §7.7.
Thin structures, ESDF cell much larger than the TSDF voxelTest before relying on itThe seven-point seeding probe can miss thin surfaces. The paper estimates the break-even near a resolution ratio of about 2 2603.05493 §5.4 2603.05493 §7.6.
Moving people or objects in the sceneSet time decay explicitlyThe paper's example time factor is 0.99 and frustum factor 0.5 2603.05493 §5.3. Without decay, stale observations persist.
No GPU, or single-query latency on other hardwareNot covered by this evidenceBenchmarks are batched on one GPU type, and single-problem latency on other hardware was not reported 2603.05493 §7.

Implementation sketch

The sketch follows the three stages in the paper. It is not the paper's code. Pseudocode is in our own words, and values come from the cited section.

Pseudocode
# Stage 1: seed ESDF cells that contain a surface  [arxiv:2603.05493 §5.4]
# tsdf(p): TSDF value at point p, or None if unobserved
# band: 0.9 * tsdf_voxel_size (paper's threshold)
def seed_sites(esdf_cells, tsdf, cell_size, band):
    sites = []
    for c in esdf_cells:
        # Centre plus six face probes at half a cell from the centre
        for p in probe_points(c, cell_size):
            d = tsdf(p)
            if d is not None and abs(d) < band:
                sites.append(c)
                break
    return sites

# Stage 2: exact nearest site per cell, then unsigned distance  [§5.4]
# nearest_site[c]: nearest seeded site, from a separable propagation
def unsigned_distance(c, nearest_site, cell_size):
    return dist(c, nearest_site[c]) * cell_size

# Stage 3: sign from a sample on the query side of the surface  [§5.4]
# geom_sdf(p): static-geometry SDF at p, or None if unobserved
def signed_distance(c, site, d, geom_sdf, step):
    # Step from the site toward the query; the step length is not
    # stated in the paper and must be chosen by the implementer
    sample = geom_sdf(step_toward(site, c, step))
    if sample is None:
        return d            # unobserved: treated as exterior
    return d if sample >= 0 else -d

Notes on the sketch:

  • The sign convention in stage 3 is one choice. The paper uses the sign of the static sample; the exterior default for unobserved cells follows the paper.
  • The paper does not state the step length in stage 3 2603.05493 §5.4.
  • The paper's propagation step is an exact method. Any method that gives exact nearest sites works; the paper names PBA+ and a fixed launch count §5.4.

Contradictions

None across papers; this page currently rests on one paper. Within that paper, the abstract gives up to 99% collision recall for the ESDF, while the text of §7.6 reports 97.0% as the highest recall it shows 2603.05493 §7.6. Treat the 99% figure as unverified until the paper's text supports it.

Papers

  • cuRoboV2 (arXiv:2603.05493, CC BY-SA 4.0): depth fusion into a block-sparse TSDF, on-demand GPU ESDF with exact nearest sites and sign recovery, and torque-limited B-spline trajectory optimisation in the same stack.

Source and license

Compiled from the papers listed on this page, all published under CC BY, CC BY-SA or CC0, with citations. See each paper's page for its authors and license.