AEGLOSLAB 로봇공학 전서(全書)

제1부 수학적 기초

1.6 동차변환과 SE(3)

1.6.1 이 장에서 배우는 것 / 선수 지식 / 특히 중요한 독자

이 장은 강체의 위치와 자세를 하나의 $4\times4$ 행렬로 묶는 동차변환과 그 군 $SE(3)$를 다룬다. 앞의 두 장(1.4·1.5)이 회전을 나타내는 방법을, 1.3이 프레임 사이 변환의 합성 규칙을 정리했다면, 이 장은 위치를 더한 강체 변환의 구조·연산·수치와, 두 점집합 사이의 강체 변환을 추정하는 SVD 방법을 다룬다. 기구학 연쇄, 손-눈 보정, 점군 정합이 모두 이 구조 위에 있다. 리군으로서의 성질(지수 사상)은 1.7, 수반 표현은 1.10이 다룬다. 다룰 질문은 네 가지다. 동차 좌표는 무엇을 가능하게 하는가, 점과 자유 벡터는 어떻게 다르게 변환되는가, 변환의 합성과 역은 구조를 이용해 어떻게 싸고 정확하게 계산하는가, 대응하는 점집합에서 강체 변환을 어떻게 구하며 잡음에 얼마나 민감한가.

배우는 것:

  • 동차변환과 $SE(3)$ — $T=\begin{bmatrix}R&p\\0&1\end{bmatrix}$, 군의 성질, 6자유도.
  • 점과 벡터 — 마지막 성분 1과 0, 이동이 적용되는 대상.
  • 합성·역의 구조 이용 — 36회 곱셈 대 64회, 일반 역행렬을 사용하지 않는 이유.
  • 점집합 정합 — 중심화, 교차공분산, SVD, 반사 보정 $\det(VU^\top)$, 평면 분포의 처리.
  • 풀이 예제 — 구조 검증, 잡음 없는 복원, 잡음 크기와 점 수에 따른 오차의 $N^{-1/2}$ 감소.

선수 지식: 1.1(SVD), 1.3(프레임 합성), 1.4·1.5(회전 표현). 표기는 BK-05와 A.2을 따른다.

특히 중요한 독자: 엔지니어·연구자(기구학·보정·정합), 소프트웨어 개발자(변환 연산의 구현), 의료·측정 독자(정합 오차의 해석).

출처 방침. 정리는 교과서와 원 논문에 근거하며 서지는 Crossref 응답으로 확인했다(목록은 이 장 끝). ROS 2의 geometry_msgs/Transform과 Pose 정의는 ros2/common_interfaces의 소스 파일(브랜치 rolling, 조회 2026-11-03)을 읽었다. 교과서 본문은 읽지 않았고 정리 번호는 (확인 필요)로 둔다. 수치는 모두 이 장의 순수 파이썬 구현으로 계산했으며 SVD·행렬 곱은 1.1, 회전 생성은 1.4의 구현을 불러와 사용했다.

1.6.2 개념 — 이동을 곱으로

3차원 점의 회전은 행렬 곱 $Rp$이지만 이동은 덧셈 $p+t$이다. 두 연산을 하나의 선형 연산으로 묶으면 연쇄 변환이 행렬 곱 하나가 된다. 점 $p$ 뒤에 성분 1을 붙인 동차 좌표 $\tilde p=(p,1)$를 두면

$$\begin{bmatrix}R&t\\0&1\end{bmatrix}\begin{bmatrix}p\\1\end{bmatrix}=\begin{bmatrix}Rp+t\\1\end{bmatrix}$$

이다. 이 묶음이 가능한 이유는 이동이 선형이 아니라 아핀 변환이기 때문이며, 한 차원을 늘려 선형으로 만든 것이다. 같은 형식이 카메라의 사영 변환과 유사 변환(크기 변화)으로 확장된다(6.21).

연산3차원 표현동차 표현합성
회전$Rp$$\begin{bmatrix}R&0\\0&1\end{bmatrix}$곱
이동$p+t$$\begin{bmatrix}I&t\\0&1\end{bmatrix}$곱
강체 변환$Rp+t$$\begin{bmatrix}R&t\\0&1\end{bmatrix}$곱

1.6.3 원리

