All projects
SampleSample · unsupportedUnsupported · no SLA

KISS-ICP LiDAR Archive

A full-stack Next.js + FastAPI sample for robotics and autonomous-vehicle teams running continuous LiDAR SLAM. It ingests scan frames, runs the real open-source KISS-ICP engine (CPU-only) for odometry and incremental mapping, and archives raw scans, per-batch odometry, .ply map snapshots, and the session trajectory to Backblaze B2 over the S3-compatible API — a cheap, growing archive for offline analysis and model retraining.

Built for: Robotics and autonomous-vehicle teams running continuous LiDAR SLAM who need a cheap, S3-compatible archive for scans, odometry, map snapshots, and trajectories.

MIT licensed · Updated Sep 14, 2026

Dashboard with LiDAR SLAM metrics, scan-frames chart, and recent sessions
SLAM archive metrics — sessions, scan frames, scan data in B2, maps, trajectory distance — with a frames-per-session chart and recent sessions.

What it's built with

Each piece of the stack, and the job it does in this project.

Next.js 16 + React 19
Web application, dashboard, and session UI
Tailwind CSS v4 + shadcn/ui
Design tokens and reusable interface primitives
Recharts + TanStack Query
Trajectory/metrics charts and client-side data fetching
FastAPI + Pydantic v2
Layered, typed Python API and startup config validation
KISS-ICP + NumPy
Real CPU-only LiDAR odometry and incremental mapping engine
boto3 + Backblaze B2
S3-compatible object storage for scans, maps, and trajectories
pnpm workspaces
TypeScript and Python monorepo workflow

Core capabilities

What the project does out of the box, before you write any code of your own.

  • LiDAR session lifecycle

    Create, run, browse, edit, and delete SLAM runs, persisted as B2 objects with no database.

  • Real KISS-ICP SLAM

    The real open-source engine computes per-frame odometry and an incremental voxel-hash point-cloud map, CPU-only with no GPU.

  • Synthetic scan generator

    Overlapping synthetic LiDAR frames along a known ground-truth path let the whole demo run with only B2 credentials — no sensor required.

  • Everything archived to B2

    Raw scans, per-batch odometry, .ply map snapshots, and the full session trajectory are streamed to Backblaze B2 over the S3-compatible API.

  • Trajectory and archive explorers

    A 2D trajectory plot, a session-scoped archive explorer, and a full-bucket File Explorer for previewing, downloading, and deleting objects.

A closer look

More screens from the running project.

Sessions list of LiDAR SLAM runs
Every LiDAR SLAM run with its robot, scene, frame count, trajectory distance, and status.
Session detail with trajectory plot and B2 session archive
Per-run metrics, the KISS-ICP recovered path against synthetic ground truth, and the B2-archived scans, maps, odometry, and trajectory.
Upload page with drag-and-drop file area
Drag-and-drop files straight into the B2 bucket over the S3-compatible API.

Choose it for the right job

KISS-ICP LiDAR Archive is a head start for a specific shape of project, not a supported, general-purpose product.

Use it when

  • You run continuous LiDAR SLAM and want a cheap, S3-compatible archive for scans, odometry, map snapshots, and trajectories you can query offline.
  • You want a working example of the real KISS-ICP engine running CPU-only on the backend, with no GPU and no second API key.
  • You want to see Backblaze B2 as the storage layer for a high-rate, data-heavy robotics pipeline, end to end.

Choose another path when

  • You need a complete hosted SaaS product with user accounts, authentication, tenant isolation, or billing — none are included.
  • You need a real sensor driver — the input is a synthetic scan generator, not hardware ingest.
  • You plan to run heavy CPU SLAM on serverless functions — the KISS-ICP Run suits local dev or a long-lived container, not Vercel functions.
Sample · unsupported

Project status and support

Report defects through the repository's GitHub Issues; this sample is provided as-is with no service-level agreement (SLA).