제1부 수학적 기초
1.4 회전의 표현 I: 회전행렬·오일러각·짐벌락
1.4.1 이 장에서 배우는 것 / 선수 지식 / 특히 중요한 독자
이 장은 3차원 회전을 나타내는 두 가지 표현 — 회전 행렬과 오일러각 — 의 구조·변환·수치 거동을 다룬다. 회전 행렬은 합성과 벡터 변환이 곱으로 이루어지고 특이점이 없으나 9개 원소에 6개의 직교 조건이 걸려 있어 계산 중 조건이 깨진다. 오일러각은 세 개의 매개변수로 간결하나 특정 자세에서 한 자유도를 잃는 짐벌락이 있다. 두 표현의 한계는 로봇 손목의 특이점, 비행체의 자세 추정, 카메라 짐벌에서 반복해 나타난다. 축-각·쿼터니언은 1.5, 동차변환은 1.6, 리군은 1.7가 다룬다. 다룰 질문은 네 가지다. 오일러각의 규약은 왜 24가지인가, 행렬에서 각을 어떻게 추출하며 어디서 실패하는가, 짐벌락은 수학적으로 무엇이고 오차를 얼마나 증폭하는가, 행렬 곱이 쌓이는 오차를 어떻게 바로잡는가.
배우는 것:
- 회전 행렬 — 기본 회전의 식, $SO(3)$, 직교성 표류와 SVD에 의한 가장 가까운 회전 행렬.
- 오일러각의 규약 — 축 순서 12가지와 고정·현재 축 2가지, 고정축 롤-피치-요(ZYX)의 행렬 식과 추출식.
- 짐벌락 — 정의, $R$이 두 각의 차에만 의존하는 형태, 어느 매개변수화도 전역에서 특이점이 없을 수 없다는 정리.
- 오일러각 속도 — 각속도 행렬 $E$의 행렬식 $\cos\theta$, 조건수 $(1+\sin\theta)/\cos\theta$.
- 풀이 예제 — 섭동 증폭의 측정, 각의 도약, 곱의 오차 표류와 재직교화.
선수 지식: 1.1(SVD), 1.3(프레임·회전 행렬·롤-피치-요의 곱 순서). 표기는 BK-05와 A.2을 따른다.
특히 중요한 독자: 엔지니어·연구자(자세 표현의 선택), 소프트웨어 개발자(각 변환의 특이점 처리), 인증 독자(자세 표현이 안전 기능에 미치는 영향).
출처 방침. 정리는 교과서와 원 논문에 근거하며 서지는 Crossref 응답으로 확인했다(목록은 이 장 끝). 교과서 본문은 직접 읽지 않았고 정리 번호는
(확인 필요)로 둔다. 규약의 24가지와 권장 순서는 REP-103을 읽은 것이다(1.3). 수치는 모두 이 장의 순수 파이썬 구현으로 계산했으며, 행렬 곱과 SVD는 1.1의 구현을 불러와 사용했다.
1.4.2 개념 — 같은 회전, 다른 숫자
3차원 회전의 자유도는 3이다. 표현이 달라지면 숫자의 개수와 성질이 달라진다.
| 표현 | 매개변수 수 | 조건 | 특이점 | 합성 | 상세 |
|---|---|---|---|---|---|
| 회전 행렬 | 9 | $R^\top R=I$, $\det R=+1$ | 없음 | 행렬 곱 | 이 장 |
| 오일러각 | 3 | 없음 | 있음(짐벌락) | 행렬로 변환 후 곱 | 이 장 |
| 축-각 | 3 또는 4 | 단위 축(4성분일 때) | 각 0 근방 | 변환 필요 | 1.5 |
| 쿼터니언 | 4 | 단위 노름 | 없음(이중 덮개) | 쿼터니언 곱 | 1.5 |
어느 표현이 낫다는 순위는 없고 용도가 정한다. 사람이 읽고 입력하는 값은 오일러각, 합성·변환 계산은 회전 행렬이나 쿼터니언이 유리하다. REP-103은 회전 표현의 우선순위를 쿼터니언, 회전 행렬, 고정축 롤-피치-요, 오일러각 순으로 두고 오일러각을 24가지 규약 때문에 일반적으로 권장하지 않는다고 서술한다(1.3).
1.4.3 원리
1.4.3.1 회전 행렬
축 둘레의 기본 회전은 다음과 같다.
$$R_x(\phi)=\begin{bmatrix}1&0&0\\0&\cos\phi&-\sin\phi\\0&\sin\phi&\cos\phi\end{bmatrix},\quad R_y(\theta)=\begin{bmatrix}\cos\theta&0&\sin\theta\\0&1&0\\-\sin\theta&0&\cos\theta\end{bmatrix},\quad R_z(\psi)=\begin{bmatrix}\cos\psi&-\sin\psi&0\\\sin\psi&\cos\psi&0\\0&0&1\end{bmatrix}$$
임의의 회전은 $SO(3)$의 원소 $R$이고 열은 회전한 프레임의 축이다(1.3). 합성은 곱이며 벡터 변환도 곱이다. 단점은 중복이다. 9개의 수가 3자유도를 나타내므로 반올림 오차가 쌓이면 $R^\top R=I$와 $\det R=1$이 깨져 $R$이 회전 행렬이 아니게 된다(아래 예제).
재직교화. 깨진 $R$을 가장 가까운 회전 행렬로 되돌리려면 $R=U\Sigma V^\top$(1.1)의 특이값을 1로 바꾼다.
$$R_{\mathrm{near}}=U\,\mathrm{diag}\bigl(1,\,1,\,\det(UV^\top)\bigr)\,V^\top$$
이 행렬은 프로베니우스 노름에서 $R$에 가장 가까운 회전 행렬이다(직교 프로크루스테스 문제, Schönemann 1966; 회전 추정에서는 Wahba 1965, Kabsch 1976). 마지막 인자 $\det(UV^\top)$는 반사($\det=-1$)가 되지 않도록 한다.
1.4.3.2 오일러각의 규약
오일러각은 세 번의 축 둘레 회전의 각이다. 규약의 수는 두 선택의 곱이다.
- 축 순서. 연속한 두 회전의 축은 달라야 하므로 $3\times2\times2=12$가지이다. 같은 축으로 시작해 끝나는 6가지(예: $z$-$x$-$z$)를 고유 오일러각, 세 축이 모두 다른 6가지(예: $x$-$y$-$z$)를 테이트-브라이언각(롤-피치-요가 이에 속한다)이라 한다.
- 축의 기준. 매 회전의 축을 현재(회전한) 프레임의 축으로 잡을 수도, 처음(고정) 프레임의 축으로 잡을 수도 있다(1.3.3.5). 두 해석은 곱의 순서가 뒤집힌 것과 같다.
따라서 $12\times2=24$가지이며 REP-103이 서술한 24가지 유효한 규약과 일치한다. 이 장은 고정축 롤-피치-요(ZYX)를 사용한다.
$$R=R_z(\psi)\,R_y(\theta)\,R_x(\phi)=\begin{bmatrix}c_\psi c_\theta & c_\psi s_\theta s_\phi-s_\psi c_\phi & c_\psi s_\theta c_\phi+s_\psi s_\phi\\ s_\psi c_\theta & s_\psi s_\theta s_\phi+c_\psi c_\phi & s_\psi s_\theta c_\phi-c_\psi s_\phi\\ -s_\theta & c_\theta s_\phi & c_\theta c_\phi\end{bmatrix}$$
여기서 $c_\phi=\cos\phi$, $s_\phi=\sin\phi$ 등이다. $\phi$는 롤, $\theta$는 피치, $\psi$는 요이다.
1.4.3.3 행렬에서 각으로
위 행렬의 원소에서 각을 추출하면 다음과 같다.
$$\theta=\operatorname{atan2}\!\bigl(-R_{31},\ \sqrt{R_{11}^2+R_{21}^2}\bigr),\qquad \phi=\operatorname{atan2}(R_{32},R_{33}),\qquad \psi=\operatorname{atan2}(R_{21},R_{11})$$
$\theta$에 $\arcsin$ 대신 $\operatorname{atan2}$를 사용하면 $\lvert\theta\rvert$가 $90^\circ$ 근방에서도 정밀도가 유지된다. 추출은 $\cos\theta\ne0$일 때에만 롤과 요를 정한다. $\cos\theta=0$이면 $R_{11}=R_{21}=R_{32}=R_{33}=0$이어서 $\operatorname{atan2}(0,0)$이 정의되지 않는다.
1.4.3.4 짐벌락
짐벌락은 가운데 회전이 첫째와 셋째 회전의 축을 일치시켜 한 자유도가 사라지는 자세이다. ZYX에서 $\theta=90^\circ$이면 $R$은
$$R\big|_{\theta=90^\circ}=\begin{bmatrix}0&\sin(\phi-\psi)&\cos(\phi-\psi)\\0&\cos(\phi-\psi)&-\sin(\phi-\psi)\\-1&0&0\end{bmatrix}$$
로 롤과 요의 차 $\phi-\psi$에만 의존한다. 같은 자세에 대응하는 $(\phi,\psi)$가 무수히 많다. 매끄러운 회전이 이 자세를 지나면 추출한 각이 도약한다. 이는 표현의 결함이 아니라 위상의 결과이다. 3차원 회전군 $SO(3)$를 세 개의 매개변수로 전역에서 특이점 없이 매개변수화하는 것은 불가능하며, 3매개변수 표현은 반드시 특이점을 가진다(Stuelpnagel, 1964). 규약을 바꾸면 특이점의 위치가 옮겨질 뿐이다. 테이트-브라이언각은 가운데 각이 $\pm90^\circ$일 때, 고유 오일러각은 가운데 각이 $0^\circ$ 또는 $180^\circ$일 때 특이하다.
1.4.3.5 오일러각 속도와 각속도
각속도 $\omega$와 오일러각 속도 $(\dot\phi,\dot\theta,\dot\psi)$의 관계는 ZYX에서 고정 프레임 기준으로
$$\omega=E\begin{bmatrix}\dot\phi\\\dot\theta\\\dot\psi\end{bmatrix},\qquad E=\begin{bmatrix}c_\psi c_\theta&-s_\psi&0\\s_\psi c_\theta&c_\psi&0\\-s_\theta&0&1\end{bmatrix}$$
이다(열은 각각 $R_zR_y\hat x$, $R_z\hat y$, $\hat z$). $\det E=\cos\theta$이므로 $\theta=\pm90^\circ$에서 $E$가 특이하여 주어진 $\omega$에 대응하는 각속도 $(\dot\phi,\dot\theta,\dot\psi)$가 존재하지 않거나 무한이 된다. $E^\top E$의 고유값이 $1+\sin\theta$, $1$, $1-\sin\theta$이므로 2-노름 조건수는
$$\kappa_2(E)=\sqrt{\frac{1+\sin\theta}{1-\sin\theta}}=\frac{1+\sin\theta}{\cos\theta}$$
이며 $\theta\to90^\circ$에서 $2/\cos\theta$로 발산한다. 이 구조는 매니퓰레이터의 손목 특이점(구형 손목의 가운데 관절이 0°일 때 첫째·셋째 관절 축의 일치, 2.5)과 같다. 자세 표현의 선택은 추정·제어 장에서도 나타난다(9.4).
1.4.4 알고리즘
ZYX 변환과 재직교화
행렬 → 각:
피치 ← atan2(−R[2][0], √(R[0][0]² + R[1][0]²))
롤 ← atan2(R[2][1], R[2][2]) (cos 피치 ≈ 0이면 정의되지 않음)
요 ← atan2(R[1][0], R[0][0])
각 → 행렬: R ← Rz(요) Ry(피치) Rx(롤) (위의 식)
재직교화(R이 회전 행렬에서 벗어났을 때):
R = U Σ Vᵀ (SVD)
d ← det(U Vᵀ)
R ← U diag(1, 1, d) Vᵀ
특이점에서의 처리는 응용에 따라 다르다. 롤을 0으로 고정하고 요에 합쳐 넣거나, 특이점 근방에서는 쿼터니언을 내부 표현으로 사용하고(1.5) 각은 출력 표시에만 사용한다.
1.4.5 풀이 예제 — 섭동 증폭·각의 도약·오차 표류
ZYX 변환을 구현해 짐벌락 근방의 오차 증폭, 매끄러운 경로에서 추출한 각의 도약, 회전 행렬 곱의 직교성 표류를 계산한다. 결론부터 적으면 다음과 같다. ① 행렬 원소에 $10^{-9}$의 섭동이 있을 때 롤·요의 오차는 $\cos\theta$에 반비례해 커지며 $\theta=89.999999^\circ$에서 0.18 rad에 이른다. ② 각속도 행렬의 조건수는 $(1+\sin\theta)/\cos\theta$와 일치한다. ③ 피치 $90^\circ$에서 서로 다른 롤·요의 세 조합이 같은 행렬을 준다. ④ 작은 회전을 $10^5$번 곱하면 직교성 오차가 $1.5\times10^{-11}$로 늘고 100번마다 재직교화하면 $10^{-15}$ 수준에 머문다.
구현. zyx(각→행렬), to_zyx(행렬→각), rate_map(각속도 행렬), nearest_rotation(SVD). 파이썬 표준 라이브러리와 1.1의 SVD
| 항목 | 값 |
|---|---|
| 입력 1 | 롤 30°, 요 10°, 피치를 0°~89.999999°로 바꾼 자세. 행렬 원소에 표준편차 $10^{-9}$의 정규 난수(시드 3) 200회 |
| 입력 2 | 롤 30°·요 10° 고정, 입력 피치 80°~100° |
| 입력 3 | 증분 회전 $R_z(0.23^\circ)R_y(0.17^\circ)R_x(0.31^\circ)$를 $10^5$번 곱함 |
import math
def zyx(phi, th, psi):
"""R = Rz(psi) Ry(th) Rx(phi): 고정축 롤-피치-요"""
c1, s1 = math.cos(phi), math.sin(phi)
c2, s2 = math.cos(th), math.sin(th)
c3, s3 = math.cos(psi), math.sin(psi)
r0 = [c3 * c2, c3 * s2 * s1 - s3 * c1,
c3 * s2 * c1 + s3 * s1]
r1 = [s3 * c2, s3 * s2 * s1 + c3 * c1,
s3 * s2 * c1 - c3 * s1]
return [r0, r1, [-s2, c2 * s1, c2 * c1]]
def to_zyx(R):
"""회전 행렬 → (롤, 피치, 요). cos(피치) = 0이면 특이"""
th = math.atan2(-R[2][0], math.hypot(R[0][0], R[1][0]))
ph = math.atan2(R[2][1], R[2][2])
return ph, th, math.atan2(R[1][0], R[0][0])
def rate_map(th, psi):
"""오일러각 속도 → 각속도: w = E (롤', 피치', 요')"""
c, s = math.cos(psi), math.sin(psi)
return [[c * math.cos(th), -s, 0.0],
[s * math.cos(th), c, 0.0],
[-math.sin(th), 0.0, 1.0]]
def det3(M):
(a, b, c), (d, e, f), (g, h, i) = M
return (a * (e * i - f * h) - b * (d * i - f * g)
+ c * (d * h - e * g))
def nearest_rotation(R):
"""프로베니우스 노름에서 R에 가장 가까운 회전 행렬"""
U, s, V = svd(R)
d = det3(matmul(U, transpose(V)))
D = [[1.0, 0, 0], [0, 1.0, 0], [0, 0, d]]
return matmul(matmul(U, D), transpose(V))
def orth_err(R):
"""RᵀR − I의 최대 절대 원소"""
G = matmul(transpose(R), R)
return max(abs(G[i][j] - (i == j)) for i in range(3)
for j in range(3))
① 규약의 수와 변환의 정합.
| 항목 | 값 |
|---|---|
| 인접한 축이 다른 축 순서의 수 | 12 (같은 축으로 끝나는 고유 오일러 6 + 서로 다른 세 축 6) |
| 고정축·현재축을 구분한 규약의 수 | 24 |
| ZYX 왕복 변환 오차(네 자세, rad) | 0.0e+00 |
| $R^\top R-I$, $\det R-1$ | 4.2e-17, 2.2e-16 |
② 짐벌락 근방의 오차 증폭과 각속도 행렬의 조건수.
| 피치 (°) | $\cos$(피치) | 행렬 원소 섭동 $10^{-9}$에서 롤·요 오차 최대 (rad) | 피치 오차 최대 (rad) | $\kappa_2(E)$ | $(1+\sin)/\cos$(피치) |
|---|---|---|---|---|---|
| 0 | 1.0e+00 | 3.0e-09 | 2.8e-09 | 1.0e+00 | 1.0e+00 |
| 60 | 5.0e-01 | 6.1e-09 | 2.7e-09 | 3.7e+00 | 3.7e+00 |
| 80 | 1.7e-01 | 1.7e-08 | 2.8e-09 | 1.1e+01 | 1.1e+01 |
| 89 | 1.7e-02 | 1.7e-07 | 3.1e-09 | 1.1e+02 | 1.1e+02 |
| 89.9 | 1.7e-03 | 1.7e-06 | 3.1e-09 | 1.1e+03 | 1.1e+03 |
| 89.99 | 1.7e-04 | 1.7e-05 | 3.1e-09 | 1.1e+04 | 1.1e+04 |
| 89.9999 | 1.7e-06 | 1.7e-03 | 3.1e-09 | 1.1e+06 | 1.1e+06 |
| 89.999999 | 1.7e-08 | 1.8e-01 | 3.1e-09 | 1.1e+08 | 1.1e+08 |
롤·요의 오차는 섭동 크기를 $\cos\theta$로 나눈 값의 약 3배(200회 시행의 최대)이며 피치의 오차는 $\theta$와 무관하게 $3\times10^{-9}$이다. 각속도 행렬의 조건수는 해석식 $(1+\sin\theta)/\cos\theta$와 표의 모든 행에서 같다. $\theta=89.999999^\circ$에서 $10^{-9}$의 입력 오차가 0.18 rad(약 10°)의 롤·요 오차가 된다.
③ 같은 행렬을 주는 서로 다른 각.
| 피치 | 요 | 롤 | 롤·요가 따로 정해지는가 |
|---|---|---|---|
| 90° | 10° | 30° | 롤−요 = 20°, $R_{01}=+0.3420$ |
| 90° | 30° | 50° | 롤−요 = 20°, $R_{01}=+0.3420$ |
| 90° | 20° | 40° | 롤−요 = 20°, $R_{01}=+0.3420$ |
| 60° | 10° | 30° | 롤−요 = 20°, $R_{01}=+0.2761$ |
| 60° | 30° | 50° | 롤−요 = 20°, $R_{01}=+0.2531$ |
| 60° | 20° | 40° | 롤−요 = 20°, $R_{01}=+0.2611$ |
피치 90°에서는 롤−요가 같으면 $R$의 원소가 같다($R_{01}=\sin 20^\circ=0.3420$). 피치 60°에서는 같은 차이에서도 $R_{01}$이 다르다. 아래 그림은 롤 30°·요 10°로 고정한 채 입력 피치를 80°에서 100°로 매끄럽게 바꿀 때 행렬에서 추출한 각이다.
피치 입력이 90°를 지나면 추출한 피치는 $180^\circ-\theta$로 되돌아오고 롤은 $30^\circ$에서 $-150^\circ$로, 요는 $10^\circ$에서 $-170^\circ$로 $180^\circ$씩 도약한다. 행렬은 매끄럽게 변하며 각의 표현만 불연속이다.
④ 회전 행렬 곱의 직교성 표류.
| 곱의 횟수 | 재직교화 없음 $\max\lvert R^\top R-I\rvert$ | 100회마다 재직교화 | $\lvert\det R-1\rvert$(없음) |
|---|---|---|---|
| 10 | 2.0e-15 | 2.0e-15 | 2.2e-15 |
| 30 | 6.4e-15 | 6.4e-15 | 6.2e-15 |
| 100 | 2.0e-14 | 1.1e-15 | 2.1e-14 |
| 300 | 5.2e-14 | 5.2e-16 | 6.5e-14 |
| 1,000 | 1.5e-13 | 6.7e-16 | 2.2e-13 |
| 3,000 | 4.6e-13 | 1.1e-15 | 6.6e-13 |
| 10,000 | 1.5e-12 | 2.2e-16 | 2.2e-12 |
| 30,000 | 4.5e-12 | 5.6e-16 | 6.7e-12 |
| 100,000 | 1.5e-11 | 1.3e-15 | 2.2e-11 |
재직교화가 없으면 오차가 곱의 횟수에 거의 비례해 늘어 $10^5$번에서 $1.5\times10^{-11}$이고 $\lvert\det R-1\rvert$는 $2.2\times10^{-11}$이다. 100번마다 SVD로 재직교화하면 오차가 $1.3\times10^{-15}$ 이하로 유지된다. 이 증가율은 고정 증분을 반복한 이 장의 입력에 대한 것이며 일반 법칙으로 주장하지 않는다.
한계. 구현은 ZYX 하나이며 24가지 규약 전체를 구현하지 않았다. 섭동은 가우시안 잡음 모델이며 실제 센서의 오차 분포가 아니다. 재직교화의 주기(100회)는 예시이다. 쿼터니언의 정규화 비용과의 비교는 1.5이 다룬다.
견해: 이 책은 자세를 내부에서 회전 행렬 또는 쿼터니언으로 저장하고 오일러각은 입출력(설정·표시)에만 사용하는 것을 기본으로 둔다고 본다. 근거는 위 예제에서 오일러각의 추출이 피치 ±90° 근방에서 입력 오차를 $1/\cos\theta$배로 키우고 매끄러운 회전에서 각이 도약하며, 행렬 곱의 오차는 주기적 재직교화로 억제된다는 점이다. 오일러각을 내부 상태로 사용한다면 작동 범위가 특이점에서 충분히 먼지 설계 단계에서 보장해야 한다.
1.4.6 설계 트레이드오프 — 자세 표현의 선택
자료에서 확인되는 선택지는 세 가지다.
- ① 회전 행렬. 특이점이 없고 합성·벡터 변환이 곱이다. 9개 원소의 저장과 재직교화가 필요하다.
- ② 오일러각(ZYX 등). 3개 값으로 사람이 읽기 쉽고 설정에 알맞다. 특이점이 있고 규약이 24가지이며 합성은 행렬을 거쳐야 한다.
- ③ 쿼터니언. 4개 값, 특이점이 없고 합성이 가볍다(1.5). 이중 덮개(부호 모호성)와 규약(성분 순서·해밀턴 대 JPL)이 있다.
| 방식 | 장점 | 한계 | 알맞은 경우 |
|---|---|---|---|
| ① 회전 행렬 | 특이점 없음, 곱셈 | 저장 9, 재직교화 | 기구학·변환 계산 |
| ② 오일러각 | 읽기·입력 | 특이점, 24가지 규약 | 사용자 인터페이스, 설정 |
| ③ 쿼터니언 | 가볍고 특이점 없음 | 부호·규약 | 자세 추정·보간 |
견해: 표현은 계산이 아니라 경계(입출력·통신)에서 고른다고 본다. 근거는 REP-103의 우선순위와 이 장의 측정(특이점 근방의 $1/\cos\theta$ 증폭)이 같은 방향이라는 점이다. 경계에서는 규약(축 순서·고정 대 현재 축·단위)을 문서에 명시한다.
1.4.7 응용 축 비교
| 응용 축 | 자세 표현이 부딪히는 문제 | 요구 | 관련 장 |
|---|---|---|---|
| 산업·제조 | 구형 손목의 특이점, 티치 펜던트의 오일러각 입력 | 특이점 회피, 규약 명시 | 2.5 |
| 물류·이동 | 평면 이동은 요 하나(1자유도) | 단순성 | 2.15 |
| 도로 주행 | 롤·피치가 작아 특이점에서 멂 | 규약 일관성 | 1.3 |
| 서비스 | 카메라·센서 자세 | 광학 프레임 규약 | 1.3 |
| 의료·헬스케어 | 추적기·영상 정합의 회전 | 정밀도, 재직교화 | 1.6 |
| 휴머노이드·범용 | 부유 기저의 큰 자세 변화 | 특이점 없는 표현 | 1.5 |
| 필드 | 비행체·수중체의 피치 ±90° | 쿼터니언 | 1.5 |
| 국방·안보 | 비행체 자세 | 쿼터니언, 규약 | 1.5 |
이 표는 이 책의 정리이며 장별 요구는 다르다.
1.4.8 관련 규격·프로토콜
| 문서 | 발행 | 무엇을 정하나 | 상세 장 |
|---|---|---|---|
| REP-103 | ROS(작성 2010-10-07) | 회전 표현의 우선순위(쿼터니언·회전 행렬·고정축 롤-피치-요·오일러각), 24가지 규약 서술, 요의 정의 | 1.3 |
| ISO 9787 | ISO | 로봇의 좌표계와 운동 명칭 (확인 필요: 본문 미열람) | 27.5 |
| 수학 표기·기호표 | 이 책 | 회전·롤-피치-요의 표기 | A.2 |
1.4.9 관련 규제·인증 요구와의 연결
직접 적용되는 규제는 없다. 자세 표현의 특이점은 안전 기능의 기준(방위 한계·속도 감시)에서 입력 오차를 증폭하므로 시험 항목이 될 수 있다. 산업 로봇의 안전 표준은 27.10, 안전 관련 소프트웨어는 26.20이 다룬다.
1.4.10 한계·유의점·미해결
- 구현의 범위. ZYX 하나의 규약과 소규모 입력이다. 나머지 23가지 규약과 체계적 특이점 지도는 다루지 않았다.
- 섭동 모델. 가우시안 잡음 모델이며 센서 오차를 대표하지 않는다. 표의 증폭 계수(약 3)는 200회 시행의 최대이다.
- 정리의 출처. Stuelpnagel 정리의 정확한 가정은 확인하지 않았다
(확인 필요). 서지는 Crossref로 확인했다. - 미해결. 재직교화의 최적 주기와 비용은 자세 추정 장에서 다룬다(9.4).
1.4.11 체크포인트·연구 질문
체크포인트:
- 오일러각의 규약이 24가지인 이유(12×2)와 고유 오일러각·테이트-브라이언각의 구분을 설명할 수 있는가.
- ZYX 롤-피치-요의 행렬 식과 행렬에서 각을 추출하는 식을 쓸 수 있는가.
- 짐벌락에서 롤과 요가 따로 정해지지 않는 이유를 식으로 보일 수 있는가.
- 3매개변수 표현이 전역 특이점을 피할 수 없는 이유를 설명할 수 있는가.
- 오일러각 속도 행렬 $E$의 행렬식과 조건수를 적고 의미를 말할 수 있는가.
- 깨진 회전 행렬을 SVD로 재직교화하는 식과 $\det(UV^\top)$의 역할을 설명할 수 있는가.
- 예제의 표에서 섭동 증폭이 $1/\cos\theta$에 비례하는 것을 읽을 수 있는가.
연구 질문(47.12에 수록한다):
- 실제 로봇 손목과 짐벌의 작동 범위에서 특이점까지의 여유(피치 각)는 얼마이며 어떤 시험으로 보장하는가.
- 자세 추정 필터에서 재직교화 주기와 비용의 절충은 어디에서 정해지는가(9.4).
- 24가지 규약 가운데 로봇 제조사의 티치 펜던트가 사용하는 규약은 어떤 분포인가
(확인 필요).
1차 출처
- P. H. Schönemann, 「A generalized solution of the orthogonal Procrustes problem」, Psychometrika 31(1), 1966, 1–10.
- G. Wahba, 「A least squares estimate of satellite attitude」, SIAM Review 7(3), 1965, 409.
- W. Kabsch, 「A solution for the best rotation to relate two sets of vectors」, Acta Crystallographica Section A 32(5), 1976, 922–923.
- J. Stuelpnagel, 「On the parametrization of the three-dimensional rotation group」, SIAM Review 6(4), 1964, 422–430.
- REP-103 「Standard Units of Measure and Coordinate Conventions」,
ros-infrastructure/rep(조회 2026-11-03). - K. M. Lynch, F. C. Park, 『Modern Robotics』, Cambridge University Press, 2017
(확인 필요: 장 번호). - J. B. Kuipers, 『Quaternions and Rotation Sequences』, Princeton University Press, 1999
(확인 필요: 장 번호). - 서지 확인 경로: Crossref REST API(
api.crossref.org/works, 조회 2026-11-03).
다음 장. 1.5은 회전의 표현 II로, 축-각·로드리게스 공식·쿼터니언을 다룬다. 특이점이 없는 4성분 표현의 곱·켤레·회전 적용, 해밀턴 규약과 JPL 규약의 차이, 구면 선형 보간을 정리한다.