koide3/hdl_localization
koide3/hdl_localization has 1,035 GitHub stars and 336 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 11:48 UTC. Last push 2024-07-26.
Real-time 3D localization using a (velodyne) 3D LIDAR
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalNew packages arrived
We released a new open source 3D mapping framework GLIM.
We also developed a map-based localization system GLIL as closed source.
hdl_localization
hdl_localization is a ROS package for real-time 3D localization using a 3D LIDAR, such as velodyne HDL32e and VLP16. This package performs Unscented Kalman Filter-based pose estimation. It first estimates the sensor pose from IMU data implemented on the LIDAR, and then performs multi-threaded NDT scan matching between a globalmap point cloud and input point clouds to correct the estimated pose. IMU-based pose prediction is optional. If you disable it, the system uses the constant velocity model without IMU information.
Requirements
hdl_localization requires the following libraries:
- PCL
- OpenMP
The following ros packages are required:
- pcl_ros
- ndt_omp
- fast_gicp
- hdl_global_localization
Installation
cd /your/catkin_ws/src
git clone https://github.com/koide3/ndt_omp
git clone https://github.com/SMRT-AIST/fast_gicp --recursive
git clone https://github.com/koide3/hdl_localization
git clone https://github.com/koide3/hdl_global_localization
cd /your/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
# if you want to enable CUDA-accelerated NDT
# catkin_make -DCMAKE_BUILD_TYPE=Release -DBUILD_VGICP_CUDA=ON
Support docker :whale:
Using docker, you can conveniently satisfy the requirement environment.
Please refer to the repository below and use the docker easily.
Parameters
All configurable parameters are listed in launch/hdl_localization.launch as ros params. The estimated pose can be reset using using "2D Pose Estimate" on rviz
Topics
- /odom (nav_msgs/Odometry)
- Estimated sensor pose in the map frame
- /aligned_points
- Input point cloud aligned with the map
- /status (hdl_localization/ScanMatchingStatus)
- Scan matching result information (e.g., convergence, matching error, and inlier fraction)
Services
- /relocalize (std_srvs/Empty)
- Reset the sensor pose with the global localization result
- For details of the global localization method, see hdl_global_localization
Example
Example bag file (recorded in an outdoor environment): hdl_400.bag.tar.gz (933MB)
rosparam set use_sim_time true
roslaunch hdl_localization hdl_localization.launch
roscd hdl_localization/rviz
rviz -d hdl_localization.rviz
rosbag play --clock hdl_400.bag
# perform global localization
rosservice call /relocalize

If it doesn't work well or the CPU usage is too high, change ndt_neighbor_search_method in hdl_localization.launch to "DIRECT1". It makes the scan matching significantly fast, but a bit unstable.
Related packages

Kenji Koide, Jun Miura, and Emanuele Menegatti, A Portable 3D LIDAR-based System for Long-term and Wide-area People Behavior Measurement, Advanced Robotic Systems, 2019 [link].
Contact
Kenji Koide, [email protected]
Active Intelligent Systems Laboratory, Toyohashi University of Technology, Japan [URL] Human-Centered Mobility Research Center, National Institute of Advanced Industrial Science and Technology, Japan [URL]
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,500 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,396 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,840 starsmrdoob/three.js
JavaScript 3D Library.
117,905 stars