Why LIO-SAM?

필자가 factor-graph 기반으로 코드 + 논문이 잘 되어 있는 것을 찾아 헤매다 발견한 것이 LIO-SAM 논문이다. 해당 논문을 통하여 gtsam을 어떻게 활용하는지, 수식을 어떻게 코드화시키는 지 배우는 것이 목표이다.

LIO-SAM Installing Issues

All installation is conducted under the environment of ubuntu 18.04, gcc 7.5.0, gtsam 4.0.3 ***

  • make error /usr/bin/ld cannot find -lBoost::timer

Add

find_package(Boost REQUIRED COMPONENTS timer)

into the CMakeLists of LIO-SAM


  • catkin_make fail - No rule to make target ‘/usr/lib/*/libGL.so’

이 경우에는 주로 이미 system에 존재하는 libGL.so의 링크를 찾지 못해 발생하는 이슈일 확률이 크다. 다음과 같은 방안으로 이를 해결하자.

find -name libGL.*
cd {path}
sudo ln -sf libGL.so.1.0.0 libGL.so

이는 symbolic link를 만들어주는 코드이다.


  • map_optimization-process died Error 이 경우는 gtsam 4.0.2 version 이외의 gtsam library에 의해 꼬였을 수 있다. local의 모든 gtsam을 제거하고 반드시 4.0.2 version으로 다시 깔도록 하자.

LIO-SAM Concept

  • LiDAR Factors 이 LiDAR Factor는 sensor frequency가 높으므로, 다음과 같은 알고리즘을 이용하여 graph의 sparsity를 최대한 유지한다.

(1) 현재 내 pose와 전 pose의 차이가 특정 threshold 이상일 때만 lidar factor를 추가
(2) Subkeyframe으로 voxel map을 만든다.
(3) Scan-matching 알고리즘을 이용하여 voxel map과 현재 selected keyframe LiDAR feature를 매칭한다.
(4) Matched LiDAR feature와 voxel map의 간극을 최소화할 수 있는 optimizing pose T_{i+1}을 찾는다.

while 
    if diff(T_{i+1}, T_i) > th
        Build voxel map with sub-keyframes. <br>
        Match new LiDAR feature to pre-existent voxel map. <br>
        Optimize the pose at the keyframe with the objective  function of minimizing distance between voxel map and new feature