제1부 수학적 기초
1.7 리군·리대수 I: SO(3)·SE(3)·지수 사상과 로그 사상
1.7.1 이 장에서 배우는 것 / 선수 지식 / 특히 중요한 독자
이 장은 회전군 $SO(3)$와 강체 변환군 $SE(3)$를 매끈한 다양체인 리군으로 보고, 항등원의 접공간인 리대수와 둘 사이를 잇는 지수 사상·로그 사상을 다룬다. 회전 벡터와 트위스트가 접공간의 원소이고, 지수 사상이 이를 회전·변환으로 바꾼다. 이 구조가 자세 최적화(국소 섭동), 오차상태 칼만 필터, 기구학의 지수곱 공식, 구면 보간의 일반화의 공통 기반이다. 앞 장들(1.3~1.6)의 회전·변환 표현을 다양체의 관점으로 묶는 장이며, 섭동·리 야코비안·불확실성 전파는 1.8, 리만 기하는 1.9, 스크루 이론은 1.10이 다룬다. 다룰 질문은 네 가지다. 리대수와 리군은 어떻게 대응하는가, $SO(3)$·$SE(3)$의 지수·로그는 어떤 식이며 어디서 수치가 깨지는가, 합성 $\exp(a)\exp(b)$는 지수의 합과 얼마나 다른가, 지수 사상을 이용한 보간은 SLERP와 어떤 관계인가.
배우는 것:
- 리군과 리대수 — 정의, 접공간, 리 괄호, $\mathfrak{so}(3)$·$\mathfrak{se}(3)$의 hat·vee 표기.
- 지수·로그 사상 — $SO(3)$(로드리게스)와 $SE(3)$($V(\theta)$ 블록), 로그의 정의역과 $\pi$ 경계.
- BCH 공식 — $\log(\exp a\exp b)=a+b+\tfrac12[a,b]+\cdots$.
- 수치 — 작은 각의 급수, $\pi$ 근방 로그의 정밀도.
- 보간 — 지수 사상 기반 측지선 보간과 SLERP의 일치.
- 규약 — 트위스트 성분 순서가 문헌마다 다르다는 점(이 책 $(\omega,v)$ 대 Solà 외 $(\rho,\theta)$).
- 풀이 예제 — 왕복 오차, 급수 처리, 로그의 정밀도, BCH 차수, 보간 일치.
선수 지식: 1.4·1.5(회전의 표현), 1.6(동차변환). 표기는 BK-05와 A.2을 따른다.
특히 중요한 독자: 연구자·엔지니어(자세 최적화·추정·기구학), 소프트웨어 개발자(리군 라이브러리의 규약), 수학적 배경을 확인하려는 독자.
출처 방침. 정리는 교과서와 원 논문에 근거하며 서지는 Crossref·arXiv 응답으로 확인했다(목록은 이 장 끝). 직접 읽은 자료: Solà, Deray, Atchuthan, 『A micro Lie theory for state estimation in robotics』(arXiv:1812.01537, 최초 2018-12-04, 최신 갱신 2021-12-08)의 표 I과 부록 D($SE(3)$: 식 (168)~(174))를 읽고 $\mathfrak{se}(3)$ 벡터의 성분 순서와 지수·로그 식을 확인했다. 교과서 본문은 읽지 않았고 정리 번호는
(확인 필요)로 둔다. 수치는 모두 이 장의 순수 파이썬 구현으로 계산했으며 행렬 곱은 1.1, 행렬→쿼터니언은 1.5, SLERP는 1.5의 구현을 불러와 사용했다.
1.7.2 개념 — 곡면 위의 군과 접평면
회전 행렬의 집합은 $\mathbb R^{9}$ 안의 3차원 곡면이다. 이 곡면 위에서는 덧셈이 곡면을 벗어나므로 회전을 "더하거나" 미분하기 어렵다. 항등원에서 곡면에 접하는 평면(접공간)은 평평하여 덧셈·미분·최적화가 통상적으로 성립한다. 지수 사상은 접공간의 점을 곡면 위의 점으로 감고, 로그 사상은 그 역이다. 이 대응이 회전을 3개의 수 $\omega\in\mathbb R^3$로 국소적으로 다루게 해 주며, 오일러각의 전역 특이점 문제(1.4)를 접공간에서의 국소 계산으로 피한다.
| 대상 | 군(곡면) | 리대수(접공간) | 차원 |
|---|---|---|---|
| 평면 회전 | $SO(2)$ | $\mathfrak{so}(2)\cong\mathbb R$ | 1 |
| 공간 회전 | $SO(3)$ | $\mathfrak{so}(3)\cong\mathbb R^3$ | 3 |
| 공간 강체 변환 | $SE(3)$ | $\mathfrak{se}(3)\cong\mathbb R^6$ | 6 |
1.7.3 원리
1.7.3.1 리군과 리대수
리군은 군이면서 매끈한 다양체이고 곱과 역이 매끈한 군이다. $SO(3)$와 $SE(3)$는 행렬 리군이다. 항등원 $I$에서의 접공간이 리대수이며 행렬 리군에서는 $\mathfrak g=\{X:\ \exp(tX)\in G\ \forall t\}$로 얻는다. 리대수는 리 괄호 $[X,Y]=XY-YX$를 갖는다.
- $\mathfrak{so}(3)$. 반대칭 행렬 $\omega^\wedge=[\omega]_\times$의 집합이다. $\wedge$(hat)는 $\mathbb R^3\to\mathfrak{so}(3)$, $\vee$(vee)는 그 역이다. 괄호는 $[\omega_1^\wedge,\omega_2^\wedge]=(\omega_1\times\omega_2)^\wedge$, 곧 벡터의 외적이다.
- $\mathfrak{se}(3)$. $4\times4$ 행렬 $\begin{bmatrix}[\omega]_\times&v\\0&0\end{bmatrix}$의 집합이며 $6$개 성분 $(\omega,v)$로 매개한다. 이 6성분 벡터를 트위스트라 한다(1.10).
성분 순서는 문헌마다 다르다. 이 책은 BK-05에 따라 트위스트를 $(\omega,v)$(각속도 먼저, Lynch & Park 관례)로 적는다. Solà 외(2018)는 $\mathfrak{se}(3)$의 벡터를 $\tau=(\rho,\theta)$, 곧 이동 성분 $\rho$ 먼저, 회전 성분 $\theta$ 나중으로 적는다(식 (169), 이 장이 읽은 문서). 같은 식에서 성분이 서로 바뀌므로 문헌의 식을 옮길 때 블록의 순서를 바꾼다. 아래 지수·로그 식은 이 책의 순서 $\xi=(\omega,v)$와 Solà 외의 순서 $\tau=(\rho,\theta)$를 구분하지 않고 이동 블록을 $\rho$, 회전 블록을 $\theta$(크기 $\theta=\lVert\theta\rVert$)로 적는다. 구현(1.7.5)은 exp_se3(rho, w)처럼 이름을 붙여 순서를 명시한다.
1.7.3.2 $SO(3)$의 지수 사상과 로그 사상
지수 사상은 회전 벡터 $\omega=\theta n$ ($\theta=\lVert\omega\rVert$)을 회전 행렬로 보낸다.
$$\exp(\omega^\wedge)=I+\frac{\sin\theta}{\theta}\,\omega^\wedge+\frac{1-\cos\theta}{\theta^2}\,(\omega^\wedge)^2$$
이는 로드리게스 공식(1.5)과 같다. 이 사상은 전사이지만 일대일이 아니다. $\omega$와 $\omega+2\pi k\,n$이 같은 회전을 준다. 로그 사상은 $\lVert\omega\rVert\le\pi$ 범위로 제한한 역이며, $\theta=\pi$에서 $\omega$와 $-\omega$가 같은 회전이어서 정의가 둘로 갈린다(절단 궤적). 로그는
$$\theta=\operatorname{atan2}\!\bigl(\tfrac12\lVert\operatorname{vee}(R-R^\top)\rVert,\ \tfrac12(\operatorname{tr}R-1)\bigr),\qquad \omega=\frac{\theta}{2\sin\theta}\operatorname{vee}(R-R^\top)$$
이다. 이 식은 $\theta\to0$과 $\theta\to\pi$에서 $\sin\theta$로 나누므로 불안정하며 구현은 쿼터니언을 거치는 경로(1.5)를 사용한다.
1.7.3.3 $SE(3)$의 지수 사상과 로그 사상
$\tau=(\rho,\theta)$의 지수는 회전과 이동을 함께 준다(Solà 외, 식 (172)·(174)).
$$\exp(\tau^\wedge)=\begin{bmatrix}\exp(\theta^\wedge)&V(\theta)\,\rho\\0&1\end{bmatrix},\qquad V(\theta)=I+\frac{1-\cos\theta}{\theta^2}\,\theta^\wedge+\frac{\theta-\sin\theta}{\theta^3}\,(\theta^\wedge)^2$$
로그는 $\theta=\operatorname{Log}(R)$로 회전 블록을 구하고 $\rho=V(\theta)^{-1}p$로 이동 블록을 구한다. $V$는 $SO(3)$의 왼쪽 야코비안이다(1.8). 기하학적으로 $\tau$는 일정한 트위스트이며 그 지수는 나사 운동(축 둘레 회전과 축 방향 이동의 합)이다(1.10). 이동 $p$는 단순히 $\rho$가 아니다. 회전이 있으면 $p=V(\theta)\rho$로 달라진다.
1.7.3.4 BCH 공식과 합성
회전의 합성 $\exp(a^\wedge)\exp(b^\wedge)$는 $\exp((a+b)^\wedge)$와 다르다(회전은 교환되지 않는다). BCH(Baker–Campbell–Hausdorff) 공식은 차이를 괄호로 전개한다.
$$\log\bigl(\exp a\,\exp b\bigr)=a+b+\tfrac12[a,b]+\tfrac1{12}\bigl([a,[a,b]]+[b,[b,a]]\bigr)+\cdots$$
$SO(3)$에서 $[a,b]=a\times b$이므로 $a,b$의 크기가 $\varepsilon$이면 1차 근사 $a+b$의 오차는 $O(\varepsilon^2)$, 2차 근사 $a+b+\tfrac12a\times b$의 오차는 $O(\varepsilon^3)$이다(1.7.5에서 확인). 이 전개가 작은 섭동의 합성을 선형으로 다루는 근거이며 1.8의 야코비안으로 이어진다.
1.7.3.5 측지선 보간
두 회전 $R_0$, $R_1$ 사이의 측지선은 $R(t)=R_0\exp\bigl(t\log(R_0^\top R_1)\bigr)$이며 회전각이 $t$에 선형이다. 이 보간은 쿼터니언 SLERP(1.5)와 같은 회전 경로를 준다. $SE(3)$에서 같은 형태는 일정 트위스트의 나사 운동이며 위치와 회전을 따로 보간한 경로와 다르다.
1.7.3.6 수치
- 작은 각. $\sin\theta/\theta$, $(1-\cos\theta)/\theta^2$, $(\theta-\sin\theta)/\theta^3$은 $\theta\to0$에서 분자가 상쇄되어 정밀도를 잃는다. $\theta<10^{-2}$에서 테일러 급수를 사용한다.
- $\pi$ 근방의 로그. $\sin\theta$로 나누는 식은 정밀도를 잃으며 $\theta=\pi$에서 정의되지 않는다. 쿼터니언을 거치는 경로는 이를 피한다.
- 정규화. 지수 결과의 직교성은 반올림 수준에서 유지된다(1.4의 재직교화).
1.7.4 알고리즘
$SO(3)$·$SE(3)$의 지수와 로그
exp_so3(ω): θ ← ‖ω‖; (a, b) ← (sin θ/θ, (1−cos θ)/θ²) (θ < 10⁻²이면 급수)
반환 I + a ω^ + b (ω^)²
log_so3(R): q ← 쿼터니언(R) (셰퍼드); q_w < 0이면 q ← −q
(n, θ) ← 축-각(q); 반환 θ n
exp_se3(ρ, θ): 반환 (exp_so3(θ), V(θ) ρ)
log_se3(R, p): θ ← log_so3(R); 반환 (V(θ)⁻¹ p, θ)
V⁻¹ = I − ½θ^ + [1/θ² − (1+cos θ)/(2θ sin θ)] (θ^)² (θ < 10⁻²이면 1/12)
측지선 보간(R0, R1, t): d ← log_so3(R0ᵀ R1); 반환 R0 exp_so3(t d)
구현은 1.7.5의 코드에 있다.
1.7.5 풀이 예제 — 왕복·급수·로그의 정밀도·BCH·보간
지수·로그 사상을 구현해 정리를 수치로 확인한다. 결론부터 적으면 다음과 같다. ① 쿼터니언을 거치는 로그는 $\theta=\pi-10^{-9}$까지 왕복 오차가 $10^{-15}$ 안인 반면 acos와 sin 나눗셈 방식은 $\pi-10^{-6}$에서 $4.9\times10^{-4}$, $\pi-10^{-9}$에서 3.0으로 무너진다. ② $(1-\cos\theta)/\theta^2$의 직접 계산은 $\theta=10^{-8}$에서 상대 오차 1(정보 전부 손실)이고 급수를 두면 0이다. ③ $SE(3)$의 왕복 오차는 $10^{-15}$ 안이다. ④ BCH 근사의 오차는 1차에서 $\varepsilon^2$, 2차에서 $\varepsilon^3$으로 줄어든다. ⑤ 지수 사상 보간은 SLERP와 $9\times10^{-16}$ 안에서 같다.
구현. hat·vee·exp_so3·log_so3·log_naive·vmat·vinv·exp_se3·log_se3. 행렬 곱은 1.1, 행렬→쿼터니언·SLERP는 1.5
| 항목 | 값 |
|---|---|
| 입력 1 | 축 $(1,2,2)/3$ 둘레 각 $\theta=10^{-9}$~$\pi-10^{-9}$의 회전 벡터 |
| 입력 2 | $\theta=10^{-1}$~$10^{-8}$의 $(1-\cos\theta)/\theta^2$(기준값은 8차까지의 급수) |
| 입력 3 | $\tau=s\,(0.4,-0.7,0.5,\ 0.3,0.5,-0.8)$, $s=10^{-6}$~3 |
| 입력 4 | $a=\varepsilon(0.3,-0.5,0.8)$, $b=\varepsilon(-0.7,0.2,0.4)$, $\varepsilon=10^{-1}$~$10^{-3}$ |
| 입력 5 | 무작위 자세 50쌍(시드 8), $t=0.1$~0.9 |
import math
def hat(w):
"""w^ = [w]x (3×3 반대칭 행렬)"""
return [[0.0, -w[2], w[1]], [w[2], 0.0, -w[0]],
[-w[1], w[0], 0.0]]
def vee(W):
return [W[2][1], W[0][2], W[1][0]]
def coef(th):
"""exp·V의 계수 a=sin/θ, b=(1−cos)/θ², c=(θ−sin)/θ³"""
if th < 1e-2: # 작은 각: 테일러 급수
t2 = th * th
return (1 - t2 / 6 + t2 * t2 / 120,
0.5 - t2 / 24 + t2 * t2 / 720,
1 / 6 - t2 / 120 + t2 * t2 / 5040)
return (math.sin(th) / th, (1 - math.cos(th)) / th ** 2,
(th - math.sin(th)) / th ** 3)
def exp_so3(w):
"""로드리게스: I + aW + bW^2"""
a, b, _ = coef(math.sqrt(sum(x * x for x in w)))
W = hat(w)
W2 = matmul(W, W)
return [[(i == j) + a * W[i][j] + b * W2[i][j]
for j in range(3)] for i in range(3)]
def log_so3(R):
"""쿼터니언을 거쳐 θ ≈ π에서도 정확한 로그"""
q = from_matrix(R)
if q[0] < 0:
q = tuple(-x for x in q)
n, th = to_axis_angle(q)
return [th * x for x in n]
def log_naive(R):
"""acos와 sin 나눗셈의 로그(θ ≈ 0, π에서 부정확)"""
th = math.acos(max(-1.0, min(1.0, (R[0][0] + R[1][1]
+ R[2][2] - 1) / 2)))
k = th / (2 * math.sin(th))
A = [[R[i][j] - R[j][i] for j in range(3)]
for i in range(3)]
return [k * x for x in vee(A)]
def vmat(w):
"""V(θ) = I + bW + cW^2 (SE(3) 지수의 이동 블록)"""
_, b, c = coef(math.sqrt(sum(x * x for x in w)))
W = hat(w)
W2 = matmul(W, W)
return [[(i == j) + b * W[i][j] + c * W2[i][j]
for j in range(3)] for i in range(3)]
def vinv(w):
"""V^-1 = I − W/2 + (1/θ² − (1+cosθ)/(2θ sinθ)) W^2"""
th = math.sqrt(sum(x * x for x in w))
k = 1 / 12 if th < 1e-3 else (1 / th ** 2
- (1 + math.cos(th)) / (2 * th * math.sin(th)))
W = hat(w)
W2 = matmul(W, W)
return [[(i == j) - 0.5 * W[i][j] + k * W2[i][j]
for j in range(3)] for i in range(3)]
def exp_se3(rho, w):
"""τ = (ρ, θ)의 지수: (R, p) = (Exp(θ), V(θ) ρ)"""
p = [sum(v * x for v, x in zip(r, rho)) for r in vmat(w)]
return exp_so3(w), p
def log_se3(R, p):
w = log_so3(R)
rho = [sum(v * x for v, x in zip(r, p)) for r in vinv(w)]
return rho, w
① $SO(3)$ 로그의 왕복 정밀도. $\lVert\operatorname{Log}(\operatorname{Exp}(\omega))-\omega\rVert$는 다음과 같다.
| 각 $\theta$ | $\lVert\mathrm{Log}(\mathrm{Exp}(\omega))-\omega\rVert$ (쿼터니언 경유) | 같은 양(acos·sin 나눗셈) |
|---|---|---|
| 1e-09 | 0.0e+00 | 계산 불가 |
| 0.0001 | 0.0e+00 | 2.0e-20 |
| 0.5 | 0.0e+00 | 0.0e+00 |
| 2 | 0.0e+00 | 1.1e-16 |
| 3.141591654 | 6.7e-16 | 4.9e-04 |
| 3.141592653 | 0.0e+00 | 3.0e+00 |
② 작은 각의 급수.
| 각 $\theta$ | $(1-\cos\theta)/\theta^2$ 직접 계산의 상대 오차 | 급수를 둔 coef의 상대 오차 |
|---|---|---|
| 0.1 | 1.1e-14 | 1.1e-14 |
| 0.01 | 2.9e-13 | 2.9e-13 |
| 0.001 | 1.6e-11 | 0.0e+00 |
| 0.0001 | 5.2e-09 | 0.0e+00 |
| 1e-06 | 8.9e-05 | 0.0e+00 |
| 1e-08 | 1.0e+00 | 0.0e+00 |
$\theta=10^{-8}$에서 직접 계산한 $1-\cos\theta$가 부동소수점에서 0이 되어 상대 오차가 1이 된다. 급수 구간($\theta<10^{-2}$)에서는 기준값과 같다.
③ $SE(3)$의 왕복.
| $\lVert\tau\rVert$ | $\lVert\mathrm{Log}(\mathrm{Exp}(\tau))-\tau\rVert$ (SE(3), 이동 블록 포함) |
|---|---|
| 1.37e-06 | 1.8e-22 |
| 0.0137 | 2.0e-18 |
| 1.37 | 1.2e-16 |
| 4.11 | 1.7e-15 |
④ BCH 근사의 차수.
| $\varepsilon$ | 1차 근사 $a+b$의 오차 | 2차 근사 $a+b+\tfrac12 a\times b$의 오차 | 오차 비(1차/2차) |
|---|---|---|---|
| 0.1 | 4.11e-03 | 8.81e-05 | 47 |
| 0.01 | 4.11e-05 | 8.80e-08 | 467 |
| 0.001 | 4.11e-07 | 8.80e-11 | 4671 |
$\varepsilon$를 10배 줄이면 1차 오차는 100배($\varepsilon^2$), 2차 오차는 1,000배($\varepsilon^3$) 줄어 오차 비가 약 $10$배씩 늘어난다(47, 467, 4,671). 일차 근사에서 $a\times b/2$ 항이 오차의 주항이다.
⑤ 측지선 보간과 SLERP.
지수 사상 보간 $R_0\mathrm{Exp}(t\,\mathrm{Log}(R_0^\top R_1))$과 SLERP의 최대 원소 차이(무작위 자세 50쌍, $t=0.1\sim0.9$): 8.9e-16
이 결과는 $SO(3)$의 지수 사상 보간과 쿼터니언 SLERP가 같은 경로를 준다는 것을 수치로 확인한다.
한계. 구현은 소규모 교육 코드이며 $\theta=\pi$ 부근의 절단 궤적에서 로그의 부호 선택(두 값 중 하나)을 다루지 않았다. BCH는 3차 이상 항을 시험하지 않았다. $SE(3)$의 BCH와 야코비안은 1.8이 다룬다. $\mathfrak{se}(3)$의 성분 순서는 이 장의 구현(이동 먼저)과 이 책의 표기(각속도 먼저)가 다르므로 함수 인자 이름으로 구분한다.
견해: 이 책은 자세·변환의 국소 최적화와 섭동을 리대수 위에서 하고, 저장·전역 표현은 쿼터니언 또는 회전 행렬로 두는 것을 기본으로 둔다고 본다. 근거는 위 예제에서 지수·로그가 반올림 수준으로 왕복하고(쿼터니언 경유 로그), 합성의 작은 섭동이 BCH로 정확히 차수별로 근사되며, 측지선 보간이 SLERP와 같다는 점이다. 구현에서는 $\theta\to0$의 급수와 $\pi$ 근방 로그의 처리가 정밀도를 정한다.
1.7.6 설계 트레이드오프 — 국소 좌표의 선택
자료에서 확인되는 선택지는 세 가지다.
- ① 리대수(회전 벡터·트위스트) 좌표. 최소 표현(3 또는 6)이며 섭동·미분·최적화에 알맞다. 지수·로그 계산과 $\pi$ 근방·급수 처리가 필요하다.
- ② 쿼터니언(+이동). 저장·합성이 가볍고 특이점이 없다. 4개 성분의 노름 제약과 부호 모호성이 있다(1.5).
- ③ 회전 행렬·동차 행렬. 변환이 직접적이다. 중복 매개변수와 재직교화가 필요하다(1.4).
| 방식 | 장점 | 한계 | 알맞은 경우 |
|---|---|---|---|
| ① 리대수 | 최소 표현, 섭동 | 지수·로그 비용, 경계 | 최적화·추정의 갱신 단계 |
| ② 쿼터니언 | 가벼움, 보간 | 부호·노름 | 저장·보간·통신 |
| ③ 행렬 | 직접 변환 | 중복 | 기구학 연쇄 |
견해: 한 알고리즘 안에서 저장은 쿼터니언이나 행렬로, 갱신(증분)은 리대수로 하는 혼합이 자연스럽다고 본다. 근거는 위 비교표에서 각 표현의 장점이 서로 다른 단계에 있다는 점이다. 이 판단은 이 장이 측정한 것이 아니다.
1.7.7 응용 축 비교
| 응용 축 | 리군이 맡는 일 | 요구 | 관련 장 |
|---|---|---|---|
| 산업·제조 | 지수곱 기구학, 정밀 보정의 섭동 | 정확도 | 2.4, 2.17 |
| 물류·이동 | 자세 그래프 최적화의 증분 | 규모, 수렴 | 1.8 |
| 도로 주행 | 오차상태 필터의 자세 오차 | 일관성 | 9.4 |
| 서비스 | 센서 자세 추정 | 경량 | 9.4 |
| 의료·헬스케어 | 정합·추적의 변환 추정 | 정밀도 | 1.6 |
| 휴머노이드·범용 | 부유 기저의 동역학 적분 | 수치 안정 | 1.9 |
| 필드 | 비행·수중체 자세 추정 | 특이점 없음 | 9.4 |
| 국방·안보 | 관성 항법의 자세 갱신 | 결정성 | 9.4 |
이 표는 이 책의 정리이며 장별 요구는 다르다.
1.7.8 관련 규격·프로토콜
| 문서 | 발행 | 무엇을 정하나 | 상세 장 |
|---|---|---|---|
| 『A micro Lie theory for state estimation in robotics』 | arXiv:1812.01537(Solà 외, 2018) | 리군·리대수·지수 사상의 정의와 $SO(3)$·$SE(3)$의 공식, $\mathfrak{se}(3)$ 벡터의 성분 순서 $(\rho,\theta)$ | 1.8 |
| REP-103 | ROS(작성 2010-10-07) | 회전 표현의 우선순위, 공분산 순서 | 1.3 |
| 수학 표기·기호표 | 이 책 | 트위스트 $(\omega,v)$, hat·vee | A.2 |
리군 라이브러리(manif·Sophus 등)의 성분 순서와 규약은 1.8이 다룬다. 이 장은 라이브러리 소스를 읽지 않았다 (확인 필요).
1.7.9 관련 규제·인증 요구와의 연결
직접 적용되는 규제는 없다. 자세 추정 소프트웨어의 수치 처리(급수 구간, $\pi$ 근방, 정규화)는 안전 관련 소프트웨어의 검증 항목이 될 수 있으며 26.20이 다룬다.
1.7.10 한계·유의점·미해결
- 성분 순서. 문헌·라이브러리에 따라 트위스트 $(\omega,v)$ 또는 $(\rho,\theta)$이다. 이 장은 하나의 문서(Solà 외)를 읽어 확인했고 다른 문헌은 확인하지 않았다
(확인 필요). - 절단 궤적. $\theta=\pi$에서 로그가 둘로 갈리는 처리와 SE(3)의 $V^{-1}$ 근방의 수치는 심층 시험하지 않았다.
- 고차 BCH. 3차 이상 항과 $SE(3)$의 BCH는 다루지 않았다(1.8).
- 정리의 출처. 교과서 정리 번호는 확인하지 않았다
(확인 필요).
1.7.11 체크포인트·연구 질문
체크포인트:
- 리군·리대수·리 괄호의 정의와 $\mathfrak{so}(3)$의 hat·vee, 괄호가 외적인 이유를 설명할 수 있는가.
- $SO(3)$의 지수 사상(로드리게스)과 로그 사상의 식, 로그의 정의역과 $\theta=\pi$ 경계를 쓸 수 있는가.
- $SE(3)$의 지수·로그와 $V(\theta)$의 의미, $p\ne\rho$인 이유를 설명할 수 있는가.
- BCH 공식의 앞 세 항과 1차·2차 근사의 오차 차수를 말할 수 있는가.
- 측지선 보간 $R_0\exp(t\log(R_0^\top R_1))$과 SLERP의 관계를 설명할 수 있는가.
- 작은 각의 급수와 $\pi$ 근방 로그의 수치 처리가 필요한 이유를 설명할 수 있는가.
- 트위스트 성분 순서가 문헌마다 다를 때 식을 옮기는 방법을 설명할 수 있는가.
연구 질문(47.12에 수록한다):
- manif·Sophus 등 리군 라이브러리의 $\mathfrak{se}(3)$ 성분 순서와 야코비안 정의는 어떻게 다른가(1.8).
- $\theta=\pi$ 근방에서 로그의 두 값 가운데 하나를 고르는 규칙이 자세 추정의 일관성에 미치는 영향은 무엇인가.
- 지수 사상 보간의 $SE(3)$ 나사 운동 경로와 이동·회전 독립 보간 경로의 차이가 로봇 궤적에서 얼마나 되는가.
1차 출처
- J. Solà, J. Deray, D. Atchuthan, 「A micro Lie theory for state estimation in robotics」, arXiv:1812.01537, 2018(표 I·부록 D 읽음).
- B. C. Hall, 『Lie Groups, Lie Algebras, and Representations: An Elementary Introduction』, 2판, Springer, 2015
(확인 필요: 장 번호). - T. D. Barfoot, 『State Estimation for Robotics』, Cambridge University Press, 2017
(확인 필요: 장 번호). - R. M. Murray, Z. Li, S. S. Sastry, 『A Mathematical Introduction to Robotic Manipulation』, CRC Press, 1994
(확인 필요: 장 번호). - K. M. Lynch, F. C. Park, 『Modern Robotics』, Cambridge University Press, 2017
(확인 필요: 장 번호). - 서지 확인 경로: arXiv API(
export.arxiv.org/api/query, 조회 2026-11-03).
다음 장. 1.8은 리군·리대수 II로, 섭동·리 야코비안·불확실성 전파를 다룬다. 이 장의 지수·로그를 이용해 작은 섭동에 대한 자세 합성의 야코비안, 자세의 공분산 전파, manif·Sophus 구현의 규약을 정리한다.