Splat-Nav: Safe Real-Time Robot Navigation in Gaussian Splatting Maps
TL;DR Plans and localizes a drone directly in a Gaussian Splatting map. Polytope corridors built from the splat's ellipsoids give provably safe Bézier trajectories, and RGB-only PnP against splat renders gives the pose. Re-planning runs at over 2 Hz and localization at about 25 Hz, and only one of 120 hardware flights collided.
What they do
Splat-Nav navigates a drone inside a pre-trained Gaussian Splatting (GSplat) map using only an RGB camera. Each Gaussian is treated as an ellipsoid, which gives the planner exact collision geometry to plan against. The same splat is also rendered to localize the drone. Goals can be language queries such as “microwave”, answered by a semantic GSplat.
How it works
- Collision test. A GPU-batched ellipsoid-ellipsoid test, solved by bisection, never misses a collision. It also extends to an ellipsoid sweeping along a line segment.
- Splat-Plan. The splat is over-approximated as an occupancy grid, and Dijkstra finds a seed path. Supporting hyperplanes from nearby ellipsoids build a corridor of safe polytopes around it. A QP then fits Bézier curves whose control points stay inside the corridor, so the whole trajectory is safe.
- Splat-Loc. It renders RGB and depth at the prior pose and matches SuperPoint/LightGlue features against the camera image. PnP with RANSAC then gives the pose. For global initialization, it registers splat means against a point cloud with color-augmented FPFH features.
Results
- Planning in simulation. Four scenes, each with a dense and a sparse splat, and 100 start-goal pairs per setting. Splat-Plan never fails and stays collision-free with respect to the GSplat geometry. Four point-cloud corridor (SFC) variants sometimes collide or fail, and Splat-Plan’s paths are as short or shorter.
- Localization in simulation. With a 20° / 0.1 m initial error, Splat-Loc-Glue is under 0.06° and 4 mm off in under 42 ms per frame. Photometric GS-Loc takes 36.15 s per frame.
- Hardware. 120 flights covered four language goals, three control schemes and 10 repeats. Every flight was collision-free except one Splat-Loc flight whose camera faced a poorly reconstructed edge of the scene. Splat-Loc was about 3° and 4 cm off motion capture, comparable to VIO, and needed no frame alignment. VIO had to be re-zeroed every run. Fast flights reached 1.5 m/s.
Limitations
Maps are pre-built and static. Safety depends on the map: an obstacle missing from the splat cannot be avoided. Splat-Loc needs visual features. Splat-Plan and Splat-Loc need about 10 GB of GPU memory, so they ran on a desktop RTX 4090 linked to the drone over WiFi.
Videos
Figures



Abstract
We present Splat-Nav, a real-time robot navigation pipeline for Gaussian Splatting (GSplat) scenes, a powerful new 3D scene representation. Splat-Nav consists of two components: 1) Splat-Plan, a safe planning module, and 2) Splat-Loc, a robust vision-based pose estimation module. Splat-Plan builds a safe-by-construction polytope corridor through the map based on mathematically rigorous collision constraints and then constructs a Bézier curve trajectory through this corridor. Splat-Loc provides real-time recursive state estimates given only an RGB feed from an on-board camera, leveraging the point-cloud representation inherent in GSplat scenes. Working together, these modules give robots the ability to recursively re-plan smooth and safe trajectories to goal locations. Goals can be specified with position coordinates, or with language commands by using a semantic GSplat. We demonstrate improved safety compared to point cloud-based methods in extensive simulation experiments. In a total of 126 hardware flights, we demonstrate equivalent safety and speed compared to motion capture and visual odometry, but without a manual frame alignment required by those methods. We show online re-planning at more than 2 Hz and pose estimation at about 25 Hz, an order of magnitude faster than Neural Radiance Field (NeRF)-based navigation methods, thereby enabling real-time navigation. We provide experiment videos on our project page at https://chengine.github.io/splatnav/. Our codebase and ROS nodes can be found at https://github.com/chengine/splatnav.
Summaries are written automatically from each paper's text. Figures and videos come from the paper and its project page; all credit goes to the authors.
