Evaluation and comparison of eight popular Lidar and Visual SLAM algorithms 리뷰

yeonsoo·2023년 3월 28일
1
post-custom-banner

https://arxiv.org/abs/2208.02063

📝 개요
8개의 open-source LiDAR/visual SLAM 시스템을 동일 환경에서 실험해 성능 비교
: LOAM, Lego LOAM, LIO SAM, HDL Graph SLAM, ORB SLAM3, Basalt VIO, SVO2
실내외에서 아래의 여러 컨디션에 따른 성능과 계산자원 비교를 수행하였다.
1) 센서의 마운트 포지션
2) 지형, 진동
3) 모션 (다양한 선속도와 각속도)
마지막으로 각 컨디션 별 최적의 시스템에 대한 제안으로 끝맺음.

🔎 결론

  • 전반적으로 실외, dynamic object가 있는 환경에서는 라이다 기반이 우수함. 카메라보다 넓은 FOV를 이유로 듦.
  • LiDAR SLAM의 경우,
    • LIO SAM w/ IMU가 베스트
    • LEGO LOAM은 경량이 중요하다면 굿, 대신 센서가 땅에 가까울 수록 잘 작동
    • LOAM도 경량 조건 시 괜찮은 선택지지만, 복잡한 환경에선 성능이 떨어짐
  • visual SLAM의 경우,
    • ORB-SLAM3가 dynamic&복잡한 환경에서 잘 작동
    • Basalt VIO는 빠른 속도 변화에 상대적으로 강건한 모습을 보임
    • SVO2는 빠른 프론트엔드 덕에 빠른 모션에 강함

SLAM 알고리즘

배경지식

  • SLAM 시스템은 보통 위 그림과 같이 frontend / backend 두 부분으로 구성됨.
  • Frontend
    • visual SLAM
      시각적 센서로부터 들어오는 매 프레임에서 포즈 추정에 쓰일 주요 정보를 추출 (data association)
      카메라 이미지를 수신해 각 프레임에서의 키포인트를 추출하고, 이 키포인트들을 프레임간에 track한다. 로봇 포즈의 초기추정 또한 PnP 등의 방법으로 구할 수 있다. 프레임간에 공통되는 키포인트들을 랜드마크라고 한다. 이 랜드마크를 결정하는데는 여러 다른 제약이 사용될 수 있다.
    • LiDAR SLAM
      라이다의 프론트엔드는 보통 다음 세 부분으로 구성된다.
      (1) 계산을 줄이기 위해 우선 다운샘플링
      (2) 키포인트 추출- 보통 복셀의 smoothness 값을 많이 사용
      (3) ICP와 같은 스캔 매치 알고리즘을 사용해 포즈 변환의 초기추정을 얻음
      측위 에러를 줄이기 위해 루프 폐쇄를 포함하기도 한다
      맵은 보통 랜드마크 위치에 희소한 정보만을 담고 있거나, 아니면 그냥 dense한 포인트클라우드일수도 있다.
  • Backend
    • visual SLAM
      프론트엔드의 초기추정 포즈와 랜드마크 association은 백엔드에서 로봇포즈의 MAP(maximum-a-poseteriori) 추정을 위해 사용된다.
      카메라 이미지를 수신해 각 프레임에서의 키포인트를 추출하고, 이 키포인트들을 프레임간에 track한다. 로봇 포즈의 초기추정 또한 PnP 등의 방법으로 구할 수 있다. 프레임간에 공통되는 키포인트들을 랜드마크라고 한다. 이 랜드마크를 결정하는데는 여러 다른 제약이 사용될 수 있다.
    • LiDAR SLAM
      점군 스캔 매칭을 통해 얻은 포즈간 transformation을 랜드마크 association 대신 사용한다.
    • 추가적으로 IMU integration를 사용하기도 함.
    • G2O나 GTSAM같은 오픈소스 라이브러리들을 통한 factor/pose graph 최적화 방식이 백엔드에 많이 쓰인다. 이는 여러 다양한 센서 모달리티를 통합하여 강인한 상태추정이 가능하도록 도와준다.

LiDAR SLAM 알고리즘

SOTA이며, 널리 쓰이고, ROS를 지원하는 오픈소스가 존재하는 아래 8가지 SLAM/odometry 시스템을 선정- LiDAR 기반 4개, 카메라 기반 4개.

💡 odometry와 full SLAM의 차이
odometry: frame-by-frame 추정 + 가끔 local window 최적화.
full SLAM: 추가로 루프 디텍션이 있어 global consistency를 챙긴다.
따라서 full SLAM이 odometry systam보다 무겁다.

