회전과 로보틱스 / NOTE 02

회전행렬

Rotation Matrix

직교행렬, 방향 코사인과 좌표계 사이의 변환을 정리합니다.

♫ 이 문서 듣기

개념에서 수식으로

먼저 이해할 내용

회전행렬은 한 좌표계에서 표현한 벡터를 다른 좌표계의 성분으로 바꾸는 관계를 행렬로 정리한 것이다. 이 글에서는 먼저 좌표축이 서로 수직이고 길이가 1이라는 조건을 확인한 뒤, 내적과 방향코사인을 이용해 행렬의 의미를 읽는다.

기호를 먼저 읽기

R
좌표계 사이의 회전 관계를 나타내는 행렬
Rᵀ
행과 열을 바꾼 전치행렬
R⁻¹
적용한 변환을 되돌리는 역행렬
I
벡터를 그대로 유지하는 단위행렬
x̂, ŷ, ẑ
각 좌표축 방향의 단위벡터
vᴬ, vᴮ
같은 벡터를 A·B 좌표계의 성분으로 나타낸 값

이 글의 흐름

축의 직교성과 길이를 확인하고, 각 축에 대한 투영으로 행렬 성분을 해석한다. 이어서 행렬 곱으로 좌표 변환을 연결하고, 전치와 역행렬의 관계를 확인한다.

행렬을 보기 전에 좌표축의 조건을 확인한다

이 문서는 회전행렬의 구조에서 시작한다. 이어지는 축의 내적이 0이라는 식은 서로 수직임을, 각 축의 노름이 1이라는 식은 길이를 통일했음을 나타낸다. 방향만 바꾸는 좌표계를 만들기 위해 두 조건을 함께 사용한다.

주제와 표기

Rotation Matrix representation ABR

수식

Orthogonal matrix

x^y^=0
y^z^=0
z^x^=0
|x^|=1
|y^|=1
|z^|=1

전치는 회전을 되돌리는 연산과 연결된다

RᵀR=I는 회전을 적용한 뒤 전치행렬을 적용하면 원래 표현으로 돌아온다는 뜻이다. 따라서 이 조건을 만족하는 회전행렬에서는 Rᵀ와 R⁻¹이 같다. 모든 행렬의 전치가 역행렬인 것은 아니므로, 앞의 직교 조건을 생략하지 않는다.

RTR=I

Transpose = Inverse

RT=R1
원본 도해

여러 좌표계를 거치는 변환을 묶는다

먼저 A 좌표계의 벡터를 B로 옮기고, 그 결과를 다시 C로 옮긴다. 두 식을 대입하면 중간 벡터 대신 두 회전행렬의 곱이 남는다. 벡터를 열로 두는 표현에서는 벡터 가까이에 있는 오른쪽 행렬부터 작용하므로, 식을 읽을 때에도 적용 순서를 구별한다.

Rotation MatrixABR

A three dimensional vector

Aυ=(0AυxAυyAυz)
원본 도해
Bυ=ABRAυ
Cυ=BCRBυ
Cυ=ACRAυ=BCRABRAυ=BCRBυ
ACR=BCRABR
AER=VERAVR
BER=VERBVR
BER=VERAVRBAR=VERBVR=AERBAR

Inner Product Space

내적은 두 방향이 얼마나 나란한지 보여준다

두 벡터의 내적을 각각의 길이로 나누면 크기의 영향을 없애고 방향 사이의 코사인만 남길 수 있다. 방향이 수직이면 코사인이 0이고 내적도 0이다. 분모에 두 벡터의 길이가 있으므로 영벡터에는 이 각도식을 적용하지 않는다.

xy=|x||y|cos[θ]
cos[θ]=xy|x||y|

Representation of orientation

벡터를 기준축의 합으로 표현한다

벡터 u를 세 기저벡터의 배수로 더하면 각 축 방향의 성분을 따로 볼 수 있다. 단위방향의 경우 방향코사인의 제곱합이 1이 된다. 이어지는 전개에서는 벡터의 크기를 분리하고 각 축으로의 투영을 정리하여 방향 성분을 얻는다.

수식
u=u1e1+u2e2+u3e3
a2+b2+c2=cos[α]2+cos[β]2+cos[γ]2=1
수식
|v|=vx2+vy2+vz2
수식
수식
수식
수식
=cos[α]ex+cos[β]ey+cos[γ]ez
=aex+bey+cez
수식

방향코사인으로 회전행렬의 성분을 읽는다

두 좌표계의 축이 이루는 각도를 내적으로 표현하면 행렬의 성분이 된다. 한 열 또는 한 행에 놓인 세 값은 특정 축이 다른 좌표계에서 어떻게 보이는지를 나타낸다. 다만 행·열의 의미는 이 문서에서 정한 변환 방향에 따라 읽어야 하며, 전치된 관계와 혼용하지 않는다.

The coordinate system {A} is rotated by θ relative to the Ar^ direction is called the coordinate system {B}, it is called the rotation matrix ABR.

수식

Rotation Matrix: Direction Cosine Matrix

수식

The coordinate system {A} is rotated by θ relative to theAr^ direction is called the coordinate system {B}, it is called the rotation matrixABR .

수식
수식

Properties of rotation matrix

같은 관계를 반대 방향에서 확인한다

A에 대한 B의 회전과 B에 대한 A의 회전은 서로 역관계이다. 각 좌표계의 축벡터를 나열한 뒤 왕복 변환을 대입하면 단위행렬 관계로 돌아간다. 계산 결과가 같은 벡터로 복원되는지 확인하는 것이 이 구간의 판단 기준이다.

ABR=BAR1=BART

Rotation matrix of coordinate system {B} with respect to coordinate system {A} : ABR

Rotation matrix of coordinate system {A} with respect to coordinate system {B} : BAR

x^A=(AxxAxyAxz);y^A=(AyxAyyAyz);z^A=(AzxAzyAzz);
x^B=(BxxBxyBxz);y^B=(ByxByyByz);z^B=(BzxBzyBzz);
수식
수식
{AP=ABRBPBP=BARAPAP=BARBP=ABRBARAPABRBAR=I
ABR=BAR1=BART

입력과 출력 좌표계를 문장으로 읽는다

마지막 식은 B에서 표현한 점의 성분을 A에서의 성분으로 옮기는 관계이다. 식 왼쪽은 얻고자 하는 표현이고, 오른쪽은 변환행렬과 이미 알고 있는 표현이다. 좌표계 이름을 먼저 읽은 다음 행렬의 각 성분을 확인하면 긴 전개도 목적을 잃지 않고 따라갈 수 있다.

AP=BARBP

Convert the {B} coordinate system component to the {A} coordinate system component
수식
수식

BAR : Transformation Matrix, Rotation matrix of coordinate system {B} relative to coordinate system {A}

정리하면

회전행렬의 숫자는 단순한 계수표가 아니라 좌표축 사이의 방향 관계이다. 행렬의 크기뿐 아니라 입력 벡터의 차원과 변환 방향까지 맞아야 같은 물리적 벡터를 일관되게 표현할 수 있다.