참고 자료: Cyrill Stachniss 교수님의 Robot Mapping 강의
http://blog.daum.net/shksjy/229
https://darkpgmr.tistory.com/78
https://m.blog.naver.com/kimjw1218/70178456203
아주 오래전부터 공부하려고 했었던 Robot Mapping 강의를 들으면서 그 내용을 정리하여 기록해두고자 합니다. 이 강의는 robot mapping (SLAM)에 관한 SOTA system의 내용들 (Kalman filter, EKF, UKF, Particle filter, Graph-based Approach...) 을 다루고 있기 때문에 SLAM에 관한 기초를 공부하기에 아주 적합하리라 생각 됩니다.
Homogeneous Coordinates란?
카메라를 다루는 시스템을 생각해보면, 3차원 공간상의 한 포인트를 (a point from the 3d world) 2차원 이미지로 매핑을 어떻게 할 것인지가 가장 중요한 관심사라고 할 수 있다. 이럴때 Homogeneous Coordinate를 사용할 경우 1. 다양한 좌표 변환을 행렬 형태로 표현할 수가 있어서 단순한 행렬 벡터의 곱으로 나타낼 수 있고, 2. 무한히 멀리 있는 한점을 유한한 좌표계로 표현할수 있다. 이를 통해서 Cartesian 좌표계를 사용할 경우 매우 복잡하게 표현되었던 수학적 유도과정들이 아주 간단하게 표현될 수 있다.
예를 들면, 카메라는 거리에대한 정보를 주지 않고 3차원 공간상의 한점을 pixel의 위치로 알려준다. 이 픽셀의 위치로부터는 대상 물체가 현재위치로부터 몇도 각도의 위치(angular orientation)에 있는지만 알 수가 있고 얼마나 멀리 떨어져 있는지는 알 수가 없다. 이는 3차원 공간상의 좌표를 projection ray(투영선)를 따라 2차원 이미지로 projection한다는 것을 의미 하는데, 이러한 projected image를 유클리디안 좌표계(길이, 거리, 각도로 표현하는 좌표계)로 표현하기는 것은 차선책(suboptimal)에 불과하고 수학적 표현도 복잡해지게 된다.
따라서 projective geometry라는 projection에 대한 공간을 다루기 위한 새로운 공간을 만들었고 복잡한 수학적 표현을 간단하게 표현할 수 있게 되었다. 여기서 중요한 점은 projective geometry를 사용해서 (좌표 변환에 관한 연산에 있어서)수학적 표현을 간단하게만드는 것뿐이고 물체들간의 기하학적 관계를 바꾸는 것은 아니라는 것이다.
이로부터 Homogeneous Coordinates가 도입된다.
Definition: $\lambda \neq 0$ 일때 한 기하학적 객체 (geometric object) $\mathbf{x}$ 는 어떤 스칼라값 $\lambda$를 곱한 $\lambda$$\mathbf{x}$와 동일한 객체를 나타낸다. 즉, 어떤 vector $\mathbf{x}$가 있고, 그 벡터에 어떤 스칼라 값을 곱해도 동일한 vector $\mathbf{x}$를 나타낸다.
이 개념을 그림으로 표현해보면,
유클리디안 공간에서의 좌표 [x,y]는 회색으로 표현된 평면 $\Re^2$상의 한 점 $\chi$ 이고 Homogeneous공간에서는 선 $\mathbf{x}$상에서 scaling factor $\lambda$를 따라 움직이게 된다. 즉 Homogeneous 공간에서 선 $\mathbf{x}$에 있는 모든 점들은 Cartesian공간의 좌표 [x,y]와 완전히 동일 하다. 그러므로 Homogeneous 좌표의 세번째 성분으로 모든 성분을 나누어서 세번쩨 성분을 1로 만들면 Cartesian 공간에서의 좌표가 된다.
그렇다면 무한히 멀리 있지만, 2차원 이미지 상에서 한점으로 나타나는 점은 다음과 같이 표현할 수 있다. 즉 3차원 공간상에서 무한히 멀리있는 한 점이 projection ray를 따라 이미지의 한pixel로 나타난다. cartesian 좌표계에서는 이 무한한 좌표를 표현할 수 있는 마땅한 방법이 없지만, homogeneous 좌표계 에서는 유한한 값을 가지는 형태로 표현할 수 있다.
그래서 이렇게 cartesian 좌표의 한 점을 Homogeneous 공간의 한 점으로 표현을 할 수 있다면 다음과 같이 아주 다양한 일을 할 수 있게 된다.
1. 이동변환
먼저 좌표 [x, y]를 각각 3, 4만큼 이동 시키는 것을 생각해보면,
$x' = x+3$
$y' = y+4$
로 나타낼 수 있는데, 이렇게 지저분한(?)식을 Homogeneous 좌표계로 표현하면 다음과 같이 간단한 행렬 식의 형태로 나타낼 수 있다.
이를 3차원으로 확장해서 이동변환에 관해서 일반화하면 다음과 같은 형태로 나타낼 수 있다.
2. 회전 변환
좌표 [x, y]를 원점을 기준으로 각도 $\theta$만큼 회전시키는 것을 생각해보면,
$x' = x\cos\theta-y\sin\theta$
$y' = x\sin\theta+y\cos\theta$
역시 이 지저분한(?)식을 다음의 Homogeneous 좌표계로 표현하면 다음과 같이 간단한 행렬 식의 형태로 나타낼 수 있다.
마찬가지로 이를 3차원으로 확장해서 z축에 대해 회전하는 변환은 다음과 같이 표현할 수 있다.
이처럼 Homogeneous Coordinate를 사용하면 복잡할 수 있는 변환에 대해서 다음과 같은 간단한 형태로 나타낼 수 있게 된다.
행렬 M에 대해서 좀더 자세히 풀어쓰면 이동변환의 경우
z축 회전변환 (yaw, $\psi$ 회전) 의 경우
마지막으로 회전과 변환을 같이하는 경우
이렇게 Homogeneous Coordinate를 사용할경우 객체의 움직임에 대해 간단한 수학적 표현을 사용해 나타낼 수 있다.
'SLAM' 카테고리의 다른 글
[SLAM-Course] Kalman Filter-06 (0) | 2020.06.24 |
---|---|
[SLAM-Course] Bayes Filter-05 (0) | 2020.06.23 |
[SLAM-Course] Bayes Filter-04 (0) | 2020.06.21 |
[SLAM-Course] SLAM 이란? (Introduction to Robot Mapping)-02 (0) | 2020.06.18 |
[SLAM-Course] SLAM 이란? (Introduction to Robot Mapping)-01 (0) | 2020.06.18 |
댓글