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}

image

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)

image

Axis Angle
  • Rotation axis - e
  • Rotation angle - theta
  • Axis Angle <-> Rotation matrix
    • Rodrigues Formula
  • 4개의 parameter(벡터를 사용하면 3개의 parameter)로 표현 가능하여 메모리 효율성이 좋음

image

Quaternion
  • 4DOF representation
    • w, x, y, z
    • Complex number : w
  • No singularity
  • 쿼터니언의 값만 봐서 어디를 향하는 값인지 바로 알기 어려움

image

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

image

실습 : Eigen을 이용한 Rotation 표현

Eigen matrix initialization

Eigen vector initialization