slam은 어떤 기술인가, slam으로 어떤 문제를 풀 수 있을지 배운다.
1. SLAM?
- Simultaneous Localization and Mapping의 약자
- 동시적 위치 추정 및 지도 작성
- SLAM은 원래 로봇 기술로부터 출발했다.
- 지도 : 공간 표현 (물체를 어떻게 표현할지 2D?3D?)
위치 추정과 지도를 어떻게 작성하나?
- 로봇의 센서(카메라, 라이다, imu, GNSS)를 사용
- 사전정보(사전 위치, 지도 정보) 없이 위치 추정과 지도를 작성해야한다.
- SLAM은 사전정보가 전혀 없는 상태에서 문제를 풀 수 있는 방법이다.
- 사전정보가 있으면??
- 위치에 대한 정보를 알게 된다 (과거의 정보로 현재에 대한 완벽한 정답은 아니다)
- 확률분포로 알게 된다
sensor
- no perfect sensors
- 센서 : 실제 세상의 물리적인 정보를 수치적인 모델 기반으로 측량하는 것
- 오차가 존재한다 but! 오차가 확률 분포로 존재한다.
- 모든 센서 데이터는 확률적으로 표현 가능하다.
2. 모바일 로보틱스 기술의 진화
Mobile robotics
- 이동가능한 로보틱스
- 사람이 가지 못하는 곳을 대신 탐색 (위험한 곳, 사람이 가기 어려운 곳)
- '이동' 자체를 자동화
- 시작은 고정된 로봇의 workspace 확장 : 바퀴, 레일 부착
- 자율 이동체(Mobile robotics)의 조건 : 인지, 결정, 행동
mobility의 인지
- 이동 가능한 공간(열린 공강)과 이동 불가능한 공간(벽, 장애물)을 인지하는 것
- Exteroceptive sensor
- 외부 정보를 감지하는 센서
- ex) range find 센서 = 1D Lidar = raser distance
ego-motion for mobility
- 자기 자신의 움직임을 잘 알아야한다서
- Proprioceptive sensor
- 자기 자신의 움직임을 측정하는 센서
- imu, gps 등의 센서
모바일 로보틱스의 기본 윈리
- Extercaptive와 Proprioceptive sensor 사용
- Percetpion & control feedback loop
- 센서 값 읽기(이동값 파악, 벽 위치 파악) -> 이동 -> 센서값 읽기 -> 이동 ->...
- 단점
- Proprioceptive 센서의 안정성 확보가 어렵다(센서가 1개이기 때문에 그때 받는 데이터가 1개이다)
- Exteroceptive sensing을 하는 동안 여러 센서값을 샘플링하기 위해 로봇은 멈춰서 기다려야한다 -> 평균 이동 속도가 매우 느려진다.
- 센싱하는 동안 움직이는 객체가 있으면 센싱 실패
- 해결 : 지속적으로 움직이면서 모션과 주변환경을 인지해야하고, Proprioceptive와 proprioceptive 센싱이 둘다 안정적으로 확보되어야한다.
3. Localization, Mapping, and SLAM
- Proprioceptive sensing을 집중적으로 보는 localization 기술
- Exteroceptive sensing을 집중적으로 보는 mapping 기술
- 이 둘이 혼합되면서 SLAM 개발되었다.
- 모든 센서는 확률적으로 표현가능하다
- Exteroceptive sensing : 주변 환경 인지
- Proprioceptive sensing : 자신의 움직임을 감지
- 완벽한 시스템은 이 두 센싱이 정확해야한다
- 두 sensing 모두 확률 분포를 가지고 있고 둘 간에 상관관계가 존재한다.
- 이 둘 간의 확률분포를 조합하는 방법이 있나?
- 확률 분포 조합할 때 주의해야할 점
- exteroceptive가 정확할 때 proprioceptive이 상대적으로 부정확하다는 것을 추정하고 proprioceptive을 보정할 수 있었다. 그치만 이때 exteroceptive가 부정확하면 보정해 줄 수 없다.
- 반대도 가능하다
- 둘중 하나만이라도 정확하면 보정해 줄 수 있다.
- 성공적인 보정을 위한 두가지 방법
- exteroceptive가 정확한 경우 -> localization
- proprioceptive가 정확한 경우 -> mapping
Localization
- 고품질의 지도 정보를 통해 위치정보 추정
- environment -> estimate motion (나의 위치와 움직임)
- 정확한 exteroceptive sensing 결과인 지도를 통해 나의 위치와 움직임을 모르는 상태에서 proprioceptive 추론
Localization의 한계
-
힌트가 부정확 / 힌트가 없는 경우
-
prior information에 대한 제약조건이 있다.
-
monte carlo localization
- configuration 정보(지도)가 주어졌을 때 particle filter(두 확률 분포를 합쳐서 최적의 정보(pose, 위치 정보)를 찾는 필터)를 사용해서 위치를 추정
- configuration space에 particle(로봇이 존재할 수 있는 곳)을 뿌림
- motion update 단계 : motion 정보를 추가해서 위치 정보를 업데이트 (존재할 수 없는 곳에 있는 particle은 모두 제거)
- mesuremet 단계 : 뿌려준 particle마다 exteroceptive 센서에서 들어온 정보를 덧씌운다.
- weight update : particle의 현재정보와 주변환경 정보가 일치하는지, 즉 exteroceptive 결과와 proprioceptive 결과가 일치하는지에 대해 계산
- resampling : 일치하는 particle만 남기고 그 주변에서 다시 particle을 새로 뿌려서 resampling 진행하면서 계속 반복
-
로봇이 실제로 존재할 수 있는 곳은 단 한곳뿐
-
monte carlo localization는 지도 정보와 함께 여러 센서의 정보를 누적해놓고 정답에 가까워지는 방법
-
지도를 전적으로 믿는 경향이 있다. -> 지도가 부정확하면 결과가 좋지 않을 수 있다.
-
지도가 없다면 알고리즘을 사용하지 못할 수 있다.
Mapping
- 고품질의 위치정보가 있을 때 최적의 지도 정보 추정
- motion 정보 -> estimate environment
- motion 정보 (proprioceptive sensing)가 주어 지면
- 움직이면서 하나의 물체를 여러 방향으로 바라보면서 정확한 위치를 추론할 수 있다.
- 정확한 proprioceptive sensing 값을 가지고 불안정하게 인식하는 exteroceptive sensing을 보정
- 그 결과 exteroceptive sensing 결과인 지도를 생성할 수 있다.
Mapping의 한계
chiken-and-egg problem
- localization을 위해서는 high quality map 필요
- mapping을 위해서는 high quality pose information 필요
- 이 문제를 해결하기 위해 SLAM 등장
SLAM
- 최적의 Map + 최적의 odometry 추정(동시에)
- proprioceptive sensing + exteroceptive sensing 융합
- 위치정보, 지동정보가 아에 없거나 부정확할 때 사용 가능
- 고품질의 사전 정보가 있다면 굳이 SLAM을 사용할 필요가 없다