1) LOAM

  • LIO SAM이나 LEGO LOAM 등 많은 시스템의 모태
  • scan match 시 변형 ICP인 point-to-line, point-to-plane을 사용

2) LEGO-LOAM

  • LOAM과 매우 비슷한데 점군을 엣지와 평면 피쳐로 나눠서 처리함으로써 효율화.
  • 평면 피쳐(땅)으로부터 높이, roll, pitch를 뽑고, 엣지로부터는 X,Y-coord와 yaw를 뽑는다.

3) HDL graph SLAM:

  • factor graph 기반, 여러개의 엣지 제약 정의 가능- GPS, IMU, 땅바닥 평면 검출, 루프 폐쇄 등..
  • 노드들은 NDT나 ICP를 통한 포즈 초기추정 이후 그래프에 추가된다.

4) LIO SAM

  • full SLAM
  • factor graph 기반, 라이다 오돔과 IMU integration을 tightly couple하여 상태추정

Visual SLAM 알고리즘

1) SVO2

  • 프론트엔드에서 키포인트 검출기를 사용하는 다른 visual SLAM과 다르게, 얘는 direct visual slam과 유사한 프론트엔드를 가짐(정확히는 direct slam 맞다. sparse direct slam)
  • local intensity gradient의 방향을 통해 모션을 추정하는 sparse model 기반 image alignment 방식.
  • 다른 특징점 기반 방법보다 빠른 프론트엔드가 특장점 (track lost가 잘 안뜸)

2) ORB-SLAM3

  • 특징점 기반, SOTA 중 하나,
  • 프론트엔드는 ORB feature detector/descriptor matching으로 이루어져있음
  • DBOW2 포즈그래프 기반 루프폐쇄로 강건한 시스템 설계

3) Basalt VIO

  • 특징점 베이스 VI 알고리즘
  • 키프레임간 IMU reading의 비선형성을 복원(일반적인 IMU pre-integration 단계는 비선형성을 잃는다)
  • 비선형 factor들을 따라 FAST 특징점과 KLT 트래커로 수행된 local BA 이후 factor 그래프에서 GBA 수행되어 또 최적화된다(문장이 왜이래..)

4) Kimera VIO

  • semantic 3D mesh reconstruction을 위해 나온 라이브러리 내의 서브 모듈
  • 프론트엔드는 Shi-Tomasi corner를 이용해 특징을 추출하고 KLT 트래커 이용해 트랙한다.
  • five-point, three-point RANSAC을 이용해 키프레임간 상대포즈가 계산되고, pre-integrated IMU도 키프레임간에 계산된다. 랜드마크, 포즈 초기추정, IMU pre-integration은 factor graph 제약으로 사용되어 최종 상태 추정에 쓰인다.

실험

셋팅

  • 라이다: Velodyne VLP 16
  • 카메라: Realsense T265, ZED
  • 4 core 8 thread Intel i7 7700HQ CPU
  • calibrated using Kalibr toolbox for camera-imu calibration and LI-Calib for Lidar-imu calibration

메트릭

RMS of APE, RPE. w/ STD
Umeyama alignment를 사용했다. (아니 alignment 왜하냐고..제발 그냥 initial pose에서 transform 구해서 그걸로 맞추라고.. 그래도 RPE는 alignment로부터 자유롭다.)
evo_rpe 패키지 쓴 듯한 느낌이 강하게 듦.

실외 실험

실험1- 마운트 포지션 & 지형


센서의 마운트 위치 변경, 아스팔트/자갈에서 실험 수행

  • LEGO LOAM은 센서가 땅에서 멀어질수록 정확도가 떨어졌음
  • LIO SAM은 IMU와 같이 사용했을때 가장 좋은 APE를 달성했음. 근데 흔들리는경우 성능이 떨어짐.
  • LOAM은 가장 넓은 FOV를 보장하는 side mount position에서 성능이 가장 좋았음.
  • ORB SLAM3는 boom low에서 visual SLAM 중 가장 낮은 오차를 가짐.
  • 대부분의 visual SLAM 알고리즘이 카메라가 땅에서 멀어질수록 성능이 내려가는건 주목할만한 부분.
  • 사이드 마운트 포지션에서는, 카메라가 모션에 평행함에따라 키포인트들이 너무 빨리 움직이고 모션 블러가 컸다. 프레임간 데이터 어소시에이션이 거의 불가능했고, Basalt VIO나 SVO2는 트래킹에 실패했다. 하지만 orb slam3는 리로칼라이즈에 성공했다. 리얼센스 T265는 탑마운트 데이터셋에서는 하드웨어적으로 콜렉션이 안됐고(??뭔소리야) 그래서 basalt VIO랑 SVO2가 실패했다.

