ROS SLAM

지토·2021년 10월 11일
0

경희대학교 황효석 교수님의 2021-2 로봇 프로그래밍 수업을 듣고 공부한 내용입니다.

localization

왼쪽 사진을 획득하고 오른쪽 사진을 획득하기 위해서 내가 얼마나 움직였는지 (pose: 움직임과 회전) 알기 위해서는 1. global 한 맵과 2. 카메라에 대한 intrinsic parameter 을 미리 갖고 있어야 한다.

이 두 가지를 갖고 있으면 내가 사진을 어디서 찍었는지 정확하게 알 수 있다. 따라서 이 두 사진을 통해서 내 pose 의 변화를 알 수 있다.

Mapping

이 경우 1. 내 pose 의 변화와 2. 카메라의 intrinsic parameter 을 알고 있다면 이 두 사진을 통해서 map 을 추출할 수 있다.

intrinsic parameter

카메라로 얻은 이미지는 픽셀 위의 좌표이다. 이 좌표를 실제 3차원상의 좌표로 바꾸어 주려면 intrinsic parameter 을 알아야 한다.

따라서 mapping 은 localization 과 반대로 내가 얼만큼 움직였는지에 관한 정보가 있으면 3차원 map 을 만들어 낼 수 있다는 것이다.

localization 은 정확한 map 이 있으면 내가 어디 있는지 알 수 있다는 것이다.

Feature Point : 특징점

feature point 를 매칭하는 방식으로 우리는 영상에서 object 가 어디로 이동했는지 알아낼 수 있다.

Feature : salient and repeatable points or regions

feature point 는 두드러지고 반복적인 영역이나 점을 말한다.
어떤 object 가 나오는 이미지에서는 그 feature 가 항상 나와야 한다. (repeatable)
주변이랑 다른 점이 있어야 한다. (salient)

feature extraction method

  1. point - based method
  • Harris corner
  • FAST
  1. Blob - based method
    blob 이란 종기처럼 튀어 나온 것으로, corner 가 뾰족한 모양이라면 blob 은 주로 원으로 되어 있다.
  • DOF (Different of Gaussian)
  • LoG (Laplacian of Gaussian)
  1. Region - based method
  • MSER (Maximally stable extremal regions)

경희대학교 황효석 교수님의 2021-2 로봇 프로그래밍 수업을 듣고 공부한 내용입니다.

What is SLAM ?

Simulatanously Localization And Mapping

  • Computing the robot's poses and the map of the environment at the same time

로봇이 다른 전자장치와 다른 것은 스스로 이동한다는 것이다. 따라서 다른 디바이스에 비해 로봇만이 가질 수 있는 장점은 바로 mobility 이다. 따라서 mobility 의 측면에서 SLAM은 로봇에서 가장 중요한 문제이다.

SLAM 은 map 을 만드는 것이고 navigation 은 목적지까지 이동하는 것이다.

SLAM Applications

자율주행에 SLAM 이 핵심적인 기능이라고 말 할 수는 없는 이유는, 이 육지상에 지도가 없는 곳이 거의 없기 때문이다. 또한 지도는 한 번 만들어 놓으면 크게 바뀌지 않는다. 따라서 SLAM 은 실내에서 많이 쓰인다. 지도 상에는 건물 내부에 대한 정보는 표시되어 있지 않다. 또한 물 속 처럼 지형이 잘 지도로 드러나지 않는 곳에서도 쓰인다.

  • At home: 로봇 청소기, 잔디 깎개
  • Air : 무인 항공기
  • Underwater : 산호초 탐사
  • Underground : 갱도 개척
  • Space : 새로운 행성 개척

Definition of the SLAM Problem

Given : 주어진 정보

  • robot's control : 명령 후에 로봇이 어떻게 움직였는지
  • observations : 카메라 센서 데이터, feature 정보 등

Wanted : 우리가 알아내야 하는 것

  • map of the environment
  • path of the robot

어떤 것이 어디에 있을 지 확률로써 계산한다.

따라서 SLAM 이라는 것은 observation 과 map 을 알고 있을때 이동 경로에 대한 확률 분포를 알아내는 것이다.

Full SLAM

이미 데이터를 다 갖고 있는 상태에서 그 데이터를 가지고 그걸 가지고 추후에 추정하는 방식.

Online SLAM

= RealTime SLAM

  • u : 로봇에게 내린 컨트롤
  • z : 그때 그 위치에서 관측한 observation

이 두 가지 값이 주어졌을 때 map 을 만들어 내는 것을 SLAM 이라고 한다.

SLAM 이 왜 어려운가?

확률값을 계속 곱해 나가기 때문에 불확실성이 계속 누적되어서 어떤 것이 특정 장소에 존재할 확률분포가 점점 퍼지게 되기 때문이다.

내 위치가 불확실해지니 그 자리에서 내가 만든 랜드마크들의 불확실성도 더 커진다. 

Loop Closing

불확실성의 어려움을 해결하는 한 가지 방법.

한 바퀴 돌아서 원래 위치로 왔을 때 마지막 위치를 기준으로 만든 맵의 위치를 수정해준다.

volumetric

Grid Map.
영역을 잘게 나눈 다음에 그 그리드마다 Classification 을 하는 것.

(회색은 unknown 이다.)
 

feature based SLAM

Active SLAM

map이 완성되지 않은 곳을 로봇이 스스로 찾아가서 map 을 완성해 나가는 방식.

Passive SLAM

직접 조종해야 함.

Motion and Observation Model : 확률 기반 예측

  • motion model : 이전에서 내가 얼만큼 왔는지를 확률적으로 표현한 모델
  • observation model : 뭔가 관측했을때 관측에 대해서 확률적으로 표현한 모델

P(x(t) | x(t-1), u(t))

  • x(t-1) : old pose
  • u(t) : control
  • x(t) : new pose

가우시안 모델, 혹은 non-gassian model 로도 표현될 수 있다.

0개의 댓글