제2부 기구학
2.8 미분 기구학: 기하·해석 자코비안과 물체·공간 좌표계 자코비안
2.8.1 이 장에서 배우는 것 / 선수 지식 / 특히 중요한 독자
이 장은 관절 속도 $\dot q$에서 엔드이펙터 속도로 가는 선형 사상, 곧 자코비안(Jacobian)을 다룬다. 순기구학(2.3·2.4)이 위치·자세를 관절 변수의 함수 $T(q)$로 주었다면 미분 기구학(velocity kinematics)은 그 시간 변화율의 구조를 준다. 같은 속도라도 어느 좌표계에서 어떤 변수로 나타내느냐에 따라 자코비안이 공간·물체·위치(기하)·해석의 넷으로 갈리고, 문헌과 라이브러리마다 이름이 달라 혼동이 잦다. 이 장은 지수곱 공식에서 공간 자코비안을 유도하고 나머지 셋을 변환으로 얻는 순서로 정리한 뒤, 자코비안의 시간 미분(가속도 수준 기구학)·유한 차분의 간격 선택·오일러각 해석 자코비안의 표현 특이점을 계산으로 확인한다. 기구 특이점과 조작성은 2.9, 영공간·여유자유도는 2.11, 정역학은 2.12, 동역학은 3.1 이후에서 다룬다.
배우는 것:
- 자코비안의 정의와 열의 의미 — $V=J(q)\dot q$이며 열 $i$는 관절 $i$만 단위 속도로 움직일 때의 엔드이펙터 속도이다.
- 공간·물체 자코비안 — $J_{s,i}=\mathrm{Ad}_{P_i}S_i$, $J_b=\mathrm{Ad}_{T^{-1}}J_s$.
- 위치(기하) 자코비안과 해석 자코비안 — $(\omega_s,\dot p)$ 혼성 표현, 오일러각·지수 좌표 속도로의 변환, 짐벌 특이점.
- 시간 미분 — $\dot J_{s,i}=\mathrm{ad}_{V_i}J_{s,i}$, $\dot V=J\ddot q+\dot J\dot q$, 물체·위치 자코비안의 미분 식.
- 수치 미분의 한계 — 전방·중심 차분의 오차와 최적 간격.
- 측정 — UR5·Franka Research 3의 200쌍 검증, Modern Robotics·Pinocchio·Robotics Toolbox와의 대조.
선수 지식: 1.4(오일러각 속도·짐벌락), 1.10(트위스트·수반), 2.4(지수곱 공식의 $S_i$·$M$). 특이값 분해는 1.1.
특히 중요한 독자: 속도·힘 제어와 역기구학 구현에 필요한 자코비안을 직접 작성하는 엔지니어, 라이브러리의 자코비안 기준 좌표계 옵션(Pinocchio ReferenceFrame, Robotics Toolbox jacob0·jacobe)을 선택하는 소프트웨어 개발자, 속도 수준과 가속도 수준 기구학을 정리하려는 연구자.
출처 방침. 기준 시점은 2026-11-03이다. 직접 읽은 자료: ① Lynch·Park, Modern Robotics(사전 인쇄본 2017-05-03판) 5.1절(공간 자코비안, 물체 자코비안, 5.1.4 공간·물체 자코비안의 관계, 5.1.5 해석 자코비안과 각주 3, 예제 5.5의 지수 좌표 해석 자코비안), ② Pinocchio 4.1.0의
getFrameJacobian·getFrameJacobianTimeVariation·computeJointJacobiansTimeVariation문서 문자열, ③ Robotics Toolbox for Python 1.5.0의jacob0·jacobe·jacob0_analytical·jacob0_dot문서 문자열, ④ KDLchainjnttojacsolver.hpp의JntToJac주석. 서지(Whitney 1969, Orin·Schrader 1984, Park 1994)는 Crossref 응답으로 확인했다. 읽지 못한 것: 위 논문들의 본문, KDL의 구현 코드, Featherstone의 공간 벡터 대수에서 가속도의 정의. 수치는 모두 이 장의 순수 파이썬 계산이다.
2.8.2 개념 — 같은 속도의 네 가지 표현
결론부터 적으면 다음과 같다. 자코비안은 순기구학의 1차 근사의 계수이다. 관절 속도가 $\dot q$이면 엔드이펙터 속도는 $V=J(q)\dot q$이고, $J$의 열 $i$는 관절 $i$만 단위 속도로 움직일 때의 엔드이펙터 속도이다. 엔드이펙터 속도를 어떤 좌표계에서 무엇으로 나타내느냐에 따라 자코비안이 넷으로 나뉜다.
| 자코비안 | 기호 | 엔드이펙터 속도(성분 순서 이 책 기준) | 기준 | 특징 |
|---|---|---|---|---|
| 공간 | $J_s$ | 공간 트위스트 $V_s=(\omega_s,v_s)$ | 고정(기저) 좌표계. $v_s$는 강체에 고정되어 기저 원점을 지나는 점의 속도 | 열이 홈 자세 스크루만으로 결정된다 |
| 물체 | $J_b$ | 물체 트위스트 $V_b=(\omega_b,v_b)$ | 엔드이펙터 좌표계 | 렌치(2.12)와 쌍대이다 |
| 위치(기하) | $J_p$ | $(\omega_s,\dot p)$ | 기저 축으로 나타낸 각속도와 엔드이펙터 원점의 위치 속도 | 트위스트가 아닌 혼성 표현이다 |
| 해석 | $J_a$ | $(\dot\Gamma,\dot p)$ | 자세 매개변수 $\Gamma$(오일러각 등)의 시간 미분 | 표현 자체의 특이점이 더해진다 |
이 장의 결론은 세 가지이다. 첫째, 공간·물체·위치 자코비안은 행렬식이 1인 $6\times6$ 변환으로 서로 얻어지므로 계수(rank)와 정방($n=6$)일 때의 $\lvert\det J\rvert$가 같다. 기구 특이점은 표현에 의존하지 않는다. 둘째, 물체 자코비안과 위치 자코비안의 특이값은 같고 공간 자코비안의 특이값은 다르다(UR5의 $\sigma_{\min}$ 비가 $0.72\sim1.37$). 공간 자코비안으로 조건수·조작성을 계산하면 기저 원점의 위치에 따라 값이 달라진다. 셋째, 해석 자코비안만 표현의 특이점을 더한다. 로봇이 특이하지 않아도 ZYX 오일러각의 $\theta\to\pm90^\circ$에서 $J_a$의 성분이 $1/\cos\theta$로 커진다.
2.8.3 원리
2.8.3.1 정의와 열의 의미
엔드이펙터의 위치 $p(q)$만 보면 자코비안은 편미분 행렬 $J_v=\partial p/\partial q$이다. 평면 2R 팔($p=(l_1c_1+l_2c_{12},\ l_1s_1+l_2s_{12})$, $c_{12}=\cos(q_1+q_2)$)에서 열 1은 관절 1을 단위 속도로 돌릴 때 팔 끝이 원점 둘레를 도는 속도 $(-p_y,\ p_x)$이고, 열 2는 팔꿈치 둘레를 도는 속도 $(-l_2s_{12},\ l_2c_{12})$이다. 각 열의 방향은 해당 관절 축에서 팔 끝까지의 팔에 수직이다.
강체 전체의 속도는 위치만이 아니라 각속도를 포함하는 트위스트(1.10)이다. 이 장은 속도를 $\dot q\mapsto V$로 보내는 선형 사상을 $6\times n$ 행렬로 나타낸다. 속도 수준에서 관절 속도를 지령하는 분해 모션 속도 제어(resolved motion rate control)는 Whitney(1969)로 알려져 있다(본문은 읽지 못했다). 이 방식은 $J^{-1}$ 또는 유사역행렬(1.1)이 필요하므로 자코비안이 특이한 자세가 중요하다(2.9).
2.8.3.2 공간 자코비안
공간 자코비안의 열 $i$는 홈 자세 스크루 $S_i$를 앞쪽 관절들의 지수곱으로 옮긴 것이다. 지수곱 공식(2.4) $T(q)=e^{[S_1]q_1}\cdots e^{[S_n]q_n}M$의 공간 트위스트는 $[V_s]=\dot TT^{-1}$이다. 각 지수 인자의 미분이 $\tfrac{d}{dt}e^{[S_i]q_i}=[S_i]\dot q_ie^{[S_i]q_i}$이므로, $P_i=e^{[S_1]q_1}\cdots e^{[S_{i-1}]q_{i-1}}$($P_1=I$)로 두면 곱의 미분 규칙에서
$$\dot TT^{-1}=\sum_{i=1}^{n}P_i\,[S_i]\,P_i^{-1}\,\dot q_i=\sum_{i=1}^{n}\bigl[\mathrm{Ad}_{P_i}S_i\bigr]\dot q_i$$
이다($P[S]P^{-1}=[\mathrm{Ad}_PS]$, 1.10). 따라서
$$V_s=J_s(q)\,\dot q,\qquad J_{s,i}(q)=\mathrm{Ad}_{P_i}S_i.$$
첫 열은 $S_1$이고 고정이다. 회전 관절의 열 $i$는 앞 관절들이 움직인 뒤의 축 방향 $\hat\omega_i$와 $-\hat\omega_i\times q_i$를 담은 스크루이며($q_i$는 축 위의 한 점), 직동 관절의 열은 $(0,\hat v_i)$이다. 좌표계 규칙이 필요 없고 $n$개의 $4\times4$ 곱과 수반으로 $O(n)$에 계산된다. 지수곱 공식의 계산 측면은 Park(1994)이, 자코비안의 효율적 계산은 Orin·Schrader(1984)가 다룬 것으로 알려져 있다(본문은 읽지 못했다).
2.8.3.3 물체 자코비안
물체 트위스트는 공간 트위스트의 수반 변환 $V_b=\mathrm{Ad}_{T^{-1}}V_s$이므로(1.10) 양변을 $\dot q$의 선형 사상으로 보면 다음과 같다(Modern Robotics 식 5.22·5.23).
$$J_b(q)=\mathrm{Ad}_{T^{-1}}J_s(q),\qquad J_s(q)=\mathrm{Ad}_{T}J_b(q).$$
물체 스크루 $B_i=\mathrm{Ad}_{M^{-1}}S_i$에서 독립적으로도 만들 수 있다. 열 $i$는 엔드이펙터 쪽 관절들의 지수곱을 되돌린 수반으로 옮긴 것이며 마지막 열은 $B_n$ 그대로이다.
$$J_{b,i}=\mathrm{Ad}_{e^{-[B_n]q_n}\cdots e^{-[B_{i+1}]q_{i+1}}}B_i$$
물체 자코비안은 기저 좌표계의 선택에 의존하지 않고 엔드이펙터 좌표계(공구 끝점)에만 의존한다. 같은 자세에서 계수가 같다는 점은 Modern Robotics 5.1.4절이 적는다.
2.8.3.4 위치(기하) 자코비안과 이름의 혼동
공간 트위스트의 선속도 성분은 $v_s=\dot p-\omega_s\times p$이다(1.10). $v_s$는 강체에 고정되어 기저 원점을 현재 지나는 점의 속도이며 엔드이펙터의 위치 속도 $\dot p$가 아니다. 위치 속도로 바꾸면 다음과 같다.
$$\begin{bmatrix}\omega_s\\\dot p\end{bmatrix}=\underbrace{\begin{bmatrix}I&0\\-[p]_\times&I\end{bmatrix}}_{L(p)}\begin{bmatrix}\omega_s\\v_s\end{bmatrix},\qquad J_p=L(p)\,J_s=\begin{bmatrix}R&0\\0&R\end{bmatrix}J_b.$$
둘째 등식은 $V_b=(R^\top\omega_s,\ R^\top\dot p)$에서 나온다. $\det L=1$이고 $L$은 직교 행렬이 아니다. 따라서 $J_s$·$J_b$·$J_p$는 계수와 $\lvert\det\rvert$가 같다. $J_p$와 $J_b$는 직교 행렬 $\mathrm{diag}(R,R)$로 이어져 특이값이 같고, $J_s$는 $L$이 직교가 아니므로 특이값이 다르다. $J_p$는 기저 좌표계의 원점·방향을 바꿔도 특이값이 변하지 않는다(원점 이동은 $p$만 바꾸고 $\dot p$를 바꾸지 않으며, 방향 변경은 $\mathrm{diag}(Q,Q)$를 곱할 뿐이다). 반대로 엔드이펙터 기준점(TCP)을 물체 위의 다른 점으로 옮기면 $J_p$와 $J_b$에도 $L$ 꼴의 비직교 변환이 곱해져 특이값이 바뀐다.
이름은 자료마다 다르다. 읽은 범위에서 정리하면 다음과 같다.
| 이 책 | Modern Robotics | Robotics Toolbox for Python 1.5.0 | KDL | Pinocchio 4.1.0 |
|---|---|---|---|---|
| $J_s$ | space Jacobian $J_s$ | 문서 문자열에서 해당 함수를 확인하지 못했다 | 확인하지 못했다 | WORLD |
| $J_b$ | body Jacobian $J_b$ | jacobe | 확인하지 못했다 | LOCAL |
| $J_p$ | 각주 3의 "geometric Jacobian"(혼성) | jacob0("geometric Jacobian") | JntToJac(기저 좌표계, 기준점은 엔드이펙터) | LOCAL_WORLD_ALIGNED |
| $J_a$ | analytic Jacobian | jacob0_analytical | 확인하지 못했다 | 확인하지 못했다 |
성분 순서는 Modern Robotics가 $(\omega,v)$이고 Robotics Toolbox 문서 문자열이 $(v_x,v_y,v_z,\omega_x,\omega_y,\omega_z)$이다. Pinocchio는 이 장의 비교(2.8.5 ⑦)에서 $(v,\omega)$ 순서로 일치했다. KDL의 성분 순서는 확인하지 못했다 (확인 필요). 용어 "기하 자코비안(geometric Jacobian)"은 Modern Robotics 5.1.5절 본문에서는 공간·물체 형태(해석 자코비안의 대비어)를, 같은 절 각주 3에서는 혼성 형태 $J_p$를 가리킨다. Robotics Toolbox의 jacob0 문서 문자열은 이것이 Corke·Spong 외·Siciliano 외의 교재에 나오는 기하 자코비안이며 Lynch·Park의 트위스트가 아니라고 경고한다. 이 책은 혼성 형태를 위치 자코비안(기하 자코비안)이라 부르고 $J_p$로 적는다.
2.8.3.5 해석 자코비안과 표현 특이점
자세를 매개변수 $\Gamma\in\mathbb R^3$(오일러각·지수 좌표 등)로 나타내면 각속도는 $\omega_s=E(\Gamma)\dot\Gamma$이고, 해석 자코비안은 $\dot\Gamma$와 $\dot p$를 $\dot q$로 잇는다.
$$\begin{bmatrix}\dot\Gamma\\\dot p\end{bmatrix}=J_a\dot q,\qquad J_a=\begin{bmatrix}E^{-1}&0\\0&I\end{bmatrix}J_p.$$
ZYX 오일러각($R=R_z(\psi)R_y(\theta)R_x(\phi)$, 롤 $\phi$·피치 $\theta$·요 $\psi$, 1.4)에서 $E$와 그 역행렬은 다음과 같다.
$$E=\begin{bmatrix}c_\psi c_\theta&-s_\psi&0\\ s_\psi c_\theta&c_\psi&0\\ -s_\theta&0&1\end{bmatrix},\qquad E^{-1}=\begin{bmatrix}c_\psi/c_\theta&s_\psi/c_\theta&0\\ -s_\psi&c_\psi&0\\ s_\theta c_\psi/c_\theta&s_\theta s_\psi/c_\theta&1\end{bmatrix},\qquad \det E=\cos\theta.$$
$\theta\to\pm90^\circ$에서 $E^{-1}$의 성분이 $1/\cos\theta$로 발산한다. 이는 로봇의 기구 특이점이 아니라 매개변수화의 특이점이다. $J_p$가 정칙인 자세에서도 $J_a$는 발산할 수 있다. 3매개변수 표현은 $SO(3)$ 전체에서 특이점이 없을 수 없다(1.4).
Modern Robotics 예제 5.5는 지수 좌표 $r=\hat\omega\alpha$($\alpha=\lVert r\rVert\in[0,\pi]$)를 사용하는 해석 자코비안을 보인다. 물체 각속도와 $\dot r$의 관계는 $\omega_b=A(r)\dot r$이고
$$A(r)=I-\frac{1-\cos\alpha}{\alpha^2}[r]_\times+\frac{\alpha-\sin\alpha}{\alpha^3}[r]_\times^2,\qquad J_r=\begin{bmatrix}A^{-1}(r)&0\\0&R\end{bmatrix}J_b$$
이다(식 5.25). 이 장에서 $\det A(r)=2(1-\cos\alpha)/\alpha^2$을 수치로 확인했다(2.8.5 ③). 이 값은 $\alpha\in[0,\pi]$에서 $4/\pi^2\approx0.405$ 이상이므로 $A$는 이 구간에서 정칙이고 $\alpha=2\pi$에서 0이 된다.
2.8.3.6 자코비안의 시간 미분과 가속도 수준 기구학
자코비안의 시간 미분은 관절 속도에 선형이며 공간 자코비안은 리 괄호로 닫힌 식을 가진다. $\dot P_iP_i^{-1}=[V_i]$로 두면 $V_i=\sum_{j<i}J_{s,j}\dot q_j$는 $P_i$의 공간 트위스트이고, $\tfrac{d}{dt}\mathrm{Ad}_{P}=\mathrm{ad}_{\dot PP^{-1}}\mathrm{Ad}_{P}$이므로
$$\dot J_{s,i}=\mathrm{ad}_{V_i}J_{s,i}=\sum_{j<i}\dot q_j\,\bigl[J_{s,j},\,J_{s,i}\bigr],\qquad \dot J_{s,1}=0$$
이다($\mathrm{ad}_V$는 1.10의 정의). $V_i$를 누적하면 $O(n)$에 계산된다. 엔드이펙터 트위스트의 시간 미분은
$$\dot V_s=J_s\ddot q+\dot J_s\dot q,\qquad \ddot q=J^{\dagger}\bigl(\dot V_s-\dot J_s\dot q\bigr)$$
이다. 둘째 식은 작업공간 가속도 지령을 관절 가속도로 바꾸는 가속도 수준 역기구학이며 $\dot J\dot q$ 항이 속도의 제곱에 비례하는 항이다(작업공간 제어에서의 사용은 12.5, 질량행렬과 코리올리항은 3.4). 물체·위치 자코비안의 시간 미분은 다음과 같다.
$$\dot J_b=\mathrm{Ad}_{T^{-1}}\dot J_s-\mathrm{ad}_{V_b}J_b,\qquad \dot J_p=L(p)\,\dot J_s+\begin{bmatrix}0&0\\-[\dot p]_\times&0\end{bmatrix}J_s.$$
첫째 식은 $\tfrac{d}{dt}\mathrm{Ad}_{T^{-1}}=-\mathrm{ad}_{V_b}\mathrm{Ad}_{T^{-1}}$($T^{-1}$의 공간 트위스트가 $-V_b$이다)에서, 둘째 식은 $\dot L=\begin{bmatrix}0&0\\-[\dot p]_\times&0\end{bmatrix}$에서 나온다. 성분 형태로는 $\dot J=\sum_k(\partial J/\partial q_k)\dot q_k$이며, Robotics Toolbox의 jacob0_dot 문서 문자열은 이를 헤시안 텐서와 관절 속도의 모드-3 곱으로 계산한다고 적는다. 세 식 모두 이 장에서 중심 차분과 대조했다(2.8.5 ③).
2.8.3.7 수치 미분과 해석적 미분
유한 차분 자코비안은 간격 $h$에 최적점이 있고, 지수곱의 해석적 자코비안은 기계 정밀도에 이른다. 전방 차분의 오차는 절단 오차 $\propto h$와 반올림 오차 $\propto\varepsilon/h$의 합이고($\varepsilon\approx1.1\times10^{-16}$은 배정밀도 단위 반올림 오차), 중심 차분은 $\propto h^2$과 $\propto\varepsilon/h$의 합이다. 최적 간격은 각각 $h\sim\varepsilon^{1/2}\approx10^{-8}$, $h\sim\varepsilon^{1/3}\approx5\times10^{-6}$ 근처이고 달성 가능한 오차는 $\varepsilon^{1/2}\approx10^{-8}$, $\varepsilon^{2/3}\approx2\times10^{-11}$ 수준이다(2.8.5 ⑤에서 측정). 자동 미분(1.18·3.6)은 절단 오차가 없다.
2.8.4 알고리즘
공간 자코비안 J_s(q):
P ← I
i = 1…n 에 대해:
J_s[:, i] ← Ad(P) S_i
P ← P · exp([S_i] q_i)
T ← P · M
물체 자코비안: J_b ← Ad(T⁻¹) J_s
위치 자코비안: p ← T 의 이동 벡터
J_p[:, i] ← (ω_i, v_i + ω_i × p) (J_s[:, i] = (ω_i, v_i))
해석 자코비안: (φ, θ, ψ) ← R 의 ZYX 각
J_a[:, i] ← (E(θ, ψ)⁻¹ ω_i, v_i + ω_i × p)
시간 미분: V ← 0
i = 1…n 에 대해:
dJ_s[:, i] ← ad(V) J_s[:, i]
V ← V + q̇_i J_s[:, i]
비용은 $n$개의 $4\times4$ 곱과 $6\times6$ 수반 적용으로 $O(n)$이다. 시간 미분도 $V$를 누적하면 $O(n)$이다.
2.8.5 풀이 예제 — 2R 팔의 손계산, UR5의 속도 표현, 200쌍 검증, 차분 간격, 짐벌 특이점
결론부터 적으면 다음과 같다. ① 2R 평면 팔의 지수곱 자코비안이 닫힌 식과 $2\times10^{-16}$ 안에서 같다. ② UR5의 한 형상에서 같은 $\dot q$가 공간·물체·위치·해석 자코비안으로 서로 다른 여섯 성분 벡터가 되며 $J_s$와 $J_p$의 $\lvert\det\rvert$는 같고 최소 특이값은 $0.2142$ 대 $0.2128$이다. ③ UR5(6R)와 Franka Research 3(7R)에서 무작위 200쌍의 모든 식이 중심 차분과 $1.1\times10^{-9}$ 안에서 일치하고 식 자체의 항등식은 $10^{-15}$ 수준이다. ④ $J_b$와 $J_p$의 특이값은 $3\times10^{-15}$ 안에서 같고 $\sigma_{\min}(J_s)/\sigma_{\min}(J_p)$는 UR5에서 $0.720\sim1.368$이다. ⑤ 유한 차분의 오차는 전방 $9\times10^{-9}$($h=10^{-8}$), 중심 $3.5\times10^{-11}$($h=10^{-5}$)이 최소이다. ⑥ ZYX 해석 자코비안의 $E^{-1}$ 최대 성분은 $\pi/2-\theta$가 $0.63$에서 $6.3\times10^{-7}$ rad으로 줄 때 $1.6$에서 $1.5\times10^{6}$으로 커진다. ⑦ Modern Robotics·Pinocchio·Robotics Toolbox와는 자코비안이 $1.3\times10^{-11}$ 안, 시간 미분이 $1.6\times10^{-11}$ 안에서 같다.
구현. ad·jac_space·jac_body·cross·to_p·jac_point·jac_dot·twist·jac_dot_body·jac_dot_point·euler_zyx·e_zyx·jac_analytic. 실험과 그림은 스크립트에 있다. 1.1의 svd·solve_lu, 1.7의 log_so3·log_se3, 2.4의 exp_screw·adjoint·fk_space를 사용한다.
| 항목 | 값 |
|---|---|
| 입력 1 | 2R 평면 팔: $l_1=0.4$ m, $l_2=0.3$ m, 홈 자세 $M$은 $x$축으로 $l_1+l_2$ 이동, 스크루 $S_1=(0,0,1;0,0,0)$, $S_2=(0,0,1;0,-l_1,0)$. 손계산 형상 $q=(30^\circ,60^\circ)$, $\dot q=(1,0.5)$ rad/s. 닫힌 식과의 비교는 $q_1,q_2\in U[-3,3]$ 200개 |
| 입력 2 | UR5(UR 문서의 표준 DH 표에서 환산한 지수곱 입력, 2.3): $q=(0.4,-1.2,1.5,-0.6,1.1,0.3)$, $\dot q=(0.7,-0.4,0.9,0.5,-0.8,0.6)$ |
| 입력 3 | 검증: UR5와 Franka Research 3(2.4의 Craig 관례 DH 표에서 만든 지수곱 입력)에서 $q\in U[-2.5,2.5]^n$, $\dot q,\ddot q\in U[-1,1]^n$ 200쌍(시드 51), 중심 차분 간격 $h=10^{-6}$ |
| 입력 4 | 차분 간격 실험: 입력 2의 형상·속도, $h=10^{-k}$($k=0,\dots,12$), 전방 차분 $(T(q+h\dot q)T(q)^{-1})$의 로그$/h$와 중심 차분 |
| 입력 5 | 짐벌 실험: $\psi=0.3$ rad, $\theta=\pi/2-10^{-0.2-0.25k}$($k=0,\dots,24$)에서 $E^{-1}$의 최대 성분 |
| 입력 6 | 라이브러리 대조: UR5, $q\in U[-2.5,2.5]^6$, $\dot q\in U[-1,1]^6$ 200쌍(시드 511, 위 검증과 별개의 난수) |
from math import sin, cos, atan2, asin
def ad(V):
"""ad_V = [[[w]x, 0], [[v]x, [w]x]], 성분 순서 (w, v)"""
W, X = hat(V[:3]), hat(V[3:])
return ([W[i] + [0.0] * 3 for i in range(3)]
+ [X[i] + W[i] for i in range(3)])
def jac_space(S, q):
"""공간 자코비안: 열 i = Ad_{P_i} S_i"""
cols, P = [], eye4()
for s, x in zip(S, q):
cols.append(mv(adjoint(P), s))
P = mul(P, exp_screw(s, x))
return cols
def jac_body(S, M, q):
"""물체 자코비안 J_b = Ad_{T^-1} J_s (열 목록)"""
A = adjoint(inv_T(fk_space(S, M, q)))
return [mv(A, c) for c in jac_space(S, 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 to_p(c, p):
"""트위스트 열 (w, v) -> (w, v + w x p)"""
wp = cross(c[:3], p)
return c[:3] + [x + y for x, y in zip(c[3:], wp)]
def jac_point(S, M, q):
"""위치 자코비안: (w_s, pdot) 열. pdot = v_s + w_s x p"""
T = fk_space(S, M, q)
p = [T[i][3] for i in range(3)]
return [to_p(c, p) for c in jac_space(S, q)]
def jac_dot(S, q, qd):
"""dJ_i/dt = ad(V_i) J_i, V_i = sum_{j<i} qd_j J_j"""
J = jac_space(S, q)
out, V = [], [0.0] * 6
for i in range(len(S)):
out.append(mv(ad(V), J[i]))
V = [a + qd[i] * b for a, b in zip(V, J[i])]
return out
def twist(J, qd):
return [sum(c[i] * x for c, x in zip(J, qd))
for i in range(6)]
def jac_dot_body(S, M, q, qd):
"""dJ_b = Ad_{T^-1} dJ_s - ad(V_b) J_b"""
A = adjoint(inv_T(fk_space(S, M, q)))
Jb = jac_body(S, M, q)
ab = ad(twist(Jb, qd))
return [[x - y for x, y in zip(mv(A, d), mv(ab, c))]
for d, c in zip(jac_dot(S, q, qd), Jb)]
def jac_dot_point(S, M, q, qd):
"""dJ_p: 열 (dw, dv + dw x p + w x pdot)"""
T = fk_space(S, M, q)
p = [T[i][3] for i in range(3)]
pd = twist(jac_point(S, M, q), qd)[3:]
out = []
for d, c in zip(jac_dot(S, q, qd), jac_space(S, q)):
d = to_p(d, p)
out.append(d[:3] + [x + y for x, y in
zip(d[3:], cross(c[:3], pd))])
return out
def euler_zyx(R):
"""R = Rz(ps) Ry(th) Rx(ph) -> (ph, th, ps)"""
return (atan2(R[2][1], R[2][2]), -asin(R[2][0]),
atan2(R[1][0], R[0][0]))
def e_zyx(th, ps):
"""w_s = E (ph', th', ps'), det E = cos(th)"""
return [[cos(ps) * cos(th), -sin(ps), 0.0],
[sin(ps) * cos(th), cos(ps), 0.0],
[-sin(th), 0.0, 1.0]]
def jac_analytic(S, M, q):
"""해석 자코비안 열: (E^-1 w_s, pdot)"""
T = fk_space(S, M, q)
ph, th, ps = euler_zyx([r[:3] for r in T[:3]])
E = e_zyx(th, ps)
out = []
for c in jac_point(S, M, q):
out.append(solve_lu(E, c[:3])[0] + c[3:])
return out
① 2R 평면 팔의 손계산. $J_{s,1}=S_1$이고, 둘째 관절 축이 점 $(l_1c_1,\ l_1s_1)$을 지나므로 $J_{s,2}=\mathrm{Ad}_{e^{[S_1]q_1}}S_2=(0,0,1;\ l_1s_1,\ -l_1c_1,\ 0)$이다. 엔드이펙터 위치는 $p=(l_1c_1+l_2c_{12},\ l_1s_1+l_2s_{12},\ 0)$이고 $q=(30^\circ,60^\circ)$에서 $p=(0.3464,\ 0.5000)$ m이다. 위치 자코비안의 선형 부분은 $v_s+\omega\times p$이므로 열 1은 $(-p_y,\ p_x)=(-0.5000,\ 0.3464)$, 열 2는 $(-l_2s_{12},\ l_2c_{12})=(-0.3,\ 0)$이다. $\dot q=(1,0.5)$이면 $\dot p=(-0.65,\ 0.3464)$ m/s이다. 시간 미분은 $\dot J_{s,1}=0$, $\dot J_{s,2}=\dot q_1\,(0,0,0;\ l_1c_1,\ l_1s_1,\ 0)=(0,0,0;\ 0.3464,\ 0.2,\ 0)$이다(리 괄호 $[S_1\text{의 열},J_{s,2}]$의 선형 부분). $q_1,q_2$를 $[-3,3]$에서 무작위로 200개 뽑아 $J_p$·$J_{s,2}$·$\dot J_s$를 닫힌 식과 비교하면 최대 차이가 각각 $2.2\times10^{-16}$·$5.6\times10^{-17}$·$5.6\times10^{-17}$이다.
② UR5의 한 형상에서 속도의 표현. 입력 2의 형상·속도에서 같은 $\dot q$가 만드는 엔드이펙터 속도이다.
| 속도 표현(UR5, $q=(0.4,-1.2,1.5,-0.6,1.1,0.3)$, $\dot q=(0.7,-0.4,0.9,0.5,-0.8,0.6)$) | 값 |
|---|---|
| 공간 트위스트 $V_s=J_s\dot q$ $(\omega_s;v_s)$ | (0.2426, -1.2786, 1.6223) ; (0.3466, 0.6209, 0.5245) |
| 물체 트위스트 $V_b=J_b\dot q$ $(\omega_b;v_b)$ | (1.1958, 1.1675, 1.2380) ; (0.5963, -0.2883, -0.1900) |
| 위치 자코비안 $J_p\dot q$ $(\omega_s;\dot p)$ | (0.2426, -1.2786, 1.6223) ; (0.5771, -0.2961, -0.2326) |
| 해석 자코비안 $J_a\dot q$ $(\dot\phi,\dot\theta,\dot\psi;\dot p)$ | (0.9686, -0.8820, 1.4729) ; (0.5771, -0.2961, -0.2326) |
| 가속도의 속도 항 $\dot J_s\dot q$ (각 ; 선) | (0.4037, -0.5023, -0.3388) ; (-0.0912, -0.2947, -0.1741) |
| $J_s$의 최대·최소 특이값 | 1.9434, 0.2142 |
| $J_p$(=$J_b$)의 최대·최소 특이값 | 1.9307, 0.2128 |
| $\lvert\det J_s\rvert$, $\lvert\det J_p\rvert$ | 0.08250, 0.08250 |
| 오일러 각 $(\phi,\theta,\psi)$ | (1.3010, -0.1549, -0.6386) |
$J_s$와 $J_p$는 각속도 $\omega_s$가 같고 선속도가 다르다. $v_s=(0.3466,\ 0.6209,\ 0.5245)$에 $\omega_s\times p$를 더하면 $\dot p=(0.5771,\ -0.2961,\ -0.2326)$이 된다(손계산으로 $\omega_s\times p\approx(0.230,\ -0.917,\ -0.757)$). 물체 자코비안은 같은 속도를 엔드이펙터 축으로 나타낸 값이어서 성분이 모두 다르다. 해석 자코비안은 $\omega_s$를 $E^{-1}$로 오일러각 속도로 바꾼 값이다. 이 형상에서 $\cos\theta=0.988$이므로 $E^{-1}$의 성분이 $1$ 근처이고, $\dot\psi=\omega_{s,z}+\sin\theta\,\dot\phi=1.6223+(-0.1543)(0.9686)=1.4729$가 표와 같다. $J_s$와 $J_p$의 $\lvert\det\rvert$는 모두 $0.08250$이고 최소 특이값은 $0.2142$ 대 $0.2128$로 다르다.
③ 검증. 무작위 200쌍에서 이 장의 식을 독립 계산과 대조했다. "중심 차분" 행은 $h=10^{-6}$의 중심 차분이어서 $10^{-10}$ 수준이 한계이고, 물체 스크루로 독립 계산한 $J_b$는 식 자체의 항등식이어서 $10^{-15}$이다.
| 검증 항목(관절 변수·속도 200쌍) | UR5 | FR3 |
|---|---|---|
| $J_s\dot q$ 대 공간 트위스트의 중심차분 | 4.4e-10 | 4.7e-10 |
| $J_b$: 물체 스크루의 지수곱 대 $\mathrm{Ad}_{T^{-1}}J_s$ | 6.7e-16 | 8.6e-16 |
| $J_p\dot q$ 대 위치의 중심차분 | 3.2e-10 | 3.6e-10 |
| $\dot J_s$ 대 $J_s$의 중심차분 | 5.2e-10 | 5.5e-10 |
| $\dot J_b=\mathrm{Ad}_{T^{-1}}\dot J_s-\mathrm{ad}_{V_b}J_b$ 대 $J_b$의 중심차분 | 5.6e-10 | 5.8e-10 |
| $\dot J_p$ 식 대 $J_p$의 중심차분 | 5.2e-10 | 5.5e-10 |
| $J_r\dot q$(지수 좌표, MR 식 5.25) 대 $\dot r$의 중심차분 | 6.8e-10 | 6.4e-10 |
| $\det A(r)$ 대 $2(1-\cos\alpha)/\alpha^2$($\alpha=\lVert r\rVert<2.8$) | 3.3e-16 | 2.2e-16 |
| $J_s\ddot q+\dot J_s\dot q$ 대 $J_s\dot q$의 시간 중심차분 | 4.4e-10 | 5.4e-10 |
| $J_a\dot q$ 대 오일러 각 속도의 중심차분($\lvert\cos\theta\rvert>0.2$) | 1.1e-09 | 1.1e-09 |
모든 행이 $1.1\times10^{-9}$ 이하이다. 시간 미분의 세 식($\dot J_s$·$\dot J_b$·$\dot J_p$)과 가속도 식 $J_s\ddot q+\dot J_s\dot q$가 $10^{-10}$ 수준에서 일치하여 리 괄호 식이 수치로 확인된다. 지수 좌표 해석 자코비안과 $\det A(r)$의 닫힌 식도 확인되었다. 오일러각 행은 $\lvert\cos\theta\rvert>0.2$인 형상만 사용했다.
④ 특이값 비교.
| 특이값 비교(관절 변수 200개) | UR5 | FR3 |
|---|---|---|
| $J_b$와 $J_p$의 특이값 최대 차이 | 3.11e-15 | 2.89e-15 |
| $\prod\sigma_i$: $J_s$와 $J_p$의 최대 상대 차이 | 5.02e-14 | 1.42e-14 |
| $\sigma_{\min}(J_s)/\sigma_{\min}(J_p)$의 최솟값 | 0.720 | 0.826 |
| $\sigma_{\min}(J_s)/\sigma_{\min}(J_p)$의 최댓값 | 1.368 | 1.053 |
$J_b$와 $J_p$의 특이값은 $3\times10^{-15}$ 안에서 같고, 세 자코비안의 $\prod\sigma_i=\sqrt{\det(JJ^\top)}$는 $5\times10^{-14}$ 안에서 같다. 반면 $J_s$의 최소 특이값은 $J_p$의 $0.72\sim1.37$배(UR5)이다. 공간 자코비안의 조작성·조건수는 기저 원점에 대한 값이므로 기구 특이점 판정에는 사용할 수 있지만 속도 이득의 크기 비교에는 $J_p$ 또는 $J_b$를 사용하는 편이 기저 좌표계 선택에 영향을 받지 않는다(2.9).
⑤ 유한 차분의 간격. UR5 입력 2의 형상에서 모든 관절이 움직이는 방향 $\dot q$로 $J_s\dot q$를 유한 차분하여 해석적 값과 비교한 최대 오차이다. 한 관절만 움직이면 지수곱 트위스트의 차분에 절단 오차가 없으므로 이 실험은 관절을 함께 움직인다.
전방 차분의 오차는 $h=10^{-1}$에서 $2.5\times10^{-2}$, $10^{-4}$에서 $2.5\times10^{-5}$로 $h$에 비례(절단 오차)하고 $h=10^{-8}$에서 최소 $9.1\times10^{-9}$에 이른 뒤 $10^{-9}$에서 $2.5\times10^{-7}$, $10^{-12}$에서 $1.7\times10^{-4}$로 커진다(반올림 오차). 중심 차분은 $h=10^{-1}$에서 $2.3\times10^{-3}$, $10^{-4}$에서 $2.3\times10^{-9}$로 $h^2$에 비례하고 $h=10^{-5}$에서 최소 $3.5\times10^{-11}$, $10^{-8}$에서 $1.5\times10^{-8}$, $10^{-12}$에서 $1.8\times10^{-4}$이다. 최소 위치와 값이 $\varepsilon^{1/2}$·$\varepsilon^{1/3}$ 모형의 예측($10^{-8}$·$10^{-5}$ 근처)과 같은 자릿수이다. 지수곱의 해석적 자코비안에는 간격 선택이 없고 식 자체의 항등식 오차는 $10^{-15}$ 수준이다(③).
⑥ 짐벌 특이점. ZYX 오일러각의 $E^{-1}$ 최대 성분과 짐벌 특이점까지의 거리 $\pi/2-\theta$이다($\psi=0.3$ rad).
$E^{-1}$의 최대 성분은 $\pi/2-\theta=0.63,\ 0.063,\ 6.3\times10^{-3},\ 6.3\times10^{-4},\ 6.3\times10^{-7}$ rad에서 $1.6,\ 15,\ 1.5\times10^{2},\ 1.5\times10^{3},\ 1.5\times10^{6}$이다. 닫힌 식에서 가장 큰 성분은 $\cos\psi/\cos\theta$이고 $\cos\theta=\sin(\pi/2-\theta)\approx\pi/2-\theta$이므로 계산값에 $\pi/2-\theta$를 곱한 값은 $\pi/2-\theta\le0.063$에서 $0.955\sim0.956$이다($\cos0.3=0.955$). $\omega_s$의 $x$ 성분 $1$ rad/s는 $\pi/2-\theta=6.3\times10^{-7}$ rad에서 $\dot\phi=\cos\psi/\cos\theta=1.5\times10^{6}$ rad/s가 된다. 위치 자코비안은 이 자세에서도 값이 변하지 않는다.
⑦ 라이브러리 대조(실행 2026-11-03). 같은 UR5 형상·속도 200쌍에서 modern_robotics 1.1.1의 JacobianSpace·JacobianBody, Pinocchio 4.1.0의 getFrameJacobian(ReferenceFrame 세 가지)·getFrameJacobianTimeVariation, Robotics Toolbox for Python 1.5.0의 jacob0·jacobe·jacob0_dot을 이 장의 값과 비교했다. 같은 UR5의 수정 DH 표(2.3)에서 만든 URDF를 Pinocchio에 사용했고 Robotics Toolbox에는 표준 DH 표를 입력했다. 스크립트는 robotics/fig-src/2.8-libcheck.py, 출력은 robotics/fig-src/data/2.8-libcheck-output.txt에 있다. Pinocchio와 Robotics Toolbox의 성분 순서 $(v,\omega)$는 이 책의 $(\omega,v)$로 재배열해 비교했다.
| 비교(UR5, 관절 변수·속도 200쌍) | 최대 차이 |
|---|---|
JacobianSpace와 $J_s$ | 6.1e-16 |
JacobianBody와 $J_b$ | 7.8e-16 |
Pinocchio WORLD와 $J_s$ | 1.3e-11 |
Pinocchio LOCAL과 $J_b$ | 1.3e-11 |
Pinocchio LOCAL_WORLD_ALIGNED와 $J_p$ | 1.3e-11 |
Pinocchio getFrameJacobianTimeVariation(WORLD)과 $\dot J_s$ | 1.6e-11 |
Pinocchio getFrameJacobianTimeVariation(LOCAL)과 $\dot J_b$ | 1.5e-11 |
Pinocchio getFrameJacobianTimeVariation(LOCAL_WORLD_ALIGNED)과 $\dot J_p$ | 1.6e-11 |
RTB jacob0와 $J_p$ | 6.9e-16 |
RTB jacobe와 $J_b$ | 6.7e-16 |
RTB jacob0_dot과 $\dot J_p$ | 8.9e-16 |
Pinocchio의 WORLD가 공간 자코비안, LOCAL이 물체 자코비안, LOCAL_WORLD_ALIGNED가 위치 자코비안과 같고 시간 미분도 세 기준 모두 같은 행렬이다. Robotics Toolbox의 jacob0는 위치 자코비안, jacobe는 물체 자코비안이고 jacob0_dot은 $\dot J_p$와 $10^{-15}$ 안에서 같다. Pinocchio와의 차이 $10^{-11}$은 URDF에 12자리로 기록한 링크 오프셋의 반올림에서 온 것으로 추정한다 (추정).
한계. 수치는 합성 형상과 무작위 속도의 결과이다. 로봇은 회전 관절만의 두 구조(UR5 6R, FR3 7R)이며 직동 관절 자코비안과 폐연쇄·병렬 구조(2.13·2.14), 이동 베이스를 포함한 자코비안(2.15)은 검증하지 않았다. 유한 차분 실험은 한 형상·한 방향이다. 계산 시간은 측정하지 않았다. 해석 자코비안은 ZYX 오일러각과 지수 좌표만 확인했다.
견해: 제어·계획 소프트웨어의 내부 표현은 위치 자코비안 $J_p$ 또는 물체 자코비안 $J_b$를 기본으로 두고 해석 자코비안은 오일러각을 입출력하는 경계에서만 사용하는 것을 기본으로 둔다고 본다. 근거는 이 장의 계산에서 $E^{-1}$의 성분이 $1/\cos\theta$로 커져 $\pi/2-\theta=6.3\times10^{-7}$ rad에서 $1.5\times10^6$에 이르는 반면 $J_p$는 자세 매개변수와 무관하고, $J_b$와 $J_p$의 특이값이 기저 좌표계 선택에 영향을 받지 않는다는 점이다. 자코비안을 모델 식별·보정 계산에 사용하는 응용에서는 열이 홈 자세 스크루만으로 결정되는 공간 자코비안이 유리할 수 있다.
2.8.6 설계 트레이드오프 — 어떤 자코비안으로 구현할 것인가
공개 자료에서 확인되는 선택은 네 가지이다.
- ① 공간 자코비안. 열이 홈 자세 스크루와 앞 관절의 지수곱으로 결정되어 좌표계 규칙이 필요 없고 영점 이동·보정·미분이 간단하다. 선속도 성분이 기저 원점에 놓인 점의 속도라서 속도 이득의 직관과 특이값이 기저 원점 위치에 의존한다.
- ② 물체 자코비안. 엔드이펙터 좌표계의 속도·렌치와 맞는다. 공구 좌표 지령, 외부 힘 센서의 렌치, 어드미턴스 제어에 알맞다. 기저 방향의 속도를 읽으려면 회전이 필요하다.
- ③ 위치(기하) 자코비안. 기저 축으로 나타낸 엔드이펙터 위치 속도와 각속도이며 라이브러리의 기본값이다. 트위스트가 아니어서 수반으로 좌표 변환할 수 없고(각속도는 공간 값, 선속도는 기준점의 값) 변환은 $L(p)$로 한다.
- ④ 해석 자코비안. 오일러각처럼 최소 좌표의 시간 미분을 직접 준다. 표현마다 $E$가 다르고 표현 특이점이 더해진다.
| 방식 | 출력 | 장점 | 한계 | 알맞은 경우 |
|---|---|---|---|---|
| ① $J_s$ | $(\omega_s,v_s)$ | 홈 자세 스크루만 필요, 미분·보정에 적합 | 선속도가 기저 원점의 점 속도, 특이값이 기저 원점에 의존 | 모델 식별·보정, 동역학 라이브러리 내부 |
| ② $J_b$ | $(\omega_b,v_b)$ | 공구 좌표·렌치와 일치, 기저 좌표계에 불변 | 기저 방향 해석에 회전 필요 | 공구 좌표 제어, 힘·어드미턴스 제어 |
| ③ $J_p$ | $(\omega_s,\dot p)$ | 직관적, 라이브러리 기본, 특이값이 기저 좌표계에 불변 | 트위스트가 아님 | 직교 속도 제어, 역기구학 |
| ④ $J_a$ | $(\dot\Gamma,\dot p)$ | 각 표현을 직접 | 표현 특이점, 표현마다 다름 | 각 입출력 경계 |
견해: 라이브러리를 함께 사용하는 프로젝트에서는 먼저 각 함수의 기준 좌표계와 성분 순서를 $(\omega,v)$·$(v,\omega)$ 중 어느 쪽인지까지 확인하고, 경계에서 한 번만 변환하는 것을 기본으로 둔다고 본다. 근거는 이 장의 대조에서 Pinocchio·Robotics Toolbox가 $(v,\omega)$이고 Modern Robotics가 $(\omega,v)$이며, 같은 이름 "geometric Jacobian"이 자료마다 다른 행렬을 가리켰다는 점이다.
2.8.7 응용 축 비교
| 응용 축 | 자코비안이 맡는 일 | 요구 | 관련 장 |
|---|---|---|---|
| 산업·제조 | 직교 속도 지령의 관절 속도 변환, TCP 속도 한계 계산 | 특이점 근처의 안정, 일정한 TCP 속도 | 2.9, 28.2 |
| 물류·이동 | 이동 매니퓰레이터의 팔·베이스 합성 속도 | 실시간, 연속성 | 2.15 |
| 도로 주행 | 해당하는 고유 요구 없음 | — | — |
| 서비스 | 가정용 7축 팔의 속도 제어, 여유자유도 | 영공간 활용, 부드러운 운동 | 2.11, 7.3 |
| 의료·헬스케어 | 도구 끝 속도와 원격 운동 중심 제약 | 정밀도, 특이점 회피 | 32.14 |
| 휴머노이드·범용 | 전신 제어의 다중 과제 자코비안 | 실시간 QP, 접촉 자코비안 | 12.7, 7.18 |
| 필드 | 해당하는 고유 요구 없음(이동·휴머노이드 행과 같음) | — | — |
| 국방·안보 | 원리 수준에서 해당하는 고유 요구 없음 | — | — |
이 표는 이 책의 정리이며 장별 요구는 다르다.
2.8.8 관련 규격·프로토콜
| 문서 | 발행 | 무엇을 정하나 | 상세 장 |
|---|---|---|---|
JacobianSpace·JacobianBody | modern_robotics 1.1.1(GitHub NxRLab/ModernRobotics, MIT) | 공간·물체 자코비안, 성분 순서 $(\omega,v)$ | 2.4 |
getFrameJacobian·getFrameJacobianTimeVariation | Pinocchio 4.1.0 | WORLD·LOCAL·LOCAL_WORLD_ALIGNED 기준의 자코비안과 시간 미분, 성분 순서 $(v,\omega)$ | 3.6 |
jacob0·jacobe·jacob0_analytical·jacob0_dot | Robotics Toolbox for Python 1.5.0 | 위치·물체·해석 자코비안과 시간 미분 | 2.7 |
ChainJntToJacSolver::JntToJac | KDL(chainjnttojacsolver.hpp 주석) | 기저 좌표계, 기준점은 엔드이펙터 | 2.7 |
| 수학 표기·기호표 | 이 책 | 트위스트 $(\omega,v)$, 렌치 $(m,f)$ | A.2 |
2.8.9 관련 규제·인증 요구와의 연결
자코비안의 계산 방식 자체를 규정하는 법령·인증 요건은 확인하지 못했다. 산업 로봇 안전 표준의 속도 제한·감시 기능은 TCP의 직교 속도 한도를 관절 속도에서 계산하며 이 장의 위치 자코비안 $J_p$가 그 입력이다(27.10). 이 장은 규정의 조항을 확인하지 않았다 (확인 필요).
2.8.10 한계·유의점·미해결
- 이름의 불일치. "기하 자코비안"은 자료마다 공간·물체 형태 또는 혼성 형태를 가리킨다. 라이브러리를 섞어 사용할 때 기준 좌표계·성분 순서를 확인해야 한다.
- 기구 특이점과 표현 특이점. 계수가 줄어드는 기구 특이점은 표현에 무관하고, 짐벌 특이점은 해석 자코비안에만 있다.
- 공간 자코비안의 특이값. 기저 원점에 의존하므로 조작성 비교에는 $J_p$·$J_b$를 사용한다(2.9).
- 시간 미분의 정의. 이 장의 $\dot V_s$는 6차원 벡터 $V_s$의 시간 미분이다. 공간 벡터 대수의 가속도 정의는 항이 다를 수 있으므로 라이브러리마다 확인한다(3.1·3.6)
(확인 필요). - 수치 미분. 최적 간격은 형상과 스케일에 의존한다. 해석적 식을 사용하는 편이 안전하다.
- 검증 범위. 회전 관절만의 두 로봇이다. 직동·구면 관절, 폐연쇄, 이동 베이스는 다른 장에서 다룬다.
2.8.11 체크포인트·연구 질문·출처
체크포인트:
- $V_b=\mathrm{Ad}_{T^{-1}}V_s$에서 $J_b=\mathrm{Ad}_{T^{-1}}J_s$를 유도하라.
- $J_p=L(p)J_s$에서 $\det L=1$이므로 보존되는 성질(계수, $\lvert\det\rvert$)과 보존되지 않는 성질(특이값)을 구분하고 이유를 설명하라.
- ZYX 오일러각의 $E^{-1}$ 성분이 $\theta\to\pi/2$에서 $1/\cos\theta$로 커지는 것을 보이고, $J_p$가 정칙인데 $J_a$가 발산하는 이유를 설명하라.
- $\tfrac{d}{dt}\mathrm{Ad}_P=\mathrm{ad}_{\dot PP^{-1}}\mathrm{Ad}_P$에서 $\dot J_{s,i}=\mathrm{ad}_{V_i}J_{s,i}$를 유도하라.
- 전방 차분의 최적 간격이 $\sqrt\varepsilon$ 근처인 이유를 오차 모형으로 설명하라.
연구 질문:
- 자동 미분(1.18·3.6)과 이 장의 리 괄호 식은 시간 미분의 비용과 정확도에서 어떻게 비교되는가?
- 폐연쇄·병렬 기구(2.13·2.14)에서 공간 자코비안에 대응하는 닫힌 식과 그 시간 미분은 어떻게 되는가?
1차 출처(조회 2026-11-03).
- K. M. Lynch, F. C. Park, Modern Robotics, Cambridge University Press, 2017(ISBN 9781107156302). 사전 인쇄본 2017-05-03판의 5.1절을 읽었다.
- D. E. Whitney, "Resolved motion rate control of manipulators and human prostheses," IEEE Transactions on Man-Machine Systems 10(2), 47–53, 1969, doi:10.1109/tmms.1969.299896 — 서지만 확인.
- D. E. Orin, W. W. Schrader, "Efficient computation of the Jacobian for robot manipulators," The International Journal of Robotics Research 3(4), 66–75, 1984, doi:10.1177/027836498400300404 — 서지만 확인.
- F. C. Park, "Computational aspects of the product-of-exponentials formula for robot kinematics," IEEE Transactions on Automatic Control 39(3), 643–647, 1994, doi:10.1109/9.280779 — 서지만 확인.
- Pinocchio 4.1.0(문서 문자열), Robotics Toolbox for Python 1.5.0(문서 문자열),
modern_robotics1.1.1, KDLchainjnttojacsolver.hpp(GitHub 주 가지, 조회 2026-11-03).
다음 장. 2.9는 특이점과 조작성(조작성 타원체·조건수·특이점 회피)을 다룬다. 이 장의 $J_p$·$J_b$의 계수와 특이값이 그 입력이다.