3D 공간에서 회전을 표현하는 방식에는 어떤 것이 있나?

SJ·2024년 11월 4일
1
post-thumbnail

이 포스트는 장형기님의 SLAM 관련 100가지 질문을 참조하여 하나씩 알아보고 정리하기 위해 적어 놓는 것입니다.


3D 공간 회전 표현

1. SO(3) 행렬

Lie군 중 하나인 Special Orthogonal 3 (SO(3)) 군은 3차원 회전 행렬과 이에 닫혀있는 연산들로 구성된 군을 의미하며 3차원 물체의 회전을 표현할 때 사용합니다.

SO(3) 군의 특성

  • Associativity: (R1R2)R3=R1(R2R3)(R1*R2)*R3=R1*(R2*R3)

  • Identity element: RI=IR=RR*I=I*R=R 을 만족하는 3x3 항등행렬 I가 존재한다.

  • Inverse (1/R)R=R(1/R)=I(1/R)*R=R*(1/R)=I을 만족하는 역행렬이 존재한다. 이때 1/R은 RTR^T가 됩니다.

  • Composition: SO(3)군의 합성은 아래와 같이 행렬의 곱셈 연산으로 수행합니다.
    R1R2=R3SO(3)R1*R2 = R3 \in SO(3)

  • Determinant: det(R)=1을 만족합니다.

  • Rotation: P2P^2 공간 상의 점 또는 벡터 x=[xyz]TP2x=[x y z]^T \in P^2 를 다른 방향의 점 또는 벡터 X'로 회전시킬 수 있습니다. X=RxX' = R*x

  • Adjoint: 임의의 회전행렬 R과 R의 접평면에 존재하는 임의의 각속도 w가 주어졌을 때 adjoint 행렬의 성질에 의해 다음과 같은 유용한 공식들이 도출됩니다.

exp((Rw))=Rexp(w)RT=exp(RwRT)exp((Rw)^\wedge) = Rexp(w^\wedge)R^T = exp(Rw^\wedge R^T)

회전 행렬

Rx(ϕ)=(1000cos(ϕ)sin(ϕ)0sin(ϕ)cos(ϕ))R_x(\phi) =\begin{pmatrix} 1& 0& 0 \\0 &cos(\phi)& -sin(\phi)\\0 &sin(\phi) &cos(\phi)\end{pmatrix}
Ry(ψ)=(cos(ψ)0sin(ψ)010sin(ψ)0cos(ψ))R_y(\psi) =\begin{pmatrix} cos(\psi)& 0& sin(\psi) \\0 &1& 0\\-sin(\psi) & 0 &cos(\psi)\end{pmatrix}
Rz(θ)=(cos(θ)sin(θ)0sin(θ)cos(θ)0001)R_z(\theta) =\begin{pmatrix} cos(\theta)& -sin(\theta) & 0 \\sin(\theta) &cos(\theta)& 0\\ 0 & 0 &1\end{pmatrix}

각 축마다 이런식으로 회전행렬을 정의할 수 있습니다. 회전 순서에 따라 결과값이 달라질 수 있기 때문에 꼭 신경써줘야 합니다.

장점과 단점

  • 장점: 직관적인 행렬 곱을 통해 여러 회전 연산을 쉽게 구성할 수 있고 점과 벡터를 회전시키는데 매우 효율적

  • 단점: det(R)=1과 직교성을 유지해야하기 때문에 계산과정에서 수치적 안정성이 중요한 문제로 대두됩니다. 또 필요한 메모리가 크다고 합니다.


2. 쿼터니언(Quaternion)

쿼터니언은 3D 회전을 표현하는 4개의 요소로 이루어진 수학적 구조로, 허수 단위 i,j,k를 기반으로 하는 복소수의 확장 버전입니다. 쿼터니언은 다음과 같은 형태로 표현됩니다.
q=w+xi+yj+zkq = w+xi+yj+zk
q = s + v로 쓰기도 합니다. s는 w 성분에 해당하는 스칼라(scalar)값이고, v는 q의 x,y,z 성분에 해당하는 벡터(vector) 부분입니다.

쿼터니언의 특징

  • 쿼터니언의 허수 성분인 i,j,k는 다음과 같은 특징을 같습니다.
i2=j2=k2=1i^2 = j^2 = k^2 = -1
ij=ji=kjk=kj=iki=ik=jij=-ji=k \\ jk=-kj=i\\ ki=-ik=j
  • 쿼터니언은 곱셈의 교환법칙이 성립되지 않습니다.

  • 쿼터니언은 켤레를 같습니다.

q = s+v의 켤레 쿼터니언은 다음과 같습니다.

qˉ=sv\bar{q} = s -v

쿼터니언의 회전

축 A에 대한 각도 θ\theta 만큼의 회전을 쿼터니언으로 나타내면,

q=cos(θ/2)+Asin(θ/2)q = cos(\theta/2) + Asin(\theta/2)

장점과 단점

  • 장점: 회전 연산을 연속적으로 할 때 발생할 수 있는 문제인 짐벌락(Gimbal Lock)을 방지할 수 있습니다. 쿼터니언 곱셈을 통해 회전 연산을 수행하는 방식이 안정적이며 빠릅니다.

  • 단점: 추상적이어서 해석이 직관적이지 않고, 정규화 필요성 때문에 수치적 오류가 발생할 수 있습니다.


축-각도(Axis-Angle)

회전 각도를 통해 회전을 나타내는 방식입니다.
회전은 단일 축 u\vec{u} 주위에서 특정 각도 θ\theta만큼 회전하는 것으로 표현됩니다.
Rotation = (u\vec{u} , θ\theta)

장점과 단점

  • 장점: 회전의 방향과 크기를 직관적으로 이해할 수 있습니다.
    쿼터니언의 벡터 성분과 밀접하게 연관되기 때문에 쿼터니언으로 쉽게 변환이 가능합니다.
  • 단점: 회전 간의 합성을 직접적으로 수행할 수 없는 단점이 있고 계산 과정에서 비선형 함수가 사용되므로 회전 합성에 비효율적일 수 있습니다.

오늘은 이렇게 3d 공간에서 회전을 나타낼 수 있는 방법들을 알아보았습니다.

profile
student

0개의 댓글