1.6.3.1 동차변환과 $SE(3)$

특수 유클리드군 $SE(3)$는 회전 $R\in SO(3)$과 이동 $p\in\mathbb R^3$의 쌍으로 이루어진 강체 변환의 집합이다.

$$SE(3)=\left\{T=\begin{bmatrix}R&p\\0&1\end{bmatrix}\ :\ R\in SO(3),\ p\in\mathbb R^3\right\}$$

곱에 대해 닫혀 있고(합성), 단위 원소 $I_4$와 역원소를 가지며(역변환), 결합법칙이 성립하나 교환되지 않는다($T_1T_2\ne T_2T_1$). 매개변수가 6개(회전 3, 이동 3)인 매끈한 다양체이므로 6차원 리군이다(1.7). 이 책은 ${}^{A}T_{B}$를 프레임 $B$를 $A$에서 본 변환으로 적는다(1.3).

아래 그림은 구조를 나타낸다.

자세 R 3×3 위치 p 3×1 0 0 0 1 T = 점 (p, 1): 이동이 적용 벡터 (v, 0): 이동 없음 합성 R = R₁R₂ p = R₁p₂ + p₁ 역 R → Rᵀ p → −Rᵀp
4×4 동차변환 T의 블록 구조. 왼쪽 위 3×3은 자세 R, 오른쪽 위 3×1은 위치 p, 아래 행은 0 0 0 1이며 점은 마지막 성분 1, 자유 벡터는 0이다.

1.6.3.2 점과 자유 벡터

프레임 $B$의 점 ${}^{B}p$를 $A$로 옮기는 식은 ${}^{A}\tilde p={}^{A}T_{B}\,{}^{B}\tilde p$이다. 점 사이의 차이 벡터 $v=p_1-p_2$는 위치와 무관한 자유 벡터이므로 $(v,0)$으로 적고, 이 경우 이동이 적용되지 않고 회전만 적용된다.

$$\begin{bmatrix}R&p\\0&1\end{bmatrix}\begin{bmatrix}v\\0\end{bmatrix}=\begin{bmatrix}Rv\\0\end{bmatrix}$$

속도·힘·방향 벡터처럼 위치가 없는 양은 자유 벡터이므로 같은 $T$에서 회전만 받는다. 점과 벡터를 구별하지 않고 $T$를 곱하면 방향 벡터에 이동을 더하는 오류가 생긴다(아래 예제).

1.6.3.3 합성·역과 수치

구조를 이용하면 합성은 $(R_1R_2,\ R_1p_2+p_1)$이고 곱셈은 $27+9=36$회이다(일반 $4\times4$ 곱은 $4^3=64$회). 역은 $(R^\top,\ -R^\top p)$이며 일반 역행렬 알고리즘(예: LU)을 사용하지 않는다. 이유는 세 가지다. ① 비용이 전치와 $3\times3$ 곱 하나이다. ② 결과가 구조(직교 블록, 마지막 행 $0\ 0\ 0\ 1$)를 정확히 가진다. ③ 수치 오차가 성분에 균일하게 분포한다. 변환을 거듭 곱하면 회전 블록의 직교성이 깨지므로 주기적으로 재직교화한다(1.4). 기구학 연쇄가 길면 오차가 누적된다(2.3·2.4).

1.6.3.4 유사 변환과 사영 변환

회전 블록에 배율 $s$를 곱한 $\begin{bmatrix}sR&p\\0&1\end{bmatrix}$는 유사 변환(7자유도, $Sim(3)$)이며 단안 카메라의 크기 불확정성이나 서로 다른 단위의 점집합 정합에 사용한다. 마지막 행이 $0\ 0\ 0\ 1$이 아닌 일반 $4\times4$ 행렬은 사영 변환이고 카메라 모델에서 나타난다(6.21). 이 장은 강체 변환만 다룬다.

1.6.3.5 대응 점집합의 강체 정합

대응하는 점의 쌍 $\{(p_i,q_i)\}_{i=1}^N$에서 $q_i\approx Rp_i+t$인 $R$, $t$를 구하는 문제

$$\min_{R\in SO(3),\ t\in\mathbb R^3}\ \sum_{i=1}^N\lVert Rp_i+t-q_i\rVert^2$$

