1. introduction to Visual SLAM
01 Jun 2020 | Visual SLAM
Introduction
-
Visual Slam은 모바일 로봇 혹은 Mobility 능력을 갖춘 기계 시스템이 Lidar, Ladar, Camera, Ultra sonic 등과 같은 센서들을 이용하여서 물체 인식 및 Robot Localization(현지화), Building a Map 등을 이루게 만드는 기술이다.
-
특히 모바일 로봇틱스에서 많이 이용이 되는데, 모바일 로보틱스가 자율 주행을 하기 위해서는 아래와 같은 2개가 중요하다.
- Localization
- Mapping
Simultaneous Localization and Mapping
- Visual Localization
- 로봇에 장착된 센서만 이용(외부 장치 X)
- GPS가 잘 작동하지 않는 환경
- Mapping
- 사전에 주변 환경이 만들어지지 않은 상태에서 주변환경(mapping and Building a Map)
- 경로 계획에 대한 정보를 제공
Various Localization methods
- 가이드 레일, QR코드 GPS 센서
- 실제로는 가이드 레일, QR 코드를 놓을 수 없는 경우가 많음
- GPS 전파가 잘 닿지 않는 곳이 있음(실내, 도심지역)
- 신뢰할 수 있지만 범용적이지 못함
- 환경적인 제약이 존재
- Wheel Encoder, 카메라, Lidar, Ladar, IMU센서
- 환경에 대한 간접적인 물리량을 측정
- 환경에 대해 추가적인 설치 없이 위치 추정 문제 해결
- 환경적인 제약이 있음
- Visual Slam
- 카메라 센서를 주로 이용한 위치 추정 및 지도 작성 방법
- 카메라의 동작 방식에 따른 분류
- 단안 카메라, 양안 카메라, 깊이 카메라
단안 카메라(Monocular Camera)
- 한개의 카메라를 움직여 물체까지 거리 추정 (Frame 별로 depending on Time)
- 깊이 추정 알고리즘(PnP, 3D-2D, Fundemantal Matrix, Essential Matrix)를 이용하여 각 픽셀의 시차(dispartiy)를 계산
-
영상에서 Feature point를 추출하고 영상간의 Feature point 매칭을 통해 3차원 포인트를 계산(추정 알고리즘)
- 장점
- 다른 방법들에 비해 간단
- 계산량이 적고 실시간에 적합
- 단점
- Dispartiy는 계산할 수 있지만 실제적인 Depth는 알 수 없음
- Baseline 부재(RGB-D카메라에는 두개의 단안 카메라로 이루어져있어 기본적인 Baseline이 이있어 Feature Point를 이용한 더 정확한 3D point를 생성할 수 있다.)
- 정확한 Scale 정보를 알 수 없음.
양안 카메라(Stereo Camera)
- 거리가 고정된 두 개의 단안 카메라를 이용하여 물체까지 거리 측정
- BaseLine: 두카메라 사이에 고정된 거리
- 베이스 라인이 멀 수록 먼 거리를 측정 가능
- 깊이 추정 알고리즘을 이용하여 3D point 구현 및 맵핑 가능
- 장점
- 단안 카메라 경우 보다 정확한 위치 추정 능력
- Dense한 맵 생성 가능
- 단점
- 스테레오 매칭 알고리즘의 계산이 복잡
- 조명 변화에 취약
깊이 카메라(RGB-D Camera)
- 적외선(IR) 구조광 방식 또는 레이저 광선의 비행 시간을 측정해 깊이를 예측
- 현재 일반적으로 사용되는 깊이 카메라
- Kinect V1, Kinect V2
- Xition Pro Live
- Intel RealSense
- Google Tango
- 장점
- 비교적 정확한 깊이 값 예측이 가능
- Dense한 맵 생성 가능
- 단점
- 좁은 측정 범위
- 작은 시야각
- 반사, 투과성 재질의 물체 깊이 측정 불가
- 주로 실내 으용에서 사용됨.
Lidar(센서)
- 레이저 광선의 비행시간을 측정해 깊이를 예측
- 측정 가능 거리 및 공간 분해능이 높음
- 종류
- 2D lidar/ 3D lidar
- Spinning/Solid-State
- 주요 회사
- Velodyne
- Robosense
- Ouster
- SOSlab
전통적인 Visual SLAM 프레임 워크
- Sensor Input(Lidar, Camera)
- Depth 이미지나 RGB이미지를 이용하여, intensity나 feature based extraction feature 포인트의 기술을 사용하여, 추적알고리즘을 통해 Visual odometery 구함
- Visual odomtery
- Backend Optimization
- Bundle adjustment(BA)를 사용하여서 Localization을 업데이트 한다.
- Graph based slam Optimization
- Loop Clousure detection
- Mapping
Visual odometery
- Fronted 단계
- 인접한 이미지 사이의 카메라 움직임을 통하여 Camera pose 구함
- 카메라와 3차원 공간 점 사이의 기하학적 관계(multi-Geometry)를 이용
- Feature Point(2D)를 3D 포인터로 생성
- Drift Error
- Visual odometry만 이용하여 궤적을 추정하면 에러가 누적도미
- 해결책
- Bacekend Optimization과 Loop Closure Detection 필요
Backend Optimization
- Sensor noise
- 정밀한 센서라도 노이즈는 있기 마련
- 저렴한 센서는 측정(Measurement) 오류가 큼
- 일부 센서는 자기장과 온도에 영향을 받음
- Backend Optimization
- 노이즈가 많은 데이터로부터 전체 시스템의 상태를 추정하는 방법(state estimation)
- Fronted에서 발생한 Drift 에러를 제거
- Fronted에서는 backend에 최적화 할 데이터와 데이터의 초기 값을 제공
- Backend 최적화 종류
- 필터 기반(Kalman filter, Particle Filter)
- 비선형최적화 기반
- Bundle Adjustment : 카메라 포즈와 3차원 포인트 재조정
- Pose graph optimization 맵포인트를 고려하면 계산량이 커지므로 pose만 고려하는 방법
Loop Closure Detection
- 현재 위치가 이전에 방문한 곳인지를 판단
- QR 코드 활용
- 환경적인 제약이 존재
- 카메라 영상을 활용
- 이미지간의 유사성을 판단(BoW(Bag of words))
- Backend에서는 루프 폐쇄에 대한 정보를 받아서 위치 추정과 지도 작성에 반영
- Drift 에러를 제거하고 전역적으로 일관된 맵으 생성
Mapping
- 환경 맵을 만드는 과정(Building a MAP)
- 응용프로그램에 따라 다르게 구현
- 무인 청소 로봇
- 2차원 지도로 충분
- 자율주행 드론
- 6DOF 이므로 3차원 지도가 필요
- Map Representation
- Pointcloud
- Voxel(volume matrix)
- Surfel
- Occupancy grid map
- 맵 표현 밀도에 따른 종류
- Sparse, Dense, Semi-dense Map
Modern State of the Art System
- Sparse SLAM
- only use a small selected subset of the pixels(features) from a monocular color camera
- Fast and Real time on CPU but it produces a sparse map(point clouds)
- point clouds는 sparse information이다.
- Landmark-based or feature-based representations
- ORB-SLAM
- one of the SOTA frameworks in the sparse SLAM category
- Complete SLAM system for monocular camera
- Real-time on standard CPUs in a wide variety of environment.
- small hand-held indoors
- drones flying in industrial environments
- cars driving around a city
- Dense SLAM
- using RGB-D camera
- Use most of all the pixels in each received frame
- or use depth images from a depth camera
- it produces a dense map but GPU acceleration is necessary for the real time operation
- Volumetric model or surfel-based representation
- InfiniTam
- one of the SOTA frameworks in the Dense SLAM category
- Multi-platform frameworks for real-time, Large-Scale Depth fusion and tracking
- Densely Reconstructed 3D scenes
- Direct Method(semi-Dense SLAM)
- make use of pixel intensities directly
- intensity 차이를 통해 Mapping
- Warping을 통해 시점을 갖다 붙인다.(가장 작도록하여서 update)
- Enable using all information in the image
- it produces a semi-dense map
- Higher accuracy and robustness in particular even in environments with little keypoints
- LSD SLAM
- Highly cited SLAM framework in the direct method SLAM category
- Large-scale, consistent maps of the environment
- Accurate pose estimation based on direct image alignment.
- Lidar SLAM
- Make use of the Lidar sensor input for the localization and mapping
- Autonomous driving purpose-oriented in outdoor environment
- Lidar odometery maaping
- LOAM
- One of the SOTA frameworks in the lidar SLAM category
- Very low drift error using the edge and planar features
- Low computation complexity
- 두 SLAM 기술을 통틀어 VLOAM이라고도 불림
SLAM 문제의 수학적 표현
- Motion Model
- Control input such as Velocity, IMU
- 위와 같은 Velocity가 input으로 들어오고 hardware를 통해 출력이 될떄 로봇 위치가 어떻게 변하는지 표현 하는 것
- Such as Wheel odometer encoded from wheel odometer encoder and predict a robot pose in an environment.
- Velocity값을 이용하여 robot statement(x,y,z)값을 구하는것
- Sensor Model
- 랜드마크가 로봇에서 어떻게 관찰되는지 표현
- such as visual odometer from Tracking algorithm by Camera sensor.
- Landmark를 통해 로봇 statement(x,y,z)를 구하는 것.
Motion Model
- 로봇이 현재 위치에서 컨트롤 입력(e.g velocity) 받았을때 새로운 로봇 위치 예측
- Motion model 수학적 정의
- x_f = f(x_k-1, u_k-1, w_k)
- f() : Motion Model을 나타내는 함수
- u_k : 모션 센서 및 컨트롤 입력 받은 값
- w_k : Motion model에 대한 노이즈
- Motion Model로 부터 구해지는 x,y,z 값은 Kinematic formular를 통해서 구해진다.
- Example
- 평면에서 움직이는 청소 로봇의 경우
Sensor Model
- 로봇이 위치에서 어떤 랜드마크(extracted feature point)를 볼때 관측 데이터(x,y,z of extracted feature point)가 생성되는 것을 표현
- Sensor Model의 수학적 정의
- z_kj = h(y_j, x_k, v_k, j)
- h() : Sensor Model을 나타내는 함수
- y_j : 랜드 마크
- x_k : 현재 로봇 위치
- Z_kj : 랜드마크의 관찰 값(x,y,z of extracted feature point)
- v_kj : Sensor model에 대한 노이즈
- Example
- 평면에 움직이는 청소 로봇의 경우
SLAM의 상태 추정 문제(State estimation)
- 모션 모델과 센서 모델 필요
- x_f = f(x_k-1, u_k-1, w_k)
- z_kj = h(y_j, x_k, v_k, j)
- 선형인가 비선형인가?
- 초기 SLAM 문제는 Extended Kalman Filter를 이용
- Talyor expantion으로 선형화 한다(근사화)
- EFK SLAM의 단점
- 선형화 과정에서의 오차
- Particle Filter, 비선형 최적화 방법을 사용하기 시작
- Graph 기반의 SLAM 방법이 주류를 이룸
- Large Scale에 적합
Reference
SLAM KR
视觉SLAM书
Introduction
-
Visual Slam은 모바일 로봇 혹은 Mobility 능력을 갖춘 기계 시스템이 Lidar, Ladar, Camera, Ultra sonic 등과 같은 센서들을 이용하여서 물체 인식 및 Robot Localization(현지화), Building a Map 등을 이루게 만드는 기술이다.
-
특히 모바일 로봇틱스에서 많이 이용이 되는데, 모바일 로보틱스가 자율 주행을 하기 위해서는 아래와 같은 2개가 중요하다.
- Localization
- Mapping
Simultaneous Localization and Mapping
- Visual Localization
- 로봇에 장착된 센서만 이용(외부 장치 X)
- GPS가 잘 작동하지 않는 환경
- Mapping
- 사전에 주변 환경이 만들어지지 않은 상태에서 주변환경(mapping and Building a Map)
- 경로 계획에 대한 정보를 제공
Various Localization methods
- 가이드 레일, QR코드 GPS 센서
- 실제로는 가이드 레일, QR 코드를 놓을 수 없는 경우가 많음
- GPS 전파가 잘 닿지 않는 곳이 있음(실내, 도심지역)
- 신뢰할 수 있지만 범용적이지 못함
- 환경적인 제약이 존재
- Wheel Encoder, 카메라, Lidar, Ladar, IMU센서
- 환경에 대한 간접적인 물리량을 측정
- 환경에 대해 추가적인 설치 없이 위치 추정 문제 해결
- 환경적인 제약이 있음
- Visual Slam
- 카메라 센서를 주로 이용한 위치 추정 및 지도 작성 방법
- 카메라의 동작 방식에 따른 분류
- 단안 카메라, 양안 카메라, 깊이 카메라
단안 카메라(Monocular Camera)
- 한개의 카메라를 움직여 물체까지 거리 추정 (Frame 별로 depending on Time)
- 깊이 추정 알고리즘(PnP, 3D-2D, Fundemantal Matrix, Essential Matrix)를 이용하여 각 픽셀의 시차(dispartiy)를 계산
-
영상에서 Feature point를 추출하고 영상간의 Feature point 매칭을 통해 3차원 포인트를 계산(추정 알고리즘)
- 장점
- 다른 방법들에 비해 간단
- 계산량이 적고 실시간에 적합
- 단점
- Dispartiy는 계산할 수 있지만 실제적인 Depth는 알 수 없음
- Baseline 부재(RGB-D카메라에는 두개의 단안 카메라로 이루어져있어 기본적인 Baseline이 이있어 Feature Point를 이용한 더 정확한 3D point를 생성할 수 있다.)
- 정확한 Scale 정보를 알 수 없음.
- Dispartiy는 계산할 수 있지만 실제적인 Depth는 알 수 없음
양안 카메라(Stereo Camera)
- 거리가 고정된 두 개의 단안 카메라를 이용하여 물체까지 거리 측정
- BaseLine: 두카메라 사이에 고정된 거리
- 베이스 라인이 멀 수록 먼 거리를 측정 가능
- 깊이 추정 알고리즘을 이용하여 3D point 구현 및 맵핑 가능
- 장점
- 단안 카메라 경우 보다 정확한 위치 추정 능력
- Dense한 맵 생성 가능
- 단점
- 스테레오 매칭 알고리즘의 계산이 복잡
- 조명 변화에 취약
깊이 카메라(RGB-D Camera)
- 적외선(IR) 구조광 방식 또는 레이저 광선의 비행 시간을 측정해 깊이를 예측
- 현재 일반적으로 사용되는 깊이 카메라
- Kinect V1, Kinect V2
- Xition Pro Live
- Intel RealSense
- Google Tango
- 장점
- 비교적 정확한 깊이 값 예측이 가능
- Dense한 맵 생성 가능
- 단점
- 좁은 측정 범위
- 작은 시야각
- 반사, 투과성 재질의 물체 깊이 측정 불가
- 주로 실내 으용에서 사용됨.
Lidar(센서)
- 레이저 광선의 비행시간을 측정해 깊이를 예측
- 측정 가능 거리 및 공간 분해능이 높음
- 종류
- 2D lidar/ 3D lidar
- Spinning/Solid-State
- 주요 회사
- Velodyne
- Robosense
- Ouster
- SOSlab
전통적인 Visual SLAM 프레임 워크
- Sensor Input(Lidar, Camera)
- Depth 이미지나 RGB이미지를 이용하여, intensity나 feature based extraction feature 포인트의 기술을 사용하여, 추적알고리즘을 통해 Visual odometery 구함
- Visual odomtery
- Backend Optimization
- Bundle adjustment(BA)를 사용하여서 Localization을 업데이트 한다.
- Graph based slam Optimization
- Loop Clousure detection
- Mapping
Visual odometery
- Fronted 단계
- 인접한 이미지 사이의 카메라 움직임을 통하여 Camera pose 구함
- 카메라와 3차원 공간 점 사이의 기하학적 관계(multi-Geometry)를 이용
- Feature Point(2D)를 3D 포인터로 생성
- Drift Error
- Visual odometry만 이용하여 궤적을 추정하면 에러가 누적도미
- 해결책
- Bacekend Optimization과 Loop Closure Detection 필요
Backend Optimization
- Sensor noise
- 정밀한 센서라도 노이즈는 있기 마련
- 저렴한 센서는 측정(Measurement) 오류가 큼
- 일부 센서는 자기장과 온도에 영향을 받음
- Backend Optimization
- 노이즈가 많은 데이터로부터 전체 시스템의 상태를 추정하는 방법(state estimation)
- Fronted에서 발생한 Drift 에러를 제거
- Fronted에서는 backend에 최적화 할 데이터와 데이터의 초기 값을 제공
- Backend 최적화 종류
- 필터 기반(Kalman filter, Particle Filter)
- 비선형최적화 기반
- Bundle Adjustment : 카메라 포즈와 3차원 포인트 재조정
- Pose graph optimization 맵포인트를 고려하면 계산량이 커지므로 pose만 고려하는 방법
Loop Closure Detection
- 현재 위치가 이전에 방문한 곳인지를 판단
- QR 코드 활용
- 환경적인 제약이 존재
- 카메라 영상을 활용
- 이미지간의 유사성을 판단(BoW(Bag of words))
- Backend에서는 루프 폐쇄에 대한 정보를 받아서 위치 추정과 지도 작성에 반영
- Drift 에러를 제거하고 전역적으로 일관된 맵으 생성
Mapping
- 환경 맵을 만드는 과정(Building a MAP)
- 응용프로그램에 따라 다르게 구현
- 무인 청소 로봇
- 2차원 지도로 충분
- 자율주행 드론
- 6DOF 이므로 3차원 지도가 필요
- 무인 청소 로봇
- Map Representation
- Pointcloud
- Voxel(volume matrix)
- Surfel
- Occupancy grid map
- 맵 표현 밀도에 따른 종류
- Sparse, Dense, Semi-dense Map
Modern State of the Art System
- Sparse SLAM
- only use a small selected subset of the pixels(features) from a monocular color camera
- Fast and Real time on CPU but it produces a sparse map(point clouds)
- point clouds는 sparse information이다.
- Landmark-based or feature-based representations
- ORB-SLAM
- one of the SOTA frameworks in the sparse SLAM category
- Complete SLAM system for monocular camera
- Real-time on standard CPUs in a wide variety of environment.
- small hand-held indoors
- drones flying in industrial environments
- cars driving around a city
- Dense SLAM
- using RGB-D camera
- Use most of all the pixels in each received frame
- or use depth images from a depth camera
- it produces a dense map but GPU acceleration is necessary for the real time operation
- Volumetric model or surfel-based representation
- InfiniTam
- one of the SOTA frameworks in the Dense SLAM category
- Multi-platform frameworks for real-time, Large-Scale Depth fusion and tracking
- Densely Reconstructed 3D scenes
- Direct Method(semi-Dense SLAM)
- make use of pixel intensities directly
- intensity 차이를 통해 Mapping
- Warping을 통해 시점을 갖다 붙인다.(가장 작도록하여서 update)
- intensity 차이를 통해 Mapping
- Enable using all information in the image
- it produces a semi-dense map
- Higher accuracy and robustness in particular even in environments with little keypoints
- make use of pixel intensities directly
- LSD SLAM
- Highly cited SLAM framework in the direct method SLAM category
- Large-scale, consistent maps of the environment
- Accurate pose estimation based on direct image alignment.
- Lidar SLAM
- Make use of the Lidar sensor input for the localization and mapping
- Autonomous driving purpose-oriented in outdoor environment
- Lidar odometery maaping
- LOAM
- One of the SOTA frameworks in the lidar SLAM category
- Very low drift error using the edge and planar features
- Low computation complexity
- 두 SLAM 기술을 통틀어 VLOAM이라고도 불림
SLAM 문제의 수학적 표현
- Motion Model
- Control input such as Velocity, IMU
- 위와 같은 Velocity가 input으로 들어오고 hardware를 통해 출력이 될떄 로봇 위치가 어떻게 변하는지 표현 하는 것
- Such as Wheel odometer encoded from wheel odometer encoder and predict a robot pose in an environment.
- Velocity값을 이용하여 robot statement(x,y,z)값을 구하는것
- Sensor Model
- 랜드마크가 로봇에서 어떻게 관찰되는지 표현
- such as visual odometer from Tracking algorithm by Camera sensor.
- Landmark를 통해 로봇 statement(x,y,z)를 구하는 것.
Motion Model
- 로봇이 현재 위치에서 컨트롤 입력(e.g velocity) 받았을때 새로운 로봇 위치 예측
- Motion model 수학적 정의
- x_f = f(x_k-1, u_k-1, w_k)
- f() : Motion Model을 나타내는 함수
- u_k : 모션 센서 및 컨트롤 입력 받은 값
- w_k : Motion model에 대한 노이즈
- Motion Model로 부터 구해지는 x,y,z 값은 Kinematic formular를 통해서 구해진다.
- Example
- 평면에서 움직이는 청소 로봇의 경우
Sensor Model
- 로봇이 위치에서 어떤 랜드마크(extracted feature point)를 볼때 관측 데이터(x,y,z of extracted feature point)가 생성되는 것을 표현
- Sensor Model의 수학적 정의
- z_kj = h(y_j, x_k, v_k, j)
- h() : Sensor Model을 나타내는 함수
- y_j : 랜드 마크
- x_k : 현재 로봇 위치
- Z_kj : 랜드마크의 관찰 값(x,y,z of extracted feature point)
- v_kj : Sensor model에 대한 노이즈
- Example
- 평면에 움직이는 청소 로봇의 경우
SLAM의 상태 추정 문제(State estimation)
- 모션 모델과 센서 모델 필요
- x_f = f(x_k-1, u_k-1, w_k)
- z_kj = h(y_j, x_k, v_k, j)
- 선형인가 비선형인가?
- 초기 SLAM 문제는 Extended Kalman Filter를 이용
- Talyor expantion으로 선형화 한다(근사화)
- EFK SLAM의 단점
- 선형화 과정에서의 오차
- Particle Filter, 비선형 최적화 방법을 사용하기 시작
- Graph 기반의 SLAM 방법이 주류를 이룸
- Large Scale에 적합
Reference
SLAM KR 视觉SLAM书
Comments