All Projects → hku-mars → ikd-Tree

hku-mars / ikd-Tree

Licence: GPL-2.0 license
This repository provides implementation of an incremental k-d tree for robotic applications.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to ikd-Tree

PointCloudSegmentation
The research project based on Semantic KITTTI dataset, 3d Point Cloud Segmentation , Obstacle Detection
Stars: ✭ 62 (-78.32%)
Mutual labels:  lidar-point-cloud
Visualizing-lidar-data
Visualizing lidar data using Uber Autonomous Visualization System (AVS) and Jupyter Notebook Application
Stars: ✭ 75 (-73.78%)
Mutual labels:  lidar-point-cloud
rrgeo
A fast, offline, reverse geocoder
Stars: ✭ 76 (-73.43%)
Mutual labels:  kd-tree
DeepLIO
Deep Lidar Inertial Odometry
Stars: ✭ 46 (-83.92%)
Mutual labels:  lidar-point-cloud
LiDAR-GTA-V
A plugin for Grand Theft Auto V that generates a labeled LiDAR point cloud from the game environment.
Stars: ✭ 127 (-55.59%)
Mutual labels:  lidar-point-cloud
Python-for-Remote-Sensing
python codes for remote sensing applications will be uploaded here. I will try to teach everything I learn during my projects in here.
Stars: ✭ 20 (-93.01%)
Mutual labels:  lidar-point-cloud
UE4-Kdtree
UE4 Plugin: k-d tree
Stars: ✭ 48 (-83.22%)
Mutual labels:  kd-tree
kitti-A-LOAM
Easy description to run and evaluate A-LOAM with KITTI-data
Stars: ✭ 28 (-90.21%)
Mutual labels:  lidar-point-cloud
pole-localization
Online Range Image-based Pole Extractor for Long-term LiDAR Localization in Urban Environments
Stars: ✭ 107 (-62.59%)
Mutual labels:  lidar-point-cloud
pointu
✏️ Pointillisme tool based on Weighted Voronoi Stippling
Stars: ✭ 32 (-88.81%)
Mutual labels:  kd-tree
pynanoflann
Unofficial python wrapper to the nanoflann k-d tree
Stars: ✭ 24 (-91.61%)
Mutual labels:  kd-tree
DenseLidarNet
No description or website provided.
Stars: ✭ 35 (-87.76%)
Mutual labels:  lidar-point-cloud
Awesome-Vision-Transformer-Collection
Variants of Vision Transformer and its downstream tasks
Stars: ✭ 124 (-56.64%)
Mutual labels:  lidar-point-cloud
annotate
Create 3D labelled bounding boxes in RViz
Stars: ✭ 104 (-63.64%)
Mutual labels:  lidar-point-cloud
lidar-buster
Collection of Python snippets for processing LiDAR point cloud.
Stars: ✭ 15 (-94.76%)
Mutual labels:  lidar-point-cloud
libkdtree
libkdtree++ is an STL-like C++ template container implementation of k-dimensional space sorting, using a kd-tree. It sports a theoretically unlimited number of dimensions, and can store any data structure. Fork of the project once available from http://libkdtree.alioth.debian.org/
Stars: ✭ 46 (-83.92%)
Mutual labels:  kd-tree
LiDAR fog sim
LiDAR fog simulation
Stars: ✭ 101 (-64.69%)
Mutual labels:  lidar-point-cloud
PyLidar3
PyLidar3 is python 3 package to get data from Lidar devices from various manufacturers.
Stars: ✭ 35 (-87.76%)
Mutual labels:  lidar-point-cloud
Object-Detection-using-LiDAR
This repo detect objects automatically for LiDAR data
Stars: ✭ 38 (-86.71%)
Mutual labels:  lidar-point-cloud
pillar-motion
Self-Supervised Pillar Motion Learning for Autonomous Driving (CVPR 2021)
Stars: ✭ 98 (-65.73%)
Mutual labels:  lidar-point-cloud

ikd-Tree

ikd-Tree is an incremental k-d tree designed for robotic applications. The ikd-Tree incrementally updates a k-d tree with new coming points only, leading to much lower computation time than existing static k-d trees. Besides point-wise operations, the ikd-Tree supports several features such as box-wise operations and down-sampling that are practically useful in robotic applications.

What does ikd-Tree support?

  • Build a balanced k-d tree - Build()

  • Dynamically insert points to or delete points from the k-d tree - Add_Points() / Delete_Points()

  • Delete points inside given axis-aligned bounding boxes - Delete_Point_Boxes()

  • K Nearest Neighbor Search with range limitation - Nearest_Search()

  • Acquire points inside a given axis-aligned bounding box on the k-d tree - Box_Search()

  • Acquire points inside a ball with given radius on the k-d tree - Radius_Search()

User Manual

Developers

Related paper

If you are using any code of this repo in your research, please cite at least one of the articles as following:

  • ikd-Tree
@article{cai2021ikd,
  title={ikd-Tree: An Incremental KD Tree for Robotic Applications},
  author={Cai, Yixi and Xu, Wei and Zhang, Fu},
  journal={arXiv preprint arXiv:2102.10808},
  year={2021}
}
  • FAST-LIO2
@article{xu2022fast,
  title={Fast-lio2: Fast direct lidar-inertial odometry},
  author={Xu, Wei and Cai, Yixi and He, Dongjiao and Lin, Jiarong and Zhang, Fu},
  journal={IEEE Transactions on Robotics},
  year={2022},
  publisher={IEEE}
}

Build & Run demo

1. How to build this project

cd ~/catkin_ws/src
git clone [email protected]:hku-mars/ikd-Tree.git
cd ikd-Tree/build
cmake ..
make -j 9

2. Run our examples

Note: To run Example 2 & 3, please download the PCD file (HKU_demo_pointcloud) into${Your own directory}/ikd-Tree/materials

cd ${Your own directory}/ikd-Tree/build
# Example 1. Check the speed of ikd-Tree
./ikd_tree_demo
# Example 2. Searching-points-by-box examples
./ikd_Tree_Search_demo
# Example 3. An aysnc. exmaple for readers' better understanding of the principle of ikd-Tree
./ikd_tree_async_demo

Example 2: ikd_tree_Search_demo

Box Search Result Radius Search Result

Points returned from the two search methods are shown in red.

Example 3: ikd_tree_Async_demo

Original Map:

Box Delete Results:

Points removed from ikd-Tree(red) Map after box delete

This example is to demonstrate the asynchronous phenomenon in ikd-Tree. The points are deleted by attaching 'deleted' on the tree nodes (map shown in the ) instead of being removed from the ikd-Tree immediately. They are removed from the tree when rebuilding process is performed. Please refer to our paper for more details about delete and rebuilding.

Acknowledgments

  • Thanks Marcus Davi for helps in templating the ikd-Tree for more general applications.

  • Thanks Hyungtae Lim 임형태 for providing application examples on point clouds.

License

The source code of ikd-Tree is released under GPLv2 license. For commercial use, please contact Mr. Yixi CAI ([email protected]) or Dr. Fu ZHANG ([email protected]).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].