의 폐형 해가 있다. 최적의 $t$는 $t=\bar q-R\bar p$($\bar p$, $\bar q$는 중심)이므로 중심화한 점 $p_i'=p_i-\bar p$, $q_i'=q_i-\bar q$에 대해 교차공분산 $H=\sum p_i'q_i'^\top$를 구하고 $H=U\Sigma V^\top$의 SVD로

$$R=V\,\mathrm{diag}\bigl(1,\,1,\,\det(VU^\top)\bigr)\,U^\top$$

를 얻는다(Arun 외, 1987; 같은 문제의 쿼터니언 해는 Horn, 1987; 배율까지 포함한 해는 Umeyama, 1991). $\det(VU^\top)=-1$이면 반사가 되므로 마지막 특이 방향의 부호를 뒤집는다. 해는 두 경우에 특별하다. 점이 한 평면 위에 있으면 $H$의 셋째 특이값이 0이어서 $U$의 셋째 열을 앞의 두 열의 외적으로 보충한다. 점이 한 직선 위에 있으면 직선 둘레의 회전이 정해지지 않는다. 대응이 알려지지 않은 경우에는 가장 가까운 점을 대응으로 삼아 이 해를 반복한다(ICP, Besl & McKay, 1992; 10.20, 9.17).

1.6.4 알고리즘

강체 정합(Kabsch·Arun 방법)

입력: 대응 점 {(pᵢ, qᵢ)}
p̄, q̄ ← 두 점집합의 중심
H ← Σ (pᵢ − p̄)(qᵢ − q̄)ᵀ                (3×3)
U, Σ, V ← SVD(H)                         (H = U Σ Vᵀ)
Σ의 셋째 값이 0에 가까우면(평면 점집합) U의 셋째 열 ← U의 첫째 열 × 둘째 열
d ← det(V Uᵀ)
R ← V diag(1, 1, d) Uᵀ
t ← q̄ − R p̄
출력: T = [R t; 0 1]

구현은 1.6.5의 코드에 있다. 공선 점집합(셋째뿐 아니라 둘째 특이값도 0)은 해가 유일하지 않으므로 별도의 검사가 필요하다.

1.6.5 풀이 예제 — 구조 검증과 정합의 잡음 의존성

동차변환의 구조 연산을 확인하고, 대응 점집합에서 변환을 추정해 잡음 없는 복원의 정확성과 잡음 크기·점 수에 따른 오차를 계산한다. 결론부터 적으면 다음과 같다. ① $4\times4$ 합성은 구조 곱과 같고, 점은 이동하지만 벡터는 이동하지 않는다. ② 잡음이 없으면 3차원 분포와 평면 분포 모두 $10^{-14}$ 안에서 복원되고 $\det R=+1$이다. ③ 잡음 1 mm에서 회전 오차는 점 수의 제곱근에 반비례해 줄어 $N=10$에서 0.44°, $N=3{,}000$에서 0.026°이고 오차에 $\sqrt N$을 곱한 값이 1.15~1.44°로 거의 일정하다.

구현. homog·hinv·rigid_fit. 파이썬 표준 라이브러리와 1.1의 SVD·행렬 곱

항목값
참 변환회전 롤 20°·피치 −35°·요 50°(ZYX), 이동 $(120,-40,75)$ mm
점집합한 변 200 mm 정육면체 안의 균일 난수(평면 사례는 $z=0$)
잡음변환된 점에 표준편차 $\sigma$의 독립 가우시안(단위 mm)
시행$N=10$, 30, 100은 200회, 300은 100회, 1,000은 50회, 3,000은 30회(시드 11) 평균(RMS)
import math

def homog(R, p):
    """4×4 동차변환 [R p; 0 1]"""
    rows = [list(R[i]) + [p[i]] for i in range(3)]
    return rows + [[0.0, 0.0, 0.0, 1.0]]

def hinv(T):
    """역 [R^T, -R^T p]: 일반 역행렬을 사용하지 않는다"""
    Rt = [[T[j][i] for j in range(3)] for i in range(3)]
    q = [-sum(Rt[i][j] * T[j][3] for j in range(3))
         for i in range(3)]
    return homog(Rt, q)

def cross(a, b):
    return [a[1] * b[2] - a[2] * b[1],
            a[2] * b[0] - a[0] * b[2],
            a[0] * b[1] - a[1] * b[0]]