실험2- 선속도, 각속도



모션은 라이다에는 점군 skew 왜곡을 발생시키며, 카메라에는 모션블러를 가져온다.

  • HDL graph SLAM이 가장 낮은 에러를 보였고, 루프폐쇄가 정확도를 유지할 수 있도록 해주었다.
  • LIO SAM이 초기화 에러로 인해 최악의 오차를 보였다.
  • ORB SLAM3와 Basalt VIO는 비슷한 오차를 보였고, 둘 다 라이다 중 리오샘과 레고로암보다 나았다.

실내 실험

실험1

  • 한 변 2m의 사각형으로 도는 루프. 총 72m
  • 코너에서 직각회전이라 피쳐 트래커에게 챌린징
  • 네 변 중 두 변은 유리라 라이다에게 챌린징 (라이다에게 너무한거 아니니)
    -로암이 라이다 기반 중 가장 작은 RPE를 보임, 그 다음은 리오샘
    -비주얼들이 라이다보다 나았는데 Basalt가 가장 작은 오차를 가짐
  • 표준편차를 비교해보면, 라이다 슬램이 비주얼 슬램보다 노이지함.
  • APE로는 이제 global ocnsistency를 확인해볼 수 있는데, orb3가 가장 좋았음.
  • 비슷하게, HDL은 최악의 rpe였지만 괜찮은 루프 폐쇄 덕에 괜찮은 ape를 가짐
  • 라이다 기반의 ape가 매우 비슷비슷하다는게 흥미롭다

실험2


직선 구간, 360도 회전

  • 360도 회전은 라이다의 skew문제를 끌고오기위함
  • 또한 폭 좁은 실내라 비주얼쪽에서도 키포인트가 빨리 움직여 롤링셔터 왜곡이나 모션블러 등을 끌어들일것.
  • visual SLAM이 rpe에선 라이다보다 나았다.
  • Basalt가 가장 작은 오차, 그 다음이 svo2
  • orb slam3의 프론트엔드가 제일 느린데, 계속해서 피쳐 트랙 로스가 떴다 회전에서. 근데 relocal이 계속 돼서 성능이 괜찮게 나온다
  • LIO-SAM은 imu pre-integration이랑, 점군 deskewing(by imu)를 통해 라이다 슬램중 가장 낮은 오차를 달성했다.

실험3

로봇은 정지해있고 앞에 다이내믹 오브젝트가 왔다갔다거림
그래서 초기 위치로부터 얼마나 벗어났는지로 오차를 측정함

  • 라이다들이 드리프트가 매우 적었고, 키메라빼고는 모든 카메라를 압도했다.
  • HDL에서는 포즈그래프 노드들이 초기화되지않아(문턱 이동값을 넘지못해) 그냥 계속 0이었다.
  • 카메라들은 20~30cm 가량의 드리프트가 있었다. 이는 라이다에 비해 작은 FOV로 인해 움직이는 물체에 취약할 수 밖에 없기 때문으로 보인다.
  • 라이다는 근데 accumulated distance가 높았다. 이는 노이지한 추정치를 의미함. 그니까 제자리에서 엄청 흔들린거임.

계산 자원 비교


LEGO LOAM, LOAM이 가장 낮은 CPU 자원을 필요로한다.
포즈 그래프 베이스인 LIO SAM과 HDL의 CPU사용량은 훨씬 높았다.
LIO SAM은 80프로의 피크를 찍기도 했다. (추가적인 imu integration 시 발생)
피쳐 디텍터가 cpu를 많이 잡아먹기때문에 orb3나 basalt, kimera 모두 많이 높았다.

모든 실외 실험 중에서 Lidar 위치가 상단에 장착된 LIO SAM이 우리 실험에 사용된 로더 유형 기계에 가장 적합했으며 APE의 RMS가 1.142m로 가장 적었습니다. 이동 중 진동이 심한 붐의 로더 버킷에 센서를 고정했을 때 성능이 저하된 IMU 종속 LIO SAM에는 안정성이 더 중요했습니다. LeGO LOAM은 가장 효율적이면서도 센서가 1.316m의 APE로 지면에 더 가까울 때 상대적으로 좋은 성능을 보였습니다.
임의의 LIDAR 위치를 사용하면 더 간단한 LOAM이 합리적인 결과를 얻었으므로 센서 위치가 고정되지 않은 경우 적합한 선택입니다.
시각적 알고리즘은 카메라가 지면에 가까울수록 더 잘 수행되었습니다.

profile
to be enterprising
post-custom-banner

0개의 댓글