[2023-07-11] 1. 3D회전과 이동
3D 회전과 이동
3D Rigid Body Motion
Rigid Body
- Position = {tx, ty, tz}
-
Orientation = {Rx, Ry, Rz}
- Pose = Position + Orientation
- 6 Degrees of Freedom = 3D Position + 3D Orientation = {tx, ty, tz, Rx, Ry, Rz}
Coordinate transformation
- Camera Coordinate System {tx, ty, tz, Rx, Ry, Rz} -> World Coordinate System {?, ?, ?, ?, ?, ?}
- tx, ty, tz 위치에 Rx, Ry, Rz의 방향의 카메라에 관측되는 물체가 있다 했을 때 World Coordinate System에서는 어떤 값을 갖는가?
- 이러한 값을 알기 위해서는 Coordinate transform을 진행해야 함
- Coordinate transform을 진행하기 위해서는 두 Coordinate System의 Position과 Orientation의 변화를 알야아 함
- Position의 차이는 이동값(translation)으로 표현할 수 있음
- Orientation의 차이는 회전값(rotation)으로 표현할 수 있음
- Coordinate transformation을 하기 위해서는 2개 시스템간의 이동이 필요함 -> Rigid Body Motion
- 수학적으로 Euclidean transformation이라고도 불림
- 우리가 살고 있는 3D 공간은 Euclidean 공간이고 이 안에서 사용하는 좌표표기법은 Cartesian coordinate임
다양한 회전 표현법
Rotation
Euler Angle
- Roll / Pitch / Yaw
- 각각의 축을 의미
- 3D rotation을 표현하기 위해 차례로 변환을 해줘야 함
- 장점
- 이해하기 쉬움
- 단점
- 최적화하기 어려움(최적화를 위해서 미분이 가능해야 함)
- Gimbal Lock
- 3차원 공간에서 오일러 각 회전을 적용할 때, 특정 회전 상황에서 세 축 중 두 축이 겹치는 현상으로 한 축에 대한 자유도 상실(singularity problem)
- pitch가 90도가 되는 지점에서 하나의 위치에서 여러방향으로 미분이 가능함 -> 특정 지점에서 회전의 표현이 자유롭지 않으므로 스무스하게 회전값들을 이어서 할 수 없음
- https://youtu.be/syQnn_xuB8U (6:25~ 6:50)
Axis Angle
- Rotation axis - e
- Rotation angle - theta
- Axis Angle <-> Rotation matrix
- Rodrigues Formula
- 4개의 parameter(벡터를 사용하면 3개의 parameter)로 표현 가능하여 메모리 효율성이 좋음
Quaternion
- 4DOF representation
- w, x, y, z
- Complex number : w
- No singularity
- 쿼터니언의 값만 봐서 어디를 향하는 값인지 바로 알기 어려움
So(3) Rotation matrix
- Special Orthogonal Matrix (3D)
- 3 x 3 matrix
Translation
- 벡터로 표현
- 모든 축들이 동일한 unit을 가져야 함
Transformation
SE(3) Transformation matrix
- Special Euclidean Group (3D)
- Rigid Body motion을 하나의 matrix로 표현
- Rotation(SO(3)) + Translation(tvec) in Homogeneous Coordinates
- 4 x 4 matrix