1. SLAM에서 사용할 수 있는 센서
Sensor
- proprioceptive sensor : 자기 자신의 움직임 감지
- exteroceptive sensor : 외부 정보 감지
- 이 두개를 조합하여 최적의 위치, 지도 정보를 추정하는 것이 SLAM
- 모든 센서는 노이즈를 가지고 있다
proprioceptive sensor
wheel encoder
- 바퀴에 달려있어서 바퀴의 회전량 측정
- 회전량 측정 방법 : brush, optical(빛 이용) 등
- 회전량 * 바퀴 둘레 = 이동량
- 모든 자동차에 탑재가 되어 있다
- 드론의 경우 날개의 모터에 탑재된 경우가 많다
- dead reckoning
- wheel encoder를 사용하여 위치 추정하는 방법
- motion값을 누적하여 차체의 위치 추정
- 시간이 지날수록 위치 추정값에 에러가 누적된다
- gps 정보로 노이즈를 제거할 수 있지만 실시간 주행에 사용하기에는 위험하다
- wheel encoder의 오차 생성 이유
- 기본 센서 노이즈
- 비, 눈의 바퀴 미끌림 -> 센서 오차
- 동승자의 무게로 인해 타이어의 둘레 변경
- 코너 시 각각 타이어의 둘레가 바뀔 수 있다
IMU sensor
- linear accelerator(선형 가속도 측정) + angular gyroscope(각속도 측정) 센서가 혼합된 센서
- 관성을 측정하는 센서
- spring-damper system의 원리를 이용해서 관성 측정 -> 이를 칩으로 만든게 imu 센서
- MEMS imu
- 진동을 읽어서 전기신호로 변환하는 형태
- 주로 스마트폰, 로봇, 드론 등 소형 디바이스에 사용
- Optical system
- 빛을 이용
- 온도, 자기장 변화에 강인
- 자동차에 사용
- exteroceptive sensor와 결합하여 사용하는 것이 유행
- imu를 통해 얻은 proprioceptive 정보를 카메라, 라이다 기반의 odometry에 결합하여 조금 더 정확한 결과를 빠르게 얻어내기 위해
- 장점
- 저렴 (자동차용은 저렴하지 않음, 모든 자동차에 탑재되어 있지는 않다)
- 높은 sensitivity
- 빠른 속도 : 높은 FPS (100~4000Hz 차량의 경우 200~800)
- 단점
- 오차가 누적된다
- 엄청나게 빠른 drift 누적
- 보정을 위해 camera, lidar, gnss와 함께 사용
exteroceptive sensor
GNSS
- Global Navigation Satellite System
- GPS라고 부르기도 하는데 사실 GPS는 미국의 GNSS를 칭하는 것
- GNSS는 지구에 있는 sensor receiver의 위치를 알아내는 것이 목적
- 비콘 기반의 위치 추정 센서 (인공위성과의 통신을 이용)
- 센서에서 신호를 보냄
- 인공위성이 받음
- 주변 인공위성과 통신 수행
- 통신을 보낼 때와 받을 때의 시간 차이를 이용해서 거리계산 (거리=시간*속도)
- 여러 위성들과 GNSS 센서 사이의 거리를 구하면 삼각측량을 통해 GNSS가 지구의 어디에 있는지 알 수 있다.
- 이를 통해 센서의 위치를 파악할 수 있다.
- 인공위성은 지구가 자전함에 따라 따라서 같이 움직이기 때문에 항상 같은 위치에 있다고 볼 수 있다.
- 우리나라는 아직 독자적인 시스템은 없고 미국, 일본의 시스템을 사용중이다. 한국 GNSS 기술인 KPS를 만들고 있는 중이다.
- 장점
- 단점
- 부정확함(10~20m 오차) : 측위오차는 인공위성과 통신 중에 간섭이 나타나서 생긴다. 주변에 송수신 탑을 건축하면 오차를 줄일 수 있다.
- RTK-GPS(휴대용 송수신탑), DGPS를 사용할 경우 오차가 cm 단위로 줄지만 비쌈
- 고층 빌딩 사이에서 multi-path 문제 (빌딩 벽에 반사되면서)
- 실내, 지하 사용 불가능 (신호가 벽에 막힌다)
LiDAR
- Light detection and ranging sensors
- 적외선 레이저를 쏘고 반사 시간을 측정하여 거리를 추정하는 센서
- 레이저 방식 : time-of-flight, phase shift, frequency modulation
- 스캐닝 방식
- mechanical scanner : 센서가 회전하면서 데이터 수집 / 센서값을 읽고있는데 물체가 움직이면 문제 발생 (rolling effect)
- solide state scanner, flash LiDAR : 주변 환경을 전부 보기 위해서는 다수의 라이다를 부착해야함
- 주변 환경을 3D point cloud 형태로 바로 알 수 있다
- 장점
- exteroceptive 센서 중 가장 멀리볼 수 있고 정확한 편
- 자율주행 라이다는 ~100m 유효거리
- 빛의 파장이 일어나지 않기 때문에 낮, 밤 사용 가능
- 단점
- 비싸다
- 거리에 따라 정확도가 다르다는 문제가 있다
- 카메라에 비해 resolution이 낮다
- 눈, 비, 안개에 영향을 받는다
- multi-path 문제 : (고인 물에 의해 반사되어 앞의 물제에 튕기고 다시 돌아오는 문제 -> 위치를 잘못 추정할 수 있다)
RADAR
- Radio detection and ranging sensor
- 전파 측정
- doppler 효과를 이용하여 물체의 속도 추정 가능 (doppler가 0일 때는 사용 x)
- 장점
- 조명에 대한 영향x
- 날씨에 영향을 받지 않는다.(작은 물체에 회절하지 않아서 -> 작은 물체를 인식하지 못하기도 하다)
- 단점
- 작은 물체 감지 실패
- LiDAR 보다 낮은 해상도
- multi-path 문제
- tesla는 레이더를 사용하지 않는다. 비전 시스템이 레이더 기술을 상회하기 때문(그만큼의 하드웨어가 받쳐준다)
Ultrasound (초음파)
- 유효거리가 길지 않고 노이즈가 있음
- 벽 감지 센서로 많이 사용함
- 장점
- 단점
Camera
- 광센서(photo diode)를 이용해 빛 신호를 받고, debayering 프로세스를 통해 RGB 색 재구성
- 장점
- 저렴
- 좋은 성능 : dense data(모든 픽셀이 구조적, 값을 가짐, rich data라고도 함, 룰을 잘 만들면 정확한 추론 가능), texture, color, high-FPS
- 렌즈 교환을 통해 시야각 변경 가능
- 사람이 보는 시야와 가장 유사함 : 시각화 좋음
- 단점
Microphones
- 공기의 진동을 transducer 센서를 통해 전기 신호로 변환하는 센서
- 여러개의 마이크를 통해 소리의 근원에 대한 위치를 계산 가능
- 장점
- 단점
2. SLAM의 종류
SLAM의 종류
- exteroceptive sensor에 따라 종류가 달라진다
- Visual-SLAM / VSLAM
- LiDAR SLAM
- RADAR SLAM
- exteroceptive sensor를 여러개 사용할 수도 있다. 이럴때는 센서 이름을 나열하여 부른다
Visual-SLAM
- 카메라를 사용하는 SLAM
- 카메라 이미지를 딥러닝 네트워크의 입력으로도 사용하고 SLAM도 동시에 사용할 수 있다.
- 2D 이미지에서 3D 공간 재구축 (주로 texture 정보 사용)
- 장점
- 저렴
- 센서의 성능을 조절하기 쉽다 (렌즈 교체 -> 시야각, 초점, 노출 시간)
- 센서 속도가 빠른 편 (30 ~ 60fps)
- 이미지 기반 딥러닝 적용 가능
- 이미지로 사람이 이해하기 쉬운 시각화 가능
- 단점
- 갑작스러운 빛 변화에 대응 불가능
- 시야가 가려지거나 어두운 곳에서는 사용 불가능
슬램을 잘하기 위해서는 센서가 어떤 노이즈 특성을 가지고 있는지 파악하여 정확하게 확률을 추정해야한다.
VSLAM Sensors
- camera는 3d 물리정보를 2d 이미지 정보로 변환 -> 카메라의 노이즈 특성은 이 과정의 한계에서 생기는 것일거다! (카메라 센서칩, 카메라 렌즈)
- camera = camera device + lens
- 카메라 구성(configuration) 종류
- monocular camera : 1 camera
- stereo camera : 2 camera / multi camera - N cameras
- RGB-D Camera (depth camera)
monocular VSLAM
- 1대의 카메라에서만 이미지를 받는다
- 연구용 알고리즘이라는 인식이 있다
- 장점
- stereo / multi camera VSLAM 보다 저렴 (센서 가격, 전력 소비량, 이미지 데이터 송수신 대역폭 등)
- 단점
- scale ambiguity : 3d 공간을 실제 스케일로 추정할 수 없다, up-to-scale로만 추정 가능 (실제 scale에 비례해서만 생성할 수 있다)
- 이를 해결하기 위해 metric scale을 가진 proprioceptive sensor가 필요 (metric scale : 실제 세상에서 통용되는 미터 단위의 스케일) -> VIO(visual + imu)와 같은 방법이 있다
- 최근 딥러닝 기반 monocular depth estimation으로 문제를 해결하려는 시도가 있었다
stereo / multi camera VSLAM
- 2대의 카메라를 사용
- 인접한 카메라들간의 baseline 거리를 이용하여 삼각측량을 통해 metric scale의 거리 / 길이 추정 가능
- 장점
- 두 이미지간의 disparity 정보를 이용해서 픽셀마다 depth를 추정할 수 있다
- metric scale의 3D 공간 복원 가능
- 단점
- baseline이 정확하지 않으면 오차 발생 but! baseline을 완벽하게 알 수 없기 때문에 섬세한 calibration 과정을 거쳐야한다
- 카메라 설정 및 calibration이 어렵다
- 모든 카메라는 동시에 이미지를 취득해야한다 (synchoronized cameras)
- baseline이 충분이 길어야 먼 거리의 3D 공간을 정확하게 측정 가능
- 카메라들마다 intrinsic / extrinsic calibration을 정확하게 해야한다 (이 과정이 불가능하기도 하다, 차 한대씩 calibration을 수행해야한다)
- 모든 픽셀마다 disparity 정보로 depth를 계산하는데에는 많은 계산량이 필요하며 이를 위해 GPU나 FPGA 계산을 요구하기도 한다
RGB-D Camera VSLAM
- 구조광 또는 ToF(Time of Flight) 센서를 이용한 카메라를 사용(10m 정도의 depth를 구할 수 있다)
- 구조광 센서 : 적외선 레이저를 쏘고 이를 읽어서 레이저가 어디에 맺히는지 확인 / 가까이있는 물체는 레이저가 가까이 맺혀서 크게 보이고 멀리 있으면 작게 보임 / 크기 정보를 통해 거리 측정
- ToF 센서 : 레이저를 쏘고 반사되서 오는 시간을 통해 거리 측정
- Dense mapping을 많이 하는 편이다
- RGB 이미지와 depth정보를 한번에 얻을 수 있지만 RGB 이미지와 depth 이미지는 같지 않다 (baseline을 가지고 떨어져 있기 때문!) 또한 둘의 해상도가 다를 수 있다. 그래서 이 둘을 겹치게 하기 위해 추가적인 정합 작업 필요
- 장점
- depth 데이터를 통해 3D 공간을 metirc scale로 실시간 복원 가능
- 단점
- ~10m 정도에서만 depth 데이터가 정확
- field of view 가 작다
- 실외에서 사용 불가능 : 적외선 파장이 햇빛과 간섭으로 인해 depth 정보가 불안정