- This branch is for being used as a third party module in other packages
Quatro
is from here, official repo and here, author's module repositoryQuatro
is for the robust and global registration of pointclouds to avoid degeneracy in urban environments
PCL
>= 1.8C++
>= 17Boost
>= 1.54Eigen
>= 3.2OpenMP
>= 4.5Teaser++
(tested with commit vere415c0d
, May 22, 2023)git clone https://github.com/MIT-SPARK/TEASER-plusplus.git cd TEASER-plusplus && mkdir build && cd build cmake .. -DENABLE_DIAGNOSTIC_PRINT=OFF sudo make install -j16 sudo ldconfig
- (Optional, but recommended)
tbb
for parallelization and x10 faster computation in matchingsudo apt install libtbb-dev
- Git clone and
catkin build
this repository
cd ~/your_workspace/src
git clone https://github.com/engcang/Quatro
cd ..
catkin build
- (Optional, but recommended) with
tbb
catkin build -DQUATRO_TBB=ON #which is default
catkin build -DQUATRO_TBB=OFF #to turn of TBB
- (Optional) to enable
std::cout
for debugging,
catkin build -DQUATRO_DEBUG=ON
- Refer - here
- Or, refer the example as follows:
- Make sure that you have all dependencies and built the
quatro
properly withcatkin build
as above - In the
CMakeLists.txt
of your wanted package, importquatro
as a component ofcatkin
find_package(catkin REQUIRED COMPONENTS ... quatro #Include here ... ) include_directories( ... ${catkin_INCLUDE_DIRS} #Header files are included in catkin_INCLUDE_DIRS ... ) add_library(some_library src/some_src.cpp) target_link_libraries(some_library ${catkin_LIBRARIES}) #Libraries are included in catkin_LIBRARIES
- Use in the source file of your wanted package as:
#include <quatro/quatro_module.h> using QuatroPointType = pcl::PointXYZI; //can be changed shared_ptr<quatro<QuatroPointType>> m_quatro_handler = nullptr; m_quatro_handler = std::make_shared<quatro<QuatroPointType>>(fpfh_normal_radius_, fpfh_radius_, noise_bound_, rot_gnc_factor_, rot_cost_diff_thr_, quatro_max_iter_, estimat_scale_, optimize_matching, distance_threshold, max_correspondences); //refer https://github.com/engcang/FAST-LIO-SAM-QN/blob/master/fast_lio_sam_qn/config/config.yaml#L28 ////// use pcl::PointCloud<QuatroPointType> src_; //this should be not empty but the real data pcl::PointCloud<QuatroPointType> dst_; //this should be not empty but the real data bool if_valid_; Eigen::Matrix4d output_tf_ = m_quatro_handler->align(src_, dst_, if_valid_); if (if_valid_) { //do something wiht output_tf_ }
- Make sure that you have all dependencies and built the
- This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
- This work was supported by the Industry Core Technology Development Project, 20005062, Development of Artificial Intelligence Robot Autonomous Navigation Technology for Agile Movement in Crowded Space, funded by the Ministry of Trade, Industry & Energy (MOTIE, Republic of Korea) and by the research project “Development of A.I. based recognition, judgement and control solution for autonomous vehicle corresponding to atypical driving environment,” which is financed from the Ministry of Science and ICT (Republic of Korea) Contract No. 2019-0-00399. The student was supported by the BK21 FOUR from the Ministry of Education (Republic of Korea).
- All codes on this page are copyrighted by KAIST published under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 License. You must attribute the work in the manner specified by the author. You may not use the work for commercial purposes, and you may only distribute the resulting work under the same license if you alter, transform, or create the work.
- If our research has been helpful, please cite the below paper:
@article{lim2022quatro,
title={A Single Correspondence Is Enough: Robust Global Registration to Avoid Degeneracy in Urban Environments},
author={Lim, Hyungtae and Yeon, Suyong and Ryu, Suyong and Lee, Yonghan and Kim, Youngji and Yun, Jaeseong and Jung, Euigon and Lee, Donghwan and Myung, Hyun},
booktitle={Proc. IEEE Int. Conf. Robot. Autom.},
year={2022},
pages={Accepted. To appear}
}
@article{lim2023quatro-plusplus,
author = {Lim, Hyungtae and Kim, Beomsoo and Kim, Daebeom and Lee, Eungchang and Myung, Hyun},
title = {Quatro++: Robust Global Registration Exploiting Ground Segmentation for Loop Closing in LiDAR SLAM},
booktitle = {International Journal of Robotics Research},
year = {2023},
}