def rigid_fit(P, Q):
    """Q ≈ R P + t의 최소제곱 해(Kabsch·Arun 방법, SVD)"""
    n = len(P)
    cp = [sum(p[i] for p in P) / n for i in range(3)]
    cq = [sum(q[i] for q in Q) / n for i in range(3)]
    H = [[sum((p[i] - cp[i]) * (q[j] - cq[j])
              for p, q in zip(P, Q)) for j in range(3)]
         for i in range(3)]
    U, s, V = svd(H)
    if s[2] < 1e-12 * s[0]:          # 평면 점집합: U의 셋째 열 보충
        u0 = [U[i][0] for i in range(3)]
        u1 = [U[i][1] for i in range(3)]
        for i, c in enumerate(cross(u0, u1)):
            U[i][2] = c
    d = det3(matmul(V, transpose(U)))
    D = [[1.0, 0, 0], [0, 1.0, 0], [0, 0, d]]
    R = matmul(matmul(V, D), transpose(U))
    t = [cq[i] - sum(R[i][j] * cp[j] for j in range(3))
         for i in range(3)]
    return R, t

① 구조의 검증. 점과 벡터의 변환은 다음과 같다.

항목결과
4×4 곱과 $(R_1R_2,\ R_1p_2+p_1)$의 최대 차이0.0e+00
$T T^{-1}-I$ (구조 역)2.8e-14
점 $(1,2,3)$ 변환 $T(p,1)$$(118.58, -40.36, 78.44)$
벡터 $(1,2,3)$ 변환 $T(v,0)$$(-1.42, -0.36, 3.44)$
곱셈 수: 일반 4×4 곱 대 $(R,p)$ 구조 곱64 대 36

점 $(1,2,3)$은 이동 $(120,-40,75)$가 더해져 $(118.58,\ -40.36,\ 78.44)$로 옮겨지고, 같은 성분의 벡터는 회전만 받아 $(-1.42,\ -0.36,\ 3.44)$가 된다. 점과 벡터의 차이는 이동 성분이다. 구조 역의 오차 $2.8\times10^{-14}$는 이동 성분의 크기(약 $10^2$ mm)와 같은 자리 수의 반올림 오차로 설명된다 (추정).

② 잡음 없는 복원.

점집합점 수회전 오차 (°)이동 오차 (mm)$\det R$
3차원 분포, 잡음 없음505.9e-151.6e-14+1.000000
평면 분포($z=0$), 잡음 없음508.8e-150.0e+00+1.000000

③ 잡음과 점 수. 잡음 $\sigma=1$ mm에서 점 수에 따른 오차는 다음과 같다.

점 수 $N$회전 오차 RMS (°)이동 오차 RMS (mm)회전 오차 $\times\sqrt N$ (°)
100.44450.5991.406
300.22470.3321.231
1000.12820.1641.282
3000.06620.1031.147
1,0000.03850.0581.219
3,0000.02640.0321.444
10 100 1000 0.01 0.1 1 대응 점 수 N 회전 오차 RMS (°) 측정(잡음 1 mm) N−1/2 비례선
대응 점 수에 따른 회전 오차 RMS(잡음 1 mm, 계산값)와 N^(-1/2) 비례선. 두 선이 거의 나란하다.
−100 0 100 200 300 −200 −100 0 100 200 x (mm) y (mm) 변환 전 점집합 추정한 변환을 적용한 점집합 측정된 점집합(잡음 3 mm)
N=30, σ=3 mm의 대응 점집합을 xy 평면에 투영한 모양(계산값). 변환 전 점집합(×)을 추정한 변환으로 옮긴 점(○)이 측정된 점(●)과 겹친다.

회전 오차는 점 수 $N$에 대해 $N^{-1/2}$로 줄며 이는 독립 잡음의 평균 효과와 일치한다. $N=10$에서 0.44°는 점이 적으면 잡음이 정합 오차로 직접 나타남을 보인다. 이동 오차도 같은 방향으로 줄어 $N=3{,}000$에서 0.032 mm이다. 그림은 $N=30$, $\sigma=3$ mm에서 변환 전 점집합이 추정한 변환으로 측정된 점집합과 겹치는 것을 $xy$ 평면에 투영한 것이다.

