Post

[SLAM] Rotation Matrix

본 내용은 slambook(https://github.com/gaoxiang12/slambook-en)을 바탕으로 작성되었습니다.

Rotation Matrix

Points, Vectors, and Coordinate Systems

  • 우리 일상 공간은 3차원으로 구성되어 있고, 우리는 3D movements를 사용하기 위해 태어났다. 3D 공간은 3개의 축으로 구성되어 있으므로 하나의 공간 좌표의 위치는 3개의 coordinate으로 특정될 수 있다.

  • pointsvectors
    points는 길이와 부피가 없는 공간 요소이다. 두 points를 연결하면 vector가 형성된다. 이때 vector는 한 점과 다른 점을 연결하는 화살표라고 할 수 있다. 3D 공간에서 한 점의 좌표는 \(\mathbb{R}^3\)로 연결된다. linear space의 base \((e_1, e_2, e_3)\)가 있을 때, vector \(a\)는 다음과 같이 표현될 수 있다. image

이때 \((a_1, a_2, a_3)^T\)가 \(a\)의 coordinate이며, \(\mathbb{R}^3\)에서는 3개의 coordinate 축이 orthogonal하게 구성되어 있다. 예를 들어, \(x\)와 \(y\)축이 주어졌을 때, \(z\)축은 left-hand rule 혹은 right-hand rule에 의해 결정될 수 있다.

  • vector a, b의 inner product(내적)
    image
    vector 내적은 두 vector가 얼마나 유사한지를 나타내는 척도로 사용된다.

  • vector a, b의 outer product(외적)
    image 외적의 결과 vector는 두 vector에 perpendicular한 값이 되며, 길이는 \(|a||b|sin<a,b>\)이다. \(a \wedge\)는 \(a\)의 skew-symmetric matrix로, 외적 \(a \times b\)를 행렬 곱으로 변환시켜준다.



Euclidean Transforms Between Coordinate Systems

  • 우리는 real scene에서 다양한 좌표계를 정의한다. 예를 들어, 로봇을 움직일 때는 일반적으로 world coordinate(\(x_W, y_W, z_W\))을 정의하며, 카메라나 로봇을 좌표계(\(x_C, y_C, z_C\))로 설정하기도 한다.
    image

  • 만약 카메라 좌표계에서 vector \(p\)가 \(p_c\)라면, world coordinate 상에서는 \(p_w\)로 정의될 것이다. 그렇다면 두 coordinate 간에는 어떻게 전환이 일어날까? 우선 카메라 좌표계에서 coordinate values를 얻은 뒤, coordinate transform을 수행하면 될 것이며, 이는 transform matrix \(T\)로 표현된다.
  • Rigid body motion은 두 좌표계 사이의 motion으로, rotation과 translation으로 구성된다. Rigid body motion 과정에서 vector의 길이와 각도는 변하지 않는다.

Euclidean transformation

Euclidean transformation은 rotation과 translation으로 구성되어 있다.

Rotation

  • 단위 길이의 orthogonal한 base \((e_1, e_2, e_3)\)가 있을 때, rotation을 하면 \((e\prime_1, e\prime_2, e\prime_3)\)이 된다. 또한 같은 vector \(a\)가 있을 때, 두 좌표계에서 각각 \([a_1, a_2, a_3]^T\)와 \([a\prime_1, a\prime_2, a\prime_3]^T\)으로 표현된다.
    image
  • 이때 양쪽 식에 \((e_1, e_2, e_3)\)를 곱하면 다음과 같이 rotation matrix \(R\)을 정의할 수 있다. image Rotation matrix \(R\)은 두 좌표계 bases의 내적으로 구성되어 있다. 이때 base vector의 길이가 1이기 때문에, \(R\)은 두 좌표계 bases 각도의 cosine 값이 된다. 따라서 \(R\)을 direction cosine matrix로 부르기도 한다.

  • Rotation matrix는 determinant가 1인 orthogonal matrix이다. 따라서 special orthogonal group \(SO(n)\)을 다음과 같이 정의할 수 있다.
    image

이러한 집합은 n 차원의 공간 상의 rotation matrix로 구성되어 있다. 예를 들어, \(SO(3)\)은 3차원의 공간 상의 rotation을 의미한다.

  • 앞서 말했듯 rotation matrix는 orthogonal하다. 따라서 rotation matrix의 역행렬은 반대 방향의 rotation을 나타낸다. 위 수식 2.6의 정의에 따르면, \(a=Ra\prime\)일 때, \(a\prime\)은 다음처럼 표현된다. image 따라서 \(R^T\)는 반대 방향의 rotation이라는 것을 확인할 수 있다.


Translation

  • world 좌표계에서 vector \(a\)가 있을 때, rotation \(R\)translation \(t\) 이후에 \(a\prime\)을 얻을 수 있다. translation은 간단하게 rotation된 좌표에 translation vector \(t\)를 더하면 된다.
    image

  • 이 책에서는 좌표계 1과 2가 있을 때, vector \(a\)를 vector \(a_1\)와 \(a_2\)로 다음처럼 정의한다. image 이때 \(R_{12}\)는 좌표계 2에서 좌표계 1로의 rotation을 의미한다.

  • \(t_{12}\)은 translation vector로, 물리적 의미를 고려하여 이해해야 한다. 좌표계 1의 origin으로부터 좌표계 2의 origin을 가리키는 vector이므로, coordinates는 좌표계 1로부터 활용된다. 따라서 본 책에서는 \(t_{12}\)를 좌표계 1로부터 2로 가는 vector로 이해하기를 권한다. 만약 world system \(W\)에서 camera system \(C\)로 가는 vector가 있다면, 수학적 기호로 \(t_{WC}\)로 표기한다.



Transform Matrix and Homogeneous Coordinates

  • 수식 2.9이 Euclidean space의 rotation과 translation에 대해 설명하고 있지만, 여전히 transformation 관계가 linear하지 않다는 문제가 남아있다. 예를 들어, \(R_1, t_1\)과 \(R_2, t_2\)의 transformation이 있다고 하자. image

  • 그러면 a부터 c까지의 transformation은 다음과 같다. image 하지만 이 수식은 깔끔 명료하지 않다. 그래서 homogeneous coordinatestransform matrices를 사용하여 수식 2.9를 다시 정리하면 다음과 같다. image

  • 이때 3D vector의 끝에 1을 더하여 homogenous coordinates라는 4D vector로 만들었다. 이런 4차원 vector에서는 rotation과 translation을 하나의 matrix에 적을 수 있으며, linear하게 바꿀 수 있다. 수식 2.11에서 행렬 \(T\)는 transform matrix라고 불린다.

  • \(R\): 3x3, \(t\): 3x1, \(T\): 4x4

  • \(\tilde{a}\)는 \(a\)의 homogenous coordinates을 나타낸다. 이를 통해 위에서 깔끔명료하지 않았던 수식을 다시 나타낼 수 있다. image 그러나 단순히 1을 더하고 빼는 것만으로 homogeneous coordinates의 symbol을 사용하는 것은 불편하다. 따라서 이 책에서는 \(b = Ta\)로 바로 적기로 한다.

  • transformation matrix의 집합은 다음과 같이 special Euclidean group으로 정의된다. image

  • transform matrix의 역함수는 inverse transformation을 의미한다. image 또한 \(T_{12}\)는 좌표계 1에서 좌표계 1로의 transformation을 의미한다.

  • 이 책에서 \(Ta\)는 homogeneous coordinates를 나타내고, \(Ra\)는 non-homogenous coordinates를 나타내는 것으로 한다.

This post is licensed under CC BY 4.0 by the author.