A simple localization framework that can re-localize in built maps based on FAST-LIO.
2021-08-11: Add Open3D 0.7 support.
2021-08-09: Migrate to Open3D for better performance.
Technically, if you have built and run FAST-LIO before, you may skip section 2.1.
This part of dependency is consistent with FAST-LIO, please refer to the documentation https://github.com/hku-mars/FAST_LIO#1-prerequisites
python 2.7
sudo apt install ros-$ROS_DISTRO-ros-numpy
pip install open3d==0.9
Notice that, there may be issue when installing Open3D directly using pip in Python2.7:
ERROR: Package 'pyrsistent' requires a different Python: 2.7.18 not in '>=3.5'
you may firstly install pyrsistent:
pip install pyrsistent==0.15
Then
pip install open3d==0.9
Clone the repository and catkin_make:
cd ~/$A_ROS_DIR$/src
git clone https://github.com/HViktorTsoi/FAST_LIO_LOCALIZATION.git
cd FAST_LIO_LOCALIZATION
git submodule update --init
cd ../..
catkin_make
source devel/setup.bash
export PCL_ROOT={CUSTOM_PCL_PATH}
Demo rosbag in a large underground garage: Google Drive | Baidu Pan (Code: ne8d);
Corresponding map: Google Drive | Baidu Pan (Code: kw6f)
The map can be built using LIO-SAM or FAST-LIO-SLAM.
First, please make sure you're using the Python 2.7 environment;
Run localization, here we take Livox AVIA as an example:
roslaunch fast_lio_localization localization_avia.launch map:=/path/to/your/map.pcd
Please modify /path/to/your/map.pcd
to your own map point cloud file path.
Wait for 3~5 seconds until the map cloud shows up in RVIZ;
rosbag play localization_test_scene_1.bag
Or if you are running realtime
roslaunch livox_ros_driver livox_lidar_msg.launch
Please set the publish_freq in livox_lidar_rviz.launch to 10Hz, to ensure there are enough points for global localization in a single scan. Support for higher frequency is coming soon.
rosrun fast_lio_localization publish_initial_pose.py 14.5 -7.5 0 -0.25 0 0
The numerical value 14.5 -7.5 0 -0.25 0 0 denotes 6D pose x y z yaw pitch roll in map frame, which is a rough initial guess for localization_test_scene_1.bag.
The initial guess can also be provided by the '2D Pose Estimate' Tool in RVIZ.
Note that, during the initialization stage, it's better to keep the robot still. Or if you play bags, fistly play the bag for about 0.5s, and then pause the bag until the initialization succeed.
Thanks for the authors of FAST-LIO and LIO-SAM_based_relocalization.