한계. 점집합은 정육면체 안의 균일 분포이며 실제 계측 점의 분포(공선·편중)를 대표하지 않는다. 잡음은 독립·등방 가우시안이며 센서 오차(계통 오차·이상치)를 포함하지 않는다. 대응은 알려져 있다고 가정했고 ICP의 수렴(초기값 의존)은 다루지 않았다. $N^{-1/2}$ 의존은 이 입력에서의 관측이며 일반 법칙으로 주장하지 않는다. 공선 점집합은 시험하지 않았다.

견해: 이 책은 변환을 내부에서 $(R,p)$ 또는 (쿼터니언, 이동)으로 저장하고 곱·역은 구조를 이용해 계산하며, 연쇄가 길면 주기적으로 회전 블록을 재직교화하는 것을 기본으로 둔다고 본다. 근거는 위 예제에서 구조 곱이 곱셈 36회로 $4\times4$ 곱(64회)과 같은 결과를 주고, 정합의 복원 오차가 $10^{-14}$ 수준이며, 구조 역이 별도의 일반 역행렬 없이 $10^{-14}$ 오차를 준다는 점이다. 정합 정확도는 점 수뿐 아니라 점의 분포가 정한다.

1.6.6 설계 트레이드오프 — 변환의 표현

자료에서 확인되는 선택지는 네 가지다.

  • ① $4\times4$ 동차 행렬. 합성이 곱이고 점·벡터 변환이 직접적이다. 16개 원소 중 6개만 자유로워 저장이 중복이다.
  • ② $(R,p)$ 쌍. 구조를 이용해 36회 곱셈. 저장 12개.
  • ③ (쿼터니언, 이동). 저장 7개, 보간에 유리하다(1.5). ROS 2의 geometry_msgs/Transform이 translation(Vector3)과 rotation(Quaternion)으로 이 형식이다.
  • ④ 이중 쿼터니언·리대수 표현. 8개 또는 6개, 보간·최적화·섭동에 유리하다(1.11, 1.7).
방식장점한계알맞은 경우
① 동차 행렬직접 변환, 연쇄저장 16, 재직교화기구학 연쇄
② $(R,p)$36회 곱셈규약 명시 필요일반 구현
③ (쿼터니언, 이동)가벼움, 통신변환 필요통신·보간
④ 이중 쿼터니언·리대수최적화·섭동학습 비용추정·최적화

견해: 변환은 경계(통신·저장)에서 (쿼터니언, 이동), 계산에서 $(R,p)$ 또는 동차 행렬로 두는 것이 합리적이라고 본다. 근거는 ROS 2 메시가 (이동, 쿼터니언)이고 기구학 연쇄는 행렬 곱이 단순하다는 점이다. 이 구분은 이 장이 측정한 것이 아니다.

1.6.7 응용 축 비교

응용 축동차변환이 맡는 일요구관련 장
산업·제조기구학 연쇄, 도구·작업물 보정정확도, 재현성2.3, 2.17
물류·이동센서-플랫폼 외부 보정정확도6.22
도로 주행센서 외부 보정, 지도 정합일관성6.22
서비스센서·팔 장착 보정비용6.22
의료·헬스케어영상-환자 정합, 추적기 보정정합 오차의 해석2.17
휴머노이드·범용전신 프레임 연쇄수치 안정2.4
필드점군 정합대응·이상치10.20
국방·안보센서 정렬결정성6.22

이 표는 이 책의 정리이며 장별 요구는 다르다.

1.6.8 관련 규격·프로토콜

문서발행무엇을 정하나상세 장
geometry_msgs/msg/TransformROS 2두 프레임 사이의 변환: translation(Vector3), rotation(Quaternion)15.8
geometry_msgs/msg/PoseROS 2자유 공간의 자세: position(Point), orientation(Quaternion)15.8
REP-103ROS(작성 2010-10-07)회전 표현 우선순위, 공분산 순서1.3
수학 표기·기호표이 책${}^{A}T_{B}$, $SE(3)$ 표기A.2

Transform과 Pose는 필드 구성이 같지만 의미가 다르다(프레임 사이의 변환 대 프레임 안의 자세). 둘을 혼동하면 변환을 역으로 적용한다(1.3).

