← all repositories
HKUST-Aerial-Robotics/DenseSurfelMapping

Surfel fusion that survives loop closure without choking your CPU

A depth fusion method built for SLAM systems that correct themselves—because most fusion methods fall apart when the map snaps back into alignment.

DenseSurfelMapping
Velocity · 7d
+0.3
★ / day
Trend
steady
star history

What it does Takes depth images, intensity frames, and camera poses, then fuses them into a dense 3D model using surfels (small oriented disks, not voxels). Plugs into ORB-SLAM2 or VINS-Mono, so it works with RGB-D, stereo, or visual-inertial setups. Runs on KITTI in real time using only CPU.

The interesting bit The authors built this specifically because TSDF methods like OpenChisel break when your SLAM system detects drift and snaps the trajectory back via loop closure—suddenly your fused map has two copies of the same wall occupying the same space. Surfel representation handles that correction gracefully. The trade-off is you get a point-soup model, not a watertight mesh.

Key highlights

  • Supports loop closure corrections without map corruption (the main pitch against TSDF alternatives)
  • CPU-only real-time operation on KITTI sequences
  • Works with stereo or monocular+depth setups; VINS-Mono branch exists but the authors note it’s “not fully checked after refactoring”
  • Ships with a KITTI sequence 00 download and a PSMNet depth publisher wrapper to get you running
  • Saves to mesh format viewable in CloudCompare

Caveats

  • The VINS-Mono branch comes with an explicit “not fully checked” warning from the authors themselves
  • Setup is manual: four terminal windows, hardcoded paths in shell scripts, and a launch file path that still contains /home/wang/software/
  • The “teach-and-repeat” VINS application shown in the video is not yet open-sourced

Verdict Grab this if you’re running ORB-SLAM2 or VINS-Mono and need dense output without GPU memory pressure. Skip if you need production-ready VINS integration today, or if you want turnkey installation.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.