AEGLOSLAB 로봇공학 전서(全書)

제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$(피치)
01.0e+003.0e-092.8e-091.0e+001.0e+00
605.0e-016.1e-092.7e-093.7e+003.7e+00
801.7e-011.7e-082.8e-091.1e+011.1e+01
891.7e-021.7e-073.1e-091.1e+021.1e+02
89.91.7e-031.7e-063.1e-091.1e+031.1e+03
89.991.7e-041.7e-053.1e-091.1e+041.1e+04
89.99991.7e-061.7e-033.1e-091.1e+061.1e+06
89.9999991.7e-081.8e-013.1e-091.1e+081.1e+08
60 70 80 90 100 101 102 103 104 105 106 107 피치 (°) κ2(E) κ2(E) (1 + sin)/cos
오일러각 속도 행렬 E의 2-노름 조건수(계산값)와 해석식 (1+sinθ)/cosθ. 두 곡선이 겹치며 피치 90°에서 발산한다.

롤·요의 오차는 섭동 크기를 $\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°로 매끄럽게 바꿀 때 행렬에서 추출한 각이다.

80 85 90 95 100 −180 −90 0 90 180 입력 피치 (°), 롤 30°·요 10° 고정 추출한 각 (°) 피치 롤 요
롤 30°·요 10°를 고정하고 입력 피치를 80°에서 100°로 매끄럽게 바꿀 때 회전 행렬에서 추출한 롤·피치·요(계산값). 90°를 지나면 피치가 되돌아오고 롤·요가 180°씩 도약한다.

피치 입력이 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$(없음)
102.0e-152.0e-152.2e-15
306.4e-156.4e-156.2e-15
1002.0e-141.1e-152.1e-14
3005.2e-145.2e-166.5e-14
1,0001.5e-136.7e-162.2e-13
3,0004.6e-131.1e-156.6e-13
10,0001.5e-122.2e-162.2e-12
30,0004.5e-125.6e-166.7e-12
100,0001.5e-111.3e-152.2e-11
101 102 103 104 105 10−17 10−16 10−15 10−14 10−13 10−12 10−11 10−10 회전 행렬 곱의 횟수 직교성 오차(최대 원소) 재직교화 없음 100회마다 재직교화
회전 행렬 곱의 직교성 오차(증분 회전 반복, 계산값). 재직교화가 없으면 곱의 횟수에 거의 비례해 늘고, 100번마다 SVD로 재직교화하면 1e-15 수준에 머문다.

재직교화가 없으면 오차가 곱의 횟수에 거의 비례해 늘어 $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-103ROS(작성 2010-10-07)회전 표현의 우선순위(쿼터니언·회전 행렬·고정축 롤-피치-요·오일러각), 24가지 규약 서술, 요의 정의1.3
ISO 9787ISO로봇의 좌표계와 운동 명칭 (확인 필요: 본문 미열람)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 체크포인트·연구 질문

체크포인트:

  1. 오일러각의 규약이 24가지인 이유(12×2)와 고유 오일러각·테이트-브라이언각의 구분을 설명할 수 있는가.
  2. ZYX 롤-피치-요의 행렬 식과 행렬에서 각을 추출하는 식을 쓸 수 있는가.
  3. 짐벌락에서 롤과 요가 따로 정해지지 않는 이유를 식으로 보일 수 있는가.
  4. 3매개변수 표현이 전역 특이점을 피할 수 없는 이유를 설명할 수 있는가.
  5. 오일러각 속도 행렬 $E$의 행렬식과 조건수를 적고 의미를 말할 수 있는가.
  6. 깨진 회전 행렬을 SVD로 재직교화하는 식과 $\det(UV^\top)$의 역할을 설명할 수 있는가.
  7. 예제의 표에서 섭동 증폭이 $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 규약의 차이, 구면 선형 보간을 정리한다.