1.6.9 관련 규제·인증 요구와의 연결

직접 적용되는 규제는 없다. 의료 로봇의 정합 오차는 임상 정확도의 평가 항목이므로 오차의 정의(대응점 오차·표적 정합 오차)와 측정 방법이 문서화되어야 한다. 의료기기의 인허가는 38.14·41.21가 다룬다.

1.6.10 한계·유의점·미해결

  • 정합의 가정. 대응 점이 알려져 있고 잡음이 독립 등방 가우시안이라고 가정했다. 이상치·계통 오차·대응 오류는 다루지 않았다(10.20).
  • 분포 의존. 점의 분포(평면·공선·편중)가 오차를 정하며 이 장은 정육면체 분포와 평면 사례만 시험했다.
  • 구조 연산의 수치. 동차 행렬의 반복 곱에서 회전 블록의 직교성 표류는 1.4에서 다루었고 이 장은 반복하지 않았다.
  • 정리의 출처. 교과서 정리 번호는 확인하지 않았다 (확인 필요). Besl & McKay의 논문은 Crossref에서 SPIE 회의록 기록(1992, 1611권)을 확인했고 학술지 판의 서지는 확인하지 않았다 (확인 필요).

1.6.11 체크포인트·연구 질문

체크포인트:

  1. $SE(3)$의 정의, 군의 성질, 비가환성을 설명할 수 있는가.
  2. 점 $(p,1)$과 벡터 $(v,0)$이 같은 $T$에서 다르게 변환되는 이유를 설명할 수 있는가.
  3. 변환의 합성과 역의 구조 식과 곱셈 수(36 대 64)를 쓸 수 있는가.
  4. 일반 역행렬을 사용하지 않고 구조 역을 사용하는 이유를 세 가지 말할 수 있는가.
  5. 점집합 정합의 SVD 해를 적고 $\det(VU^\top)$의 역할과 평면 점집합 처리를 설명할 수 있는가.
  6. 정합 오차가 $N^{-1/2}$로 줄어드는 것을 예제의 표에서 읽을 수 있는가.
  7. 유사 변환($Sim(3)$)과 사영 변환의 차이를 설명할 수 있는가.

연구 질문(47.12에 수록한다):

  • 공선·편중 점집합에서 정합 오차가 분포에 따라 어떻게 달라지는가(점 분포 지표와의 관계).
  • 이상치가 포함된 대응에서 SVD 해와 강건 정합(RANSAC·M-추정)의 오차는 어떻게 다른가(10.20, 1.12).
  • 로봇 보정(손-눈)에서 변환 추정의 오차가 말단 정밀도에 전달되는 정도는 어떻게 되는가(2.17, 6.22).

1차 출처

  • K. S. Arun, T. S. Huang, S. D. Blostein, 「Least-squares fitting of two 3-D point sets」, IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI-9(5), 1987, 698–700.
  • B. K. P. Horn, 「Closed-form solution of absolute orientation using unit quaternions」, Journal of the Optical Society of America A 4(4), 1987, 629–642.
  • S. Umeyama, 「Least-squares estimation of transformation parameters between two point patterns」, IEEE Transactions on Pattern Analysis and Machine Intelligence 13(4), 1991, 376–380.
  • P. J. Besl, N. D. McKay, 「Method for registration of 3-D shapes」, Proceedings of SPIE 1611, 1992, 586–606.
  • W. Kabsch, 「A solution for the best rotation to relate two sets of vectors」, Acta Crystallographica Section A 32(5), 1976, 922–923(1.4).
  • ROS 2 common_interfaces의 geometry_msgs/msg/Transform.msg·Pose.msg(조회 2026-11-03).
  • K. M. Lynch, F. C. Park, 『Modern Robotics』, Cambridge University Press, 2017 (확인 필요: 장 번호).
  • 서지 확인 경로: Crossref REST API(api.crossref.org/works, 조회 2026-11-03).

다음 장. 1.7는 리군·리대수 I로, $SO(3)$와 $SE(3)$의 지수 사상과 로그 사상을 다룬다. 이 장까지의 변환을 매끈한 다양체로 보고, 회전 벡터와 트위스트가 접공간의 원소로 변환 사이를 어떻게 이어 주는지 정리한다.