gitwtfhub

wtf is ikd-tree?

hku-mars/ikd-tree — explained in plain English

Analysis updated 2026-08-07 · repo last pushed 2022-11-21

804C++Audience · researcherComplexity · 4/5DormantLicenseSetup · hard

TL;DR

A C++ tool that helps robots efficiently store and update 3D LiDAR point cloud maps as they move, enabling fast searches for nearby obstacles without rebuilding the entire map each time.

Mindmap

mindmap
  root((repo))
    What it does
      Incremental 3D point updates
      Fast nearest neighbor search
      Async box deletion
      Background cleanup
    Tech stack
      C++
      LiDAR
      ROS
    Use cases
      Autonomous drone navigation
      Robot obstacle avoidance
      LiDAR inertial odometry
      3D mapping systems
    Audience
      Roboticists
      Autonomous systems researchers
    License
      GPLv2
      Free for research
      Contact for commercial

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Build a fast-updating 3D map for an autonomous drone or robot using LiDAR sensor data.

REASON 2

Integrate incremental point cloud management into a LiDAR-inertial odometry system like FAST-LIO2.

REASON 3

Visualize how 3D spatial search and box-deletion operations work using the included demo programs.

REASON 4

Manage spatial data for a real-time robot navigation system that needs to quickly query nearby obstacles.

What's in the stack?

C++ROSPCL

How it stacks up

hku-mars/ikd-treekeyboardio/kaleidoscopefacebookresearch/ocean
Stars804812780
LanguageC++C++C++
Last pushed2022-11-212026-06-25
MaintenanceDormantMaintained
Setup difficultyhardmoderatehard
Complexity4/53/54/5
Audienceresearcherdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · hard Time to first run · 1h+

Requires ROS, PCL, and integration into a C++ robotics project, plus an understanding of LiDAR-inertial odometry systems.

Free for research and open-source use, but commercial applications require contacting the developers for a separate license.

Wtf does this do

Robots that use LiDAR sensors need to constantly manage massive streams of 3D points representing their surroundings. ikd-Tree is a tool that helps robots organize and query this spatial data efficiently. Instead of rebuilding a complete map of points every time new sensor data arrives, it incrementally updates the existing structure, saving significant computation time. At a high level, it works like a living filing cabinet for 3D points. You can add new points as the robot moves, delete points within specific rectangular regions, and search for the closest points to any given location. One notable design choice is how it handles deletions: rather than immediately removing points, it marks them as deleted in the background and cleans them up later during a rebuilding phase. This asynchronous approach keeps the robot responding quickly without getting stuck on cleanup tasks. The primary users are roboticists and researchers building autonomous systems, particularly those working with LiDAR-inertial odometry, which is how a robot figures out where it is by combining laser scans with motion sensors. The project was developed alongside FAST-LIO2, a system for fast robot navigation. Anyone building autonomous vehicles, drones, or mapping systems that need to rapidly query nearby obstacles would find this useful. The project is written in C++ for performance and is released under the GPLv2 license, meaning it is free for research and open-source use, but commercial applications require contacting the developers. The repository includes demo programs that visualize the search and delete functions, which helps illustrate how the tool manages 3D point clouds in practice.

Yoink these prompts

Prompt 1
Write a C++ ROS node that uses ikd-Tree to incrementally add 3D LiDAR points and query the nearest neighbors for a robot navigation system.
Prompt 2
Help me integrate ikd-Tree into my FAST-LIO2 setup for efficient 3D point cloud map management on an autonomous drone.
Prompt 3
Show me how to use the box-deletion feature in ikd-Tree to remove points from a specific region when a robot leaves an area.
Prompt 4
Create a visualization script that subscribes to ikd-Tree's demo output to display the incremental point cloud updates and nearest-neighbor search results in RViz.
Prompt 5
Explain how to configure the asynchronous rebuilding parameters in ikd-Tree to balance real-time performance with background cleanup of deleted 3D points.

Frequently asked questions

wtf is ikd-tree?

A C++ tool that helps robots efficiently store and update 3D LiDAR point cloud maps as they move, enabling fast searches for nearby obstacles without rebuilding the entire map each time.

What language is ikd-tree written in?

Mainly C++. The stack also includes C++, ROS, PCL.

Is ikd-tree actively maintained?

Dormant — no commits in 2+ years (last push 2022-11-21).

What license does ikd-tree use?

Free for research and open-source use, but commercial applications require contacting the developers for a separate license.

How hard is ikd-tree to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is ikd-tree for?

Mainly researcher.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.