Bibtex 인용
@inproceedings{chen2019iros,
author = {X. Chen and A. Milioto and E. Palazzolo and P. Giguère and J. Behley and C. Stachniss},
title = {{SuMa++: Efficient LiDAR-based Semantic SLAM}},
booktitle = {Proceedings of the IEEE/RSJ Int. Conf. on Intelligent Robots and Systems (IROS)},
pages = {4530--4537},
year = {2019},
url = {https://www.ipb.uni-bonn.de/wp-content/papercite-data/pdf/chen2019iros.pdf}
}
요약
- 의미론적 정보 활용 Semantic SLAM
- 동적 객체 필터링 및 의미 기반 스캔 정합에 활용
- 동적 객체 많을 때, SOTA
인트로
- mapping은 대부분 동적인 환경에서 작동 → 일관된 맵 만들기 어려움
- 의미론적 정보는 navigation을 위한 중요한 요소
- FCN을 이용해 의미론적 정보를 추출
- 고품질 의미론적 맵 생성 및, 정확성과 odometry 품질 향상함
- 동적 객체가 많은 환경에서도 정확한 맵 생성, 일반적 환경에서도 성능 향상 이룸
기여
- Surfel 기반 맵에 의미론적 정보 통합
- 동적 객체 필터링을 위한 새로운 기법 제안
- 카메라 데이터 없이 Lidar기반으로 point들에 대한 semantic 정보를 함축한 mapping방법 propose
- ICP과정에서 high level constraint를 구현해냄
- odometry and SLAM
- Deep learning and CNN
- 동적 객체 탐지, semantic segmentation, 3D reconstruction
Approach
- 기본적 접근법은 Surfel based Mapping
- FCN RangeNet++을 통합하여 semantic segmentation 정보 활용
- RangeNet++은 포인트클라우드를 구면 투영하여 각 포인트에 의미론적 라벨 할당
- sementic label 활용하여 동적 객체 필터링, 스캔 정합
- sementic label 활용하여 constraints 추가함으로 pose estimation 정확도 및 robustness 향상
Surfel based Mapping
- 타임 스텝 t에서 포인트 클라우드를 구면 투영하여 vertex map을 생성
- vertex map을 이용하여 normal map 생성
- Projective ICP를 활용하여 이전 스텝의 렌더링 된 뷰와 현재의 맵 뷰를 비교하여 pose 업데이트를 계산함
- 모든 pose 업데이트 계산을 연결하여 월드 좌표에서의 최종 pose 결정
- SuMa에서 Map은 Surfel로 표현
- position
- normal
- radius
- timestamp
- 각 surfel은 binary bays filter를 사용하여 stability를 판단
- loop closure, pose-graph optimization을 통해 globally consistent한 map을 생성
Semantic Segmentation
- 각 프레임에 대하여 RangeNet++을 활용해 semantic label을 예측
- RangeNet은 포인트클라우드들이 구면 투영된 range image를 받아서 semantc segmentation 수행
- feild of view에서 point wise하게 label을 제공하므로 semantic information을 map에 통합할 수 있음
Refined Semantic Map
- RangeNet++에서 아웃풋으로 주는 blob을 map에 reprojection할 때, label 오류가 발생할 수 있음
- 위의 flood-fill 알고리즘을 preprocess 단계에서 실행하여 해결

- 위의 그림이 그 결과
- 일단 raw를 가져다가 eroded 된 것들을 다 제거
- 이웃 픽셀 중 어떤 하나라도 다른 label을 가질경우 해당 픽셀 제거
- 그 후, vertex map에서 깊이 정보를 활용하여 eroded된 것들을 복원
- 비어있는 픽셀에 대해 이웃 픽셀의 라벨을 상속
- distance가 threshold 이하일 경우에만 적용
Filtering Dynamics using Semantics
- 대부분의 환경을 static하다 가정하고 SLAM은 geometric 정보 활용해서 map만듬
- 실제로는 동적이기 때문에 map association에 문제를 일으킴
- semantic segmentation에서 제공하는 label을 활용하여 동적 객체를 처리
- 기존 맵과 현재의 뷰 사이의 semantic consistency를 비교
- consistent하지 않을 경우 해당 surfel이 이동했을 것이라 판단
- bayes filter에 penalty항을 추가, unstable surfel 제거

odds(p)=log(p(1−p)−1
- 다른 단순한 방법으로는 이동 가능하다고 판단되는 모든 label에 해당하는 surfel 삭제 방법 있음
- 이 경우 incremental pose extimation에 활용될 법한 feature들 삭제
- ex) 주차된 차
- 너무 삭제하면 정합시에 활용할 feature가 줄어 정합에 실패할 수 있음

Semantic ICP
- frame to model ICP에 semantic constraint를 추가하여 outlier의 영향을 줄이는 optimization 구현
- ICP

- 점으로부터 가장 가까운 점을 대응점 쌍으로 설정
- 각 점군에 두개의 평균을 빼서 0으로 정규화
- 각 점들마다 최단거리의 타겟을 correspondence로 설정하여
- 공분산 행렬을 분해 회전행렬을 구한 후, 평균과 차이를 통해 이동 벡터를 산출
- 이걸 수렴할때까지 계속 반복
- 반복을 최소화 하기위해 아래의 error function 사용

- 각 vertex들은 reference vector, normal vector로 associate되어있음

- 최소화를 위해 gauss-newton을 사용하여 increments δ 를 구함
- δ=(JTWJ)−1JTWr
- W는 diagonal matrix containing weight wu for each residual
- r은 stacked residual vector
- J 는 jacobian of r respect to increment δ
- 이 과정에서 hard association, huber norm을 사용해 weight를 부여
- higher level semantic scene을 사용해 residual에 추가적 constraint를 줌
- 이렇게 geometric정보를 semantic정보와 결합


- 위에 보면 a가 현재 b가 월드맵 c가 가중치 맵
- 동적 객체에 대해 필터링 됨(b), 동적 객체에 대해 가중치 낮게 잡힘(c)
Experimental Evaluation
- 목적
- 많은 동적 객체가 있는 상황에서도 정확한 mapping
- 일반적 환경에서 단순하게 동적 객체 제거하는 것보다 나은 성능
- 사용 데이터
- KITTI Vision Benchmark
- velodyne HDL-64E 포인트 클라우드 10Hz
- SuMa, SuMa w. naive filtering, SuMa++ 비교
- RangeNet++은 모든 KITTI Odometry Benchmark 시퀀스로 학습시킴
- 사용 하드웨어
- Intel Xeon(R) W-2123 w. 8core @3.60GHz w. 16GB RAM
- Nvidia Quadro P4000 w. 8GB RAM
KITTI Road Sequence
- 동적 객체가 있는 상황에서의 mapping 성능 차이
- semantic label 제공되지 않는 sequence
- 대부분의 객체가 동적 객체, 표지판/기둥 등 low feature 객체
- SuMa에서는 교차로 표지판이 다른 위치로 mapping
- SuMa++에서는 동적 객체 정확히 필터링, consistent mapping 보여줌

- relative rotational, translational error

- 아무튼 SuMa에서의 성능 저하는 동적 객체에 의한 것임

KITTI Odometry Benchmark
-
Naive filtering과 Semantic filtering의 성능 차이
-
relative translational, rotational error

-
SuMa + naive filtering은 diverge하는데 SuMa++은 SOTA SLAM들이랑 비교해도 성능 유사
-
unseen trajectory에 대해 test

- rotational error 0.0032∘/m - SuMa와 동일
- translational error 1.06% - SuMa에서는 1.39%
- 아무튼 개선됨
Discussion
- 초기 동적 객체 필터링 힘듬
- 초기 관측에서 동적 객체가 많으면, proper initial velocity, pose estimation이 불가능
- initializing 하는 동안에는 모든 동적 객체를 naive하게 제거, 이후 backtrack하는 방법 사용할 수 있음
- naive filtering
- naive한 방법으로 동적 객체를 filtering 하는 것이 장기적 관점에서 가려진 environment를 표현하는 것에 유용할 수 있음
Conculsion
- need future work about
- loop closing/detection
- estimation of more fine grained semantic information - such as lane structure, road type etc