회전과 로보틱스 / NOTE 04

회전행렬에서 쿼터니언으로

Matrix → Quaternion

회전행렬 성분과 쿼터니언 성분의 관계 및 유도 과정을 정리합니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

이미 회전행렬을 알고 있다면, 그 안의 정보를 다시 쿼터니언 네 성분으로 정리할 수 있다. 이 글에서는 대각 성분을 더하거나 빼서 각 성분의 제곱을 분리하고, 나머지 성분의 차이로 부호를 정하는 흐름을 다룬다.

기호를 먼저 읽기

r₁₁, r₂₂, r₃₃
회전행렬의 세 대각 성분
q₁ … q₄
복원하려는 쿼터니언 성분
Sign[·]
값의 부호를 구별하는 연산
q₁²+q₂²+q₃²+q₄²
단위 쿼터니언에서는 1이 되는 합

이 글의 흐름

결과식을 먼저 살핀 뒤 단위 길이 조건을 사용하여 대각 성분 조합을 정리한다. 각 조합이 4qᵢ²로 모이는 과정을 확인하면 제곱근과 1/2 계수가 등장하는 이유를 이해할 수 있다.

크기를 구하는 식과 부호를 정하는 식을 나눈다

q₁은 대각 성분의 합으로 구하고, q₂·q₃·q₄는 대각 성분의 차이와 Sign 항을 함께 사용한다. 제곱근은 성분의 크기에 관련되고, Sign은 방향에 관련된다. 따라서 제곱근 부분만 계산해서는 전체 쿼터니언을 결정한 것으로 볼 수 없다.

주제와 표기

Rotation Matri x A B R →Quaternio n B A q ^

q 1 = 1 2 r 11 + r 22 + r 33 + 1
q 2 = − Sign [ r 32 − r 23 ] 2 r 11 − r 22 − r 33 + 1
q 3 = − Sign [ r 13 − r 31 ] 2 r 22 − r 33 − r 11 + 1
q 4 = − Sign [ r 21 − r 12 ] 2 r 33 − r 11 − r 22 + 1

Rotation Matrix B A R → Quaternion B A q ^

수식

1

단위 길이 조건을 이용해 항을 묶는다

먼저 네 성분의 제곱합이 1이라는 조건을 둔다. 다음으로 r₁₁+r₂₂+r₃₃+1에 각 대각 성분의 표현을 대입한다. 같은 종류의 항을 묶고 제곱합을 1로 바꾸면 4q₁²가 남는다.

B A q ^ = ( q 1 q 2 q 3 q 4 )
q 1 2 + q 2 2 + q 3 2 + q 4 2 = 1

2

r 11 + r 22 + r 33 + 1
= ( 2 q 1 2 − 1 + 2 q 2 2 ) + ( 2 q 1 2 − 1 + 2 q 3 2 ) + ( 2 q 1 2 − 1 + 2 q 4 2 ) + 1
= 2 ( − 1 + 2 q 1 2 + q 1 2 + q 2 2 + q 3 2 + q 4 2 ) = 2 ( − 1 + 2 q 1 2 + 1 )
= 4 q 1 2

다른 성분도 같은 방식으로 분리한다

대각 성분의 부호 조합을 바꾸면 q₂², q₃², q₄²를 각각 남길 수 있다. 네 식의 모양을 따로 외우기보다 어떤 대각 성분은 더하고 어떤 성분은 빼는지 비교한다. 마지막 q₄ 전개의 중간에는 a₄라는 표기도 나타나므로, q₄와의 동일성이 별도 정의 없이 확정된 것으로 읽지 않는다.

r 11 − r 22 − r 33 + 1
= ( 2 q 1 2 − 1 + 2 q 2 2 ) − ( 2 q 1 2 − 1 + 2 q 3 2 ) − ( 2 q 1 2 − 1 + 2 q 4 2 ) + 1
= − 2 ( − 1 + q 1 2 − q 2 2 + q 3 2 + q 4 2 ) = − 2 ( − 1 − 2 q 2 2 + q 1 2 + q 2 2 + q 3 2 + q 4 2 ) = − 2 ( − 1 − 2 q 2 2 + 1 )
= 4 q 2 2
− r 11 + r 22 − r 33 + 1
= − ( 2 q 1 2 − 1 + 2 q 2 2 ) + ( 2 q 1 2 − 1 + 2 q 3 2 ) − ( 2 q 1 2 − 1 + 2 q 4 2 ) + 1
= − 2 ( − 1 + q 1 2 + q 2 2 − q 3 2 + q 4 2 ) = − 2 ( − 1 − 2 q 3 2 + q 1 2 + q 2 2 + q 3 2 + q 4 2 ) = − 2 ( − 1 − 2 q 3 2 + 1 )
= 4 q 3 2
− r 11 − r 22 + r 33 + 1
= − ( 2 q 1 2 − 1 + 2 q 2 2 ) − ( 2 q 1 2 − 1 + 2 q 3 2 ) + ( 2 q 1 2 − 1 + 2 q 4 2 ) + 1
= − 2 ( − 1 + q 1 2 + q 2 2 + q 3 2 − q 4 2 ) = − 2 ( − 1 − 2 a 4 2 + q 1 2 + q 2 2 + q 3 2 + q 4 2 ) = − 2 ( − 1 − 2 a 4 2 + 1 )
= 4 q 4 2

3

분리한 제곱을 성분으로 되돌린다

4qᵢ²에서 성분을 얻으면 제곱근 앞에 1/2이 붙는다. 나머지 부호는 처음 제시한 차이와 Sign 항으로 연결된다. 근호 안이 허용 범위에 있는지, 선택한 부호식이 0이 되는지까지 확인해야 실제 계산으로 옮길 수 있다.

q 1 = 1 2 r 11 + r 22 + r 33 + 1
q 2 = − Sign [ r 32 − r 23 ] 2 r 11 − r 22 − r 33 + 1
q 3 = − Sign [ r 13 − r 31 ] 2 r 22 − r 33 − r 11 + 1
q 4 = − Sign [ r 21 − r 12 ] 2 r 33 − r 11 − r 22 + 1

정리하면

대각 성분의 조합은 쿼터니언 성분의 크기를, 비대각 성분의 차이는 부호 선택의 단서를 제공한다. 다만 부호식이 0이 되는 경우까지 모든 회전에서 자동으로 해결된다고 단정하지 않는다.