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 predicts the sensor pose with the constant velocity model without IMU information.
hdl_localization requires the following libraries:
- OpenMP
- PCL 1.7
The following ros packages are required:
- pcl_ros
- ndt_omp
All parameters are listed in launch/hdl_localization.launch as ros params.
You can specify the initial sensor pose using "2D Pose Estimate" on rviz, or using ros params (see example launch file).
Example bag files (recorded in an outdoor environment): RE
- 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
If it doesn't work well, change ndt_neighbor_search_method in hdl_localization.launch to "DIRECT1". It makes the scan matching significantly fast, but a little bit unstable.
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].
Kenji Koide, k.koide@aist.go.jp
Active Intelligent Systems Laboratory, Toyohashi University of Technology, Japan [URL]
Robot Innovation Research Center, National Institute of Advanced Industrial Science and Technology, Japan [URL]