변환행렬
📌 개요
- 좌표계에서 로봇 시스템에는 여러 좌표계가 존재한다고 배움
- 변환행렬(Transformation Matrix) = 한 좌표계에서 표현된 점·자세를 다른 좌표계 기준으로 옮기는 수학 도구 → 기구학 해석의 수학적 기반
- 반복 출제: 회전행렬의 성질(직교행렬, 행렬식 +1), 동차변환행렬의 구조(4×4, 마지막 행 [0 0 0 1]), 곱셈 순서(비가환), 역행렬 공식
📖 핵심 개념
왜 변환행렬이 필요한가
- 카메라가 "물체가 내 앞 0.5 m에 있다"라고 알려줘도, 로봇 팔은 자신의 베이스 기준 좌표를 알아야 물체를 집을 수 있음
- 즉 "카메라 좌표계의 점 → 베이스 좌표계의 점"으로 번역이 필요
- 두 좌표계의 차이 = 결국 두 가지뿐:
- (1) 방향이 얼마나 돌아가 있는가(회전)
- (2) 원점이 얼마나 떨어져 있는가(평행이동)
- 이 둘을 행렬 하나로 담은 것 = 변환행렬
2차원 회전행렬
- 가장 단순한 경우: 평면에서 점을 원점 기준으로 각도 \theta만큼(반시계 방향이 +) 회전시키는 회전행렬(Rotation Matrix):
점 P = (x, y)를 회전시킨 결과는 행렬 곱 P' = R(\theta)\,P로 얻는다:
- 예) 점 (1, 0)을 90° 회전 → (\cos 90° \cdot 1 - \sin 90° \cdot 0,\ \sin 90° \cdot 1 + \cos 90° \cdot 0) = (0, 1) — x축 위의 점이 y축 위로 옮겨져 직관과 일치
3차원 기본 회전행렬
- 3차원에서는 어느 축을 중심으로 도는지에 따라 세 가지 기본 회전행렬이 있음
- 회전축에 해당하는 좌표는 변하지 않는다는 점을 기억하면 형태를 외우기 쉬움 (예: R_z는 z 성분을 건드리지 않으므로 3행·3열이 (0,0,1))
R_y는 -\sin\theta가 왼쪽 아래에 온다. 세 행렬을 x→y→z 순환 관계로 유도하면 자연스럽게 나오는 결과인데, 시험에서 부호 위치를 묻는 함정으로 자주 쓰인다.
회전행렬의 성질
- 회전행렬 R = 직교행렬(Orthogonal Matrix) → 다음 성질을 가짐 (모두 시험 단골):
- R^\top R = I — 즉 역행렬 = 전치행렬 (R^{-1} = R^\top). 역변환을 위해 복잡한 역행렬 계산이 필요 없다
- 행렬식 \det R = +1 — 회전은 크기·부피를 바꾸지 않고, 좌표계의 손방향(오른손/왼손)도 바꾸지 않는다 (-1이면 거울 반사)
- 각 열벡터(행벡터)는 서로 직교하는 단위벡터다 — 열벡터들이 곧 "회전된 좌표축이 원래 좌표계에서 가리키는 방향"이다
- 회전행렬끼리의 곱은 다시 회전행렬이다 — 단, 곱하는 순서를 바꾸면 결과가 달라진다(교환법칙 불성립)
평행이동과 동차좌표
- 회전 = 행렬 곱셈 P' = RP / 평행이동(Translation) = 벡터 덧셈 P' = P + p
- 연산 형태가 달라 여러 변환을 연달아 적용하면 식이 지저분해짐
- 그래서 좌표에 1을 덧붙인 동차좌표(Homogeneous Coordinates) (x, y, z, 1)^\top을 도입하면, 회전과 평행이동을 하나의 4×4 행렬 곱셈으로 통일 가능
동차변환행렬의 구조
동차변환행렬(Homogeneous Transformation Matrix) T는 회전행렬 R(3×3)과 평행이동 벡터 p(3×1)를 묶은 4×4 행렬이다:
-
좌상단 3×3 = 회전 (자세 정보)
-
우측 3×1 = 평행이동 (위치 정보)
-
마지막 행은 항상 [0\ 0\ 0\ 1] — 구조를 묻는 문제의 핵심 포인트
-
표기법: ^{A}T_{B} = "좌표계 \{B\}에서 표현된 값을 좌표계 \{A\} 기준으로 바꿔주는 변환" (= \{A\}에서 본 \{B\}의 포즈)
- ^{A}P = {}^{A}T_{B}\ {}^{B}P
변환의 합성과 곱셈 순서
- 변환은 행렬 곱으로 연쇄(chain) 할 수 있음
- 월드 \{W\} → 베이스 \{B\} → 툴 \{T\}의 관계를 알면:
-
아래첨자와 위첨자가 도미노처럼 맞물리며 소거됨 (B가 안쪽에서 만나 사라짐)
-
이때 곱셈 순서 규칙이 중요:
-
고정(기준) 좌표계 기준으로 추가 변환 → 기존 변환의 왼쪽에 곱한다 (전곱, pre-multiplication): T' = A \cdot T
-
현재(이동) 좌표계 기준으로 추가 변환 → 기존 변환의 오른쪽에 곱한다 (후곱, post-multiplication): T' = T \cdot A
-
행렬 곱은 교환법칙이 성립하지 않으므로 A \cdot T \neq T \cdot A
-
"어느 좌표계 기준의 변환인가"에 따라 곱하는 위치가 결정됨
동차변환행렬의 역행렬
T = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}의 역변환(반대 방향 번역)은 일반 역행렬 공식 없이 간단히 구해진다:
- 회전 부분은 전치(R^\top)로, 평행이동 부분은 -R^\top p로 바뀜
- ^{A}T_{B}의 역행렬 = ^{B}T_{A}
자세 표현의 확장: 오일러각, 짐벌락, 쿼터니언
-
회전행렬은 9개의 수로 3자유도 자세를 표현하므로 낭비가 있음 → 더 간결한 표현들:
-
오일러각(Euler Angles): 세 번의 기본 회전 각도 조합으로 자세를 표현. 축 순서에 따라 Z-Y-X, Z-Y-Z 등 여러 관례가 있으며, 고정축 기준의 X-Y-Z 순서 표현을 롤-피치-요(RPY) 라 부른다
-
짐벌락(Gimbal Lock): 오일러각의 약점. 가운데 회전(pitch)이 ±90°가 되면 첫 번째 축과 세 번째 축이 겹쳐 자유도 하나를 잃는 현상
-
쿼터니언(Quaternion): 4개의 수 (x, y, z, w)로 자세를 표현. 짐벌락이 없고 자세 보간(interpolation)이 매끄러워 ROS 등 로봇 미들웨어의 표준 자세 표현이다. 직관적이지 않은 것이 단점
📊 다이어그램 · 수식
변환의 연쇄 (chain)
graph LR
W["월드 {W}"] -- "ᵂT_B" --> B["베이스 {B}"]
B -- "ᴮT_T" --> T["툴 {T}"]
W -. "ᵂT_T = ᵂT_B · ᴮT_T" .-> T한눈에 보는 핵심 공식
점의 좌표계 변환 (회전 R + 평행이동 p):
역변환:
🎯 핵심 요약 · 암기 포인트
회전행렬의 행렬식 값은?::+1 (크기 보존, −1이면 거울 반사) 동차변환행렬의 크기와 마지막 행은?::4×4 행렬, 마지막 행은 [0 0 0 1] 동차변환행렬이 하나로 묶어 표현하는 두 가지 변환은?::회전(좌상단 3×3 R)과 평행이동(우측 3×1 p) 변환행렬의 곱셈에서 교환법칙이 성립하는가?::성립하지 않는다 — 곱하는 순서가 바뀌면 결과가 달라진다 현재(이동) 좌표계 기준의 추가 변환은 어느 쪽에 곱하는가?::오른쪽(후곱). 고정 좌표계 기준이면 왼쪽(전곱) 동차변환행렬 T = [R p; 0 1]의 역행렬은?::[Rᵀ −Rᵀp; 0 1] 짐벌락(Gimbal Lock)이란?::오일러각 표현에서 pitch가 ±90°일 때 두 회전축이 겹쳐 자유도 하나를 잃는 현상 쿼터니언으로 자세를 표현할 때의 장점은?::짐벌락이 없고 자세 보간이 매끄럽다 (ROS의 표준 자세 표현, 4개의 수 사용)
✏️ 예상문제
1. 3차원 회전행렬 R의 성질로 옳지 않은 것은?
① 역행렬은 전치행렬과 같다 ② 행렬식 값은 +1이다 ③ 각 열벡터는 서로 직교하는 단위벡터이다 ④ 임의의 두 회전행렬의 곱은 교환법칙이 성립한다
정답 및 해설
정답: ④ 행렬 곱은 일반적으로 교환법칙이 성립하지 않으며 회전도 마찬가지다(x축 90° 후 z축 90° ≠ z축 90° 후 x축 90°). ①②③은 직교행렬인 회전행렬의 기본 성질이다.
2. 동차변환행렬(Homogeneous Transformation Matrix)에 대한 설명으로 옳은 것은?
① 3×3 크기의 행렬이다 ② 회전과 평행이동을 하나의 행렬로 표현한다 ③ 마지막 행은 [1\ 0\ 0\ 0]이다 ④ 평행이동 성분은 좌상단 3×3 블록에 위치한다
정답 및 해설
정답: ② 동차변환행렬은 4×4 크기(① 오답)로, 좌상단 3×3에 회전 R(④ 오답), 우측 3×1에 평행이동 p를 담으며, 마지막 행은 [0\ 0\ 0\ 1](③ 오답)이다.
3. 점 P = (1, 0, 0)을 z축 기준으로 +90° 회전시킨 결과는?
① (0, 1, 0) ② (0, -1, 0) ③ (1, 0, 0) ④ (-1, 0, 0)
정답 및 해설
정답: ① x' = x\cos 90° - y\sin 90° = 1 \cdot 0 - 0 \cdot 1 = 0 y' = x\sin 90° + y\cos 90° = 1 \cdot 1 + 0 \cdot 0 = 1 z' = z = 0 → (0, 1, 0). 오른손 좌표계에서 +90° 회전이면 x축 위의 점이 y축 위로 이동한다.
4. 현재 포즈가 변환행렬 T로 표현될 때, 현재(이동) 좌표계 기준으로 추가 변환 A를 적용한 결과로 옳은 것은?
① A \cdot T ② T \cdot A ③ A \cdot T \cdot A^{-1} ④ T^{-1} \cdot A
정답 및 해설
정답: ② 현재(이동) 좌표계 기준의 변환은 오른쪽에 곱한다(후곱). 고정(기준) 좌표계 기준이라면 왼쪽에 곱한다(A \cdot T, 전곱). 기준 좌표계가 어디냐에 따라 곱하는 위치가 달라진다.
5. 동차변환행렬 T = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}의 역행렬 T^{-1}은?
① \begin{bmatrix} R^\top & -R^\top p \\ 0 & 1 \end{bmatrix} ② \begin{bmatrix} R^\top & p \\ 0 & 1 \end{bmatrix} ③ \begin{bmatrix} R & -p \\ 0 & 1 \end{bmatrix} ④ \begin{bmatrix} -R & -p \\ 0 & 1 \end{bmatrix}
정답 및 해설
정답: ① 회전 부분은 전치 R^\top, 평행이동 부분은 -R^\top p가 된다. ③처럼 단순히 -p만 붙이면 안 되는 이유는, 반대 방향 평행이동을 "역회전된 좌표계"에서 표현해야 하기 때문이다.
🔗 관련 노트
- 좌표계 — 변환의 대상이 되는 기준 체계
- 로봇 기구학 해석 — 링크마다의 변환행렬을 연쇄하여 순기구학 계산
- 로봇 역기구학 해석 — 변환행렬로 주어진 목표 포즈에서 조인트각 역산
- _MOC 모션소프트웨어