Qin 2020 - AVP-SLAM - Semantic Visual Mapping and Localization for Autonomous Vehicles in the Parking Lot
논문 요약
이 논문에서는 지하 주차장에서 Semantic 정보로 이뤄져있는 지도를 만들고, 관리하고, visual localization 및 planning 목적으로 사용하는 프레임워크를 제안한다.
지도는 주차장 노면에서 검출 가능한 road marker 및 주변 환경에서 검출 가능한 물체들로 이뤄져있고, semantic 정보만을 포함하기에 굉장히 적은 용량을 요구한다.
시스템 오버뷰
시스템은 4가지 섹션으로 나눠져있다.
- 4개의 카메라로 BEV 이미지를 만든 후 딥러닝 segmentation을 수행한다.
- 2개의 Wheel encoder + IMU 퓨전을 통해 odometry를 추정한다
- Odometry + BEV seg 이미지를 통해 로컬 맵핑 및 글로벌 맵핑을 수행한다.
- 글로벌 맵 + Odometry + BEV seg 이미지를 EKF로 퓨전해서 visual localization을 수행한다.
IPM 이미지 생성
전후좌우로 바닥을 바라보는 Fisheye 카메라가 4개가 있다.
Ground plane (i.e. z=0)에 이미지를 projection하는 IPM (Inverse perspective mapping)을 함으로써 Bird’s eye view (BEV) 이미지를 생성한다. IPM 수식은 상당히 스탠다드한 방식을 사용하는 것 처럼 보이는데, 사실 구현에는 굉장히 많은 트릭이 들어갈 것이다.
예를 들어, ground plane을 알아내는것 자체가 쉽지 않다. 자동차가 완벽하게 평평한 면에 있다고 하고 카메라 intrinsic/extrinsic을 정확하게 알고있다면 이론적으로 완벽한 BEV가 나올 것이다. 하지만 여기에는 두가지 문제가 생긴다.
첫번째 문제는, fisheye 카메라간의 overlap 문제이다. 인접한 카메라들끼리는 시점에 대한 오버랩이 분명히 발생하고, 바닥에 projection 했을 때 서로 다른 데이터가 동일한 공간에 projection이 될 것이다. 그러면 어떤 카메라의 데이터를 더 신뢰해야하는가? 왼쪽 카메라의 이미지를 믿어도 되고, 오른쪽 카메라의 이미지를 믿어도 되고, 왼/오 카메라의 이미지를 블렌딩 하는 것도 방법이다. 그런데, 논문에서는 어떤 방법을 사용했는지 말해주지 않는다.
두번째 문제는, 자동차가 운행하면서 extrinsic이 틀어진다는 점이다. 동승자가 자동차에 타면서 무게중심이 바뀌거나 하면 카메라가 고정된 위치를 벗어날 수도 있고,자동차가 가속/감속을 하거나 코너링을 돌면서 무게중심이 바뀌기도 한다. 카메라의 extrinsic이 바뀌면 카메라~바닥면에 대한 기하학적 관계도 바뀐다. 이걸 잡는 방법으로는 뭐 road depth estimation을 한다던지, IMU를 통해 gravity 방향을 받아서 바닥면의 위치를 보정할 수도 있겠다. 하지만 논문에서는 어떤 방법을 사용했는지 말해주지 않는다.
Semantic feature detection
Modified U-Net 기반의 CNN을 사용한다고 한다. 사실 BEV 이미지에서 segmentation만 할 수 있다면 어떤 네트워크를 사용하던 상관 없다.
Output class로는 lane, parking lines, guide signs, speed bumps, free space, obstacles, walls 가 있다. 여기서 parking lines, guide signs, speed bumps만 visual localization에 사용한다.
또, parking line을 뽑을 때 parking spot detection task도 함께 수행한다. 보통 parking spot detection 논문들을 보면 parking line을 뽑는 알고리즘도 함께 있다 (i.e. 자주 사용되는 알고리즘이다).
Local mapping
BEV 이미지에서 segmentation이 끝나면, parking lines, guide signs, speed bumps에 대한 정보만 3D space로 lifting 한다. 이는 우리가 생성한 IPM 이미지에 대한 synthesized intrinsic matrix를 inverse 곱 (i.e. unprojection lifting) 하면 된다.
이 결과,
이 3D point들은 그냥 다 하나의 맵에 때려넣는다.
30m 단위로 local map을 관리한다.
Loop detection
아무리 IMU + Odometry를 잘 퓨전해도 drift는 누적된다. 누적되는 drift를 해소하기 위해 loop closure를 해줘야한다.
Loop closure를 하기 위해서는 loop detection 기법이 필요하다. 여기서는 가장 최신의 local map의 위치 주변에 존재하는 과거의 local map들에 대해 ICP (iterative closest point) 기법을 사용해서 relative pose를 구하는 방식을 제안한다.
ICP를 성공했을 경우 relative pose를 구할 수 있고, 이를 loop constraint 삼아서 global pose graph optimzation이 가능해진다. 최적화를 수행하고나면 drift를 해소할 수 있다.
Global optimization
Loop detection이 완료되면 스탠다드한 pose graph optimization을할 수 있다.
Pose graph 최적화가 끝나면, 3D space로 lifting한 semantic landmark들을 최적화된 pose에 맞게 다시 그려넣으면 globally consistent한 semantic map을 만들 수 있다.
Localization
실시간 visual localization도 가능하다. 이전 과정과 동일하게 4채널 카메라 이미지를 가지고 IPM 이미지를 만든 후 BEV segmentation을 진행한다. BEV seg 이미지를 3D space로 lifting하면 3D landmark가 나올 것이다. 이를 우리가 만들었던 globally consistent한 semantic map에 대해 ICP 알고리즘 (iterative closest point 알고리즘)을 수행함으로써 6dof pose를 구할 수 있다.
논문에서는 ICP를 할 때 initial guess가 중요하다고 한다. 물론 least squares optimization 형태의 ICP 알고리즘은 초기값 설정이 굉장히 중요하지만, 여기서는 아마 그런 의미로 이야기하기보다는, 주차장 특성 상 landmark의 형태가 반복되는 것이 많기 때문에 초기 위치를 정확하게 잡아야 위치 탐색을 잘 할 것이라는 뜻으로 볼 수 있다.
즉, 주차장에서 초기 위치를 잡는 방법이 필요하다는 것이다. 논문에서는 2가지 방법을 제안하는데, 첫번째 방법이 스탠다드한 방법이고 사실 제일 말이 되는 방법이며, 두번째 방법은 feasibility가 거의 없다고 봐야한다.
첫번째 방법은, 주차장의 입구에서 visual localization을 시작한다는 전제를 까는 것이다. 그러면 정해진 local map과 매칭을 하는 것이기 때문에, 정확하게 global pose를 잡고 시작할 수 있을 것이다. 이 방법이 말이 되는 이유는, 주로 Auto valet parking (i.e. AVP… 논문의 이름과 같은)을 만드는 회사들에서 요구하는 시나리오가 ‘고객은 주차장 입구에서 내리고, 자동차는 알아서 빈 곳을 찾아 주차를 하는 시스템’이기 때문이다. 즉, 고객은 무조건 자동차를 주차장 입구에 가져다놔야할 의무가 있다. 이는 기술적 시나리오와 잘 맞기도 한다.
두번째 방법은, 실외에서 차를 끌고 오다가 주차장 입구에서 겨우 닿는 GPS 신호를 통해 초기 위치를 인식하는 방법이다. GPS랑 주차장의 semantic map을 어떻게 연결할지도 얘기가 전혀 없고, 지하주차장으로 들어오면서 날뛰는 GPS 신호를 어떻게 컨트롤 하겠다는 얘기도 없다. 그래서 이 방법은 가볍게 무시해도 될 것같다.
논문에서는 안정적으로 localization을 유지하는 방법도 이야기한다. Semantic feature를 사용하는 localization 방법 특성상, semantic object가 주변에 없을 때 pose tracking이 끊길 가능성이 높다. 실제로 주차장에서 코너를 돌거나 층간 이동을 할 때는 lane이 그려져있지 않거나 parking spot이 주변에 없는 경우들이 있다. 이 경우, 기본적으로 localization 프레임워크가 EKF를 통해 Map + Odometry(IMU+Wheel) 가 연결되어있기 때문에, Map 정보가 없을 경우 (i.e. semantic feature가 안 보일 경우) Odometry를 신뢰하며 이동 값을 추정할 수 있다.
실험 결과
주로 비교 대상은 Odometry vs ORB-SLAM2 vs AVP-SLAM 이다.
우선 정확도를 보면 ORB-SLAM2와 AVP-SLAM이 가장 우세하다. 근데 여기서 볼 점은, Odometry도 상당히 정확하다는 점이다. AVP-SLAM은 odometry로 motion prior를 갖기 때문에, 기존의 odometry보다는 더 좋은 성능을 보이겠지만 기본적인 odometry가 좋지 않다면 어떤 결과가 나올지 보장할 수 없다.
그렇다면 AVP-SLAM을 왜 쓰는가? 사실 Semantic SLAM을 사용하는건 기존의 geometric SLAM 보다 훨씬 더 큰 이점이 있다.
첫번째로는 semantic feature를 검출하는 방법이 data-driven 방식이기 때문에 appearance 변화에 아주 강인하다는 점이다. 그렇기 때문에, ORB-SLAM 같은 경우 조명이 조금만 바뀌어도 정확도가 뚝뚝 떨어지는데에 비해, semantic SLAM의 정확도는 유지될 확률이 높다. 하지만 이건 조명이 바뀌는 경우에 대한 것이고, 지하주차장의 조명이 바뀔 일은 보통 잘 없다.
두번째는 우리가 semantic feature를 선택할 때 domain-specific하게 ‘무조건 static’한 것을 고를 수 있으며, 이는 SLAM기반 reconstruction에 아주 좋은 assumption을 줄 수 있다는 점이다. 주차장은 생각보다 아주 dynamic한 곳이다. 주차되어있는 차는 정적인 것 같지만, 몇시간 후면 주인이 돌아와 차를 뺐을 수도 있다. 비슷하게 생긴 차가 들어와서 repetitive local feature도 생길 수 있다. 그에 비해, parking line이나 guide sign은 절대 변하지 않는다. 이 덕분에 AVP-SLAM은 visual lcoalization을 할 때 아주 높은 Recall-rate를 가질 수 있다.
세번째로는 semantic feature를 어떻게 표현하냐에 따라서 최적화가 엄청 쉬워지기도 하고 용량이 줄어들 수도 있다는 점이다. 기존의 VSLAM은 포인트 클라우드 형태의 지도를 가지며, point landmark 하나마다 다수의 descriptor를 담고 있기 때문에 용량을 많이 차지한다. Semantic SLAM은 landmark geometry + class label만 가지는 경우가 많아 굉장히 가볍다. 어떻게 표현하냐에 따라 엄청 가벼워질 수 있다. AVP-SLAM은 사실 지도 용량 최적화는 전혀 하지 않았다 - 오히려 너무 대충한 느낌이다. 그럼에도 불구하고 ORB-SLAM보다 용량이 훨씬 작다.
Parking space detection까지 해서 좋은 geometric map을 가졌다면, 이를 기반으로 path planning + control까지 해서 AVP를 구현할 수 도 있을 것이다.
Related works
Literature review 섹션에서 Traditional VSLAM과 Road-based localization 기법을 소개한다.
Traditional VSLAM은 다른 VSLAM 논문들에서도 충분히 볼 수 있는 내용이라 이번 리뷰에서는 스킵한다.
Road-based localization에서는 다음과 같은 논문을 추천한다.
- Lu 2017 - Monocular localization in urban environments using road marking - Road marker 기준 non-linear optimization 기법 사용
- Regder 2015 - Submap-based slam for road markings - Odometry 기반 포즈 추정 + 이미지 기반 lane 검출 -> Local grid lane map 생성
- Jeong 2017 - Road-slam: Road marking based slam with lane-level accuracy - Road marker classification