AEGLOSLAB 로봇공학 전서(全書)

제2부 기구학

2.17 기구학 보정: 오차 모델·파라미터 식별·레이저 트래커·CMM 측정·절대 정밀도

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

이 장은 로봇의 공칭 기구학 모델과 실제 로봇 사이의 차이를 측정으로 찾아내 모델을 고치는 기구학 보정(캘리브레이션)을 다룬다. 산업용 로봇은 같은 점으로 되돌아오는 정밀도(반복 정밀도)가 높아도 지령한 점에 도달하는 정확도(절대 정확도)는 그보다 훨씬 낮을 수 있고, 차이의 상당 부분은 조립·가공 공차에서 오는 기하 오차이다. 이 장은 오차 모델과 식별 자코비안의 닫힌 식, 식별 가능한 매개변수의 수와 영공간, 레이저 트래커 같은 외부 측정에서 감쇠 최소제곱으로 매개변수를 식별하는 절차, 측정 자세의 수와 선택, 보정 후 보상, 자중에 의한 관절 변형처럼 기하 모델이 담지 못하는 오차가 남기는 한계를 Franka Research 3의 수정 DH 모형에서 계산으로 확인한다. 성능 시험의 표준 지표는 27.3, 정밀도 설계는 4.6, 센서와 눈-손 보정은 6.21·6.22, 동역학 매개변수 식별은 3.7, 출하 보정은 42.10와 이어진다.

배우는 것:

  • 오차의 원천 — 기하 오차(영점·링크 치수·축 정렬)와 비기하 오차(컴플라이언스·전달 오차·열), 반복 정밀도와 절대 정확도.
  • 오차 모델과 식별 자코비안 — 기본 변환 사슬, 매개변수에 대한 TCP 위치·자세의 미분을 축과 점에서 구하는 닫힌 식.
  • 식별 가능성 — 자코비안의 계수, 영공간(구조적 중복), 위치만 측정할 때와 자세까지 측정할 때의 차이.
  • 식별과 검증 — 감쇠 최소제곱(LM), 독립 자세에서의 예측 오차, 측정 자세 수의 영향, 자세 선택.
  • 보상 — 보정 모형으로 역기구학을 풀어 목표에 도달, AP·RP 지표.
  • 기하 보정의 한계 — 컴플라이언스가 있을 때 기하 보정만 한 모형과 컴플라이언스 매개변수를 더한 모형.

선수 지식: 1.1(SVD), 1.7(리 군), 2.3(DH 관례), 2.4(지수곱 공식), 2.6(감쇠 최소제곱·LM), 2.8(자코비안), 2.9(특이점).

특히 중요한 독자: 로봇의 절대 정확도를 높여야 하는 설치·시운전 엔지니어, 오프라인 프로그래밍과 비전·트래커 시스템을 통합하는 개발자, 기구 오차 식별을 처음 배우는 연구자.

출처 방침. 기준 시점은 2026-11-03이다. 직접 읽은 자료: Franka Research 3 공식 문서의 DH 표와 관절 한계(2.4·2.6에서 읽은 것)와 SciPy·Robotics Toolbox의 문서·실행 결과이다. 오차 모델·식별 자코비안·식별 가능성·최소제곱 예측 오차식은 이 장이 기하와 최소제곱의 정의에서 직접 유도하고 계산으로 확인했다. 서지만 확인한 것(본문은 읽지 못했다): Hayati·Mirmirani(1985, 절대 위치 정확도 개선), Okamura·Park(1996, 지수곱 공식을 사용한 기구학 보정), Borm·Meng(1991, 관측 척도에 기반한 최적 측정 자세), Nahvi·Hollerbach(1996, 잡음 증폭 지표), Sun·Hollerbach(2008, 관측 지표 선택), Nubiola·Bonev(2013, 레이저 트래커를 사용한 산업용 로봇의 절대 보정; 2014, 신축식 볼바 하나로 하는 절대 보정). 이들이 무엇을 보였는지에 관한 서술은 제목에서 알 수 있는 범위로 한정했고, 그 논문들의 오차 크기·정확도 수치는 인용하지 않았다. ISO 9283의 정의는 원문을 읽지 못했다 (확인 필요). 오차 분포·잡음·강성·하중은 모두 이 장이 정한 예시이며 어떤 제품·장비의 사양이 아니다. 수치는 모두 이 장의 순수 파이썬 계산(모의)이고 실측이 아니다.

2.17.2 개념 — 반복은 잘하지만 목표에는 어긋난 로봇

결론부터 적으면 다음과 같다. 로봇 컨트롤러는 설계 치수(공칭 모델)로 순기구학과 역기구학을 푼다. 실제 로봇은 링크 길이·관절 영점·축의 직교도가 공칭과 조금씩 달라서 같은 관절각을 지령하면 같은 점에 되돌아오지만(반복 정밀도) 그 점이 공칭 모델이 예측한 점과 수 mm 어긋난다(절대 정확도). 이 어긋남은 관절각에 따라 매끄럽게 변하는 체계적 오차이므로 모델에 오차 매개변수를 넣고 외부 측정 장비(레이저 트래커, 좌표측정기, 카메라, 터치 프로브 등)로 실제 TCP 위치를 재서 매개변수를 최소제곱으로 식별하면 줄일 수 있다. 식별한 모형으로 목표를 다시 역기구학으로 풀어 관절 지령을 만드는 것이 보상이다.

0 2 4 6 기저 위치 3.3 기저 자세 6.5 관절 θ 오프셋 1.8 관절 d 0.7 관절 a 0.6 관절 α 1.1 TCP 위치 1.5 전체 7.8 TCP 위치 오차 RMS [mm]
오차 원천별 TCP 위치 오차 RMS(진짜 매개변수 20회 추첨 평균, 자세 200개). 분포는 예시 가정(기저 위치 $2$ mm·자세 $0.29^\circ$, 관절 $\Delta\theta$ $0.1^\circ$, $\Delta d$·$\Delta a$ $0.3$ mm, $\Delta\alpha$ $0.05^\circ$, TCP $1$ mm)이다. 위 일곱 막대는 그 원천 하나만 있을 때의 값이고 마지막 막대는 모두 있을 때이다.

이 장의 계산 결과를 미리 적으면 다음과 같다. ① 기저 6·관절 수정 DH 4×7·TCP 3으로 이루어진 37개 오차 매개변수에서 위치만 측정하면 29개, 자세까지 측정하면 32개가 식별되고, 영공간 8개·5개는 구조적 중복(기저와 관절 1, 관절 7 거리와 TCP 높이)과 손목의 가려진 방향이다. ② 자세 100개·잡음 $0.02$ mm의 위치 측정에서 독립 자세 200개의 TCP 예측 오차 RMS가 $7.90$ mm에서 $0.0122$ mm로 줄고, 보정 모형으로 역기구학을 풀어 도달시킨 오차는 $8.11$ mm에서 $0.0120$ mm로 줄었다. ③ 예측 오차는 측정 자세 수 $N$이 식별 가능 매개변수 수 $r=29$를 3으로 나눈 값 근처(8·10개)이면 $1.47$·$0.73$ mm로 크고, $N\ge50$에서 최소제곱 예측식 $\sigma\sqrt{r/N}$의 $17\,\%$ 안에서 맞는다. ④ 같은 자세 수에서 D-최적으로 고른 자세는 무작위보다 조건수가 $1.9\sim2.4$배 낮고 예측 오차가 작다($N=12$에서 $0.048$ 대 중앙값 $0.090$ mm). ⑤ 자중 컴플라이언스가 진짜 로봇에 있으면 기하 보정만 한 모형은 $0.27\sim0.62$ mm에서 멈추고 하중이 보정 때와 다르면 더 틀리며, 컴플라이언스 매개변수를 더하면 $0.012\sim0.014$ mm이다. ⑥ 이 장의 순기구학이 Robotics Toolbox의 수정 DH 로봇과 $6.7\times10^{-16}$ 안에서, LM이 SciPy의 해와 TCP 예측 $2.2\times10^{-9}$ m 안에서 같다.

2.17.3 원리

2.17.3.1 오차의 원천과 반복 정밀도·절대 정확도

로봇의 TCP 위치 오차는 두 종류로 나눈다. 체계적 오차는 같은 관절각에서 같은 값으로 되풀이되고 관절각의 매끄러운 함수이다(기하 오차, 컴플라이언스, 열 변형 등). 무작위 오차는 되풀이할 때마다 달라지고 반복 정밀도의 한계를 정한다. ISO 9283에서 알려진 정의로 위치 정확도 $AP$는 지령 위치와 같은 지령을 여러 번 반복해 얻은 도달 위치들의 무게중심 사이의 거리이고, 반복 정밀도 $RP=\bar l+3S_l$은 무게중심에서 각 도달 위치까지 거리 $l_j$의 평균과 표본 표준편차로 정한다(원문은 읽지 못했다 (확인 필요)). 보정은 체계적 오차를 줄이는 일이며 반복 정밀도는 줄이지 못한다. 체계적 오차 중 기하 오차는 관절각에 독립인 상수(링크 치수·영점·축 정렬)이므로 소수의 매개변수로 표현되고, 컴플라이언스는 하중과 자세에 따라 달라지므로 기하 모델만으로는 담지 못한다.

2.17.3.2 오차 모델 — 기본 변환 사슬

공칭 기구학 모델의 모든 치수가 오차 매개변수가 되도록 사슬을 기본 변환(한 축의 회전 또는 이동)의 곱으로 적는다. 이 장의 모형은 다음 순서이다(2.3의 수정 DH와 같은 순서 $R_x(\alpha)T_x(a)T_z(d)R_z(\theta)$).

$$T(x,q)=\underbrace{T_x(b_1)T_y(b_2)T_z(b_3)R_z(b_4)R_y(b_5)R_x(b_6)}_{\text{기저(트래커 기준 틀 대비)}}\ \prod_{i=1}^{7}\bigl[R_x(\alpha_i+\Delta\alpha_i)T_x(a_i+\Delta a_i)T_z(d_i+\Delta d_i)R_z(\theta_{0,i}+q_i+\Delta\theta_i)\bigr]\ T_z(0.107)\,T(t_0+\Delta t).$$

오차 매개변수는 기저 6, 관절당 $(\Delta\theta,\Delta d,\Delta a,\Delta\alpha)$ 4개씩 28, TCP 3으로 모두 37개이다. 기저 6개를 넣는 이유는 외부 측정 장비의 기준 틀이 로봇 기저와 일치하지 않기 때문이다. 수정 DH를 그대로 사용하는 대신 기본 변환 목록으로 쓴 이유는 인접 축이 평행에 가까울 때 DH 매개변수의 값이 불안정해지는 문제(2.3)를 피하고 모든 매개변수에 대한 미분을 같은 방식으로 구하기 위해서이다. 이 장이 정한 순서로 오차를 모델링하며 다른 관례는 매개변수의 뜻이 달라진다.

2.17.3.3 식별 자코비안 — 축과 점에서 얻는 닫힌 식

사슬 $T=E_1E_2\cdots E_m$에서 기본 변환 $E_k$가 매개변수 $x_k$를 가진다고 하자. 앞부분의 곱 $P_{k-1}$이 만드는 $E_k$ 직전의 좌표계에서 $E_k$의 축은 세계 좌표에서 방향 $w_k$이고 그 좌표계의 원점이 $o_k$이다. $x_k$를 조금 바꾸면 이후의 사슬 전체가 강체로 움직이므로 TCP 위치 $p$와 방향의 변화는 다음이다.

$$\text{회전 변환: }\ \frac{\partial p}{\partial x_k}=w_k\times(p-o_k),\ \ \frac{\partial\omega}{\partial x_k}=w_k;\qquad\text{이동 변환: }\ \frac{\partial p}{\partial x_k}=w_k,\ \ \frac{\partial\omega}{\partial x_k}=0.$$

여기서 $\omega$는 방향 오차를 $\delta R\,R^\top=[\delta\omega]_\times$로 표현한 좌표이다. 이 열은 2.8에서 구한 자코비안과 같은 구조이며, 관절 영점 오프셋 $\Delta\theta_i$의 열은 관절 $i$의 자코비안 열 $\partial p/\partial q_i$와 같다. 따라서 식별 자코비안 $J_{\mathrm{id}}$(위치 3행 + 회전 3행, 37열)는 순기구학을 한 번 훑으면서 각 변환의 $(w_k,o_k)$를 저장해 얻고 비용은 순기구학과 같은 차수이다. 자세 $i$의 측정에서 오차의 1차 모형은 $p_{\mathrm{측정}}-p_{\mathrm{모형}}\approx J_{\mathrm{id}}\,\delta x$이다.

2.17.3.4 식별 가능성 — 계수와 영공간

$J_{\mathrm{id}}$를 여러 자세에서 쌓은 행렬의 계수 $r$이 식별 가능한 매개변수 조합의 수이고, 영공간은 TCP 측정에 아무 영향도 주지 않는 매개변수 조합(중복)이다. 영공간의 매개변수 변화는 TCP를 움직이지 않으므로 보상에는 무해하지만 개별 매개변수 값은 의미가 없다. 이 장의 계산에서 구조적 중복 다섯 쌍은 기저 $x$ 이동과 관절 1의 $a_1$, 기저 $x$ 둘레 회전과 $\alpha_1$, 기저 $z$ 둘레 회전과 $\theta_1$, 기저 $z$ 이동과 $d_1$, 관절 7의 $d_7$과 TCP의 $z$ 위치이다(각 쌍은 같은 축의 회전 또는 이동). 위치만 측정하면 TCP 위치를 바꾸지 않는 손목 쪽의 세 방향이 더해진다(관절 6·7의 $\theta$ 오프셋·$\alpha_7$·$a_7$이 섞인 방향이며 자세를 측정하면 식별된다). 자코비안은 공칭 매개변수에서 계산했고 오차가 큰 매개변수에서는 영공간이 약간 달라질 수 있다.

2.17.3.5 식별 — 감쇠 최소제곱과 예측 오차

측정 위치에 독립 가우스 잡음 $\sigma$가 있다고 하고 비용을 $\sum_i\|(p_i^{\mathrm{측정}}-p(x,q_i))/\sigma\|^2$로 정한다. 감쇠 최소제곱(LM, 2.6)은 다음 갱신을 반복한다.

$$\bigl(J^\top J+\lambda\,\mathrm{diag}(J^\top J)\bigr)\,\delta x=J^\top r,\qquad x\leftarrow x+\delta x.$$

매개변수의 단위(rad·m)가 섞이므로 모두 $10^{-3}$ 단위로 척도를 맞추고, 비용이 줄면 $\lambda$를 3으로 나누고 늘면 5배 한다. 감쇠 항이 영공간 방향의 갱신을 막아 최소 노름 해를 준다. 선형 모형에서 최소제곱의 예측 오차는 다음처럼 나온다. 학습 자세와 같은 분포의 새 자세에서 TCP 예측 오차의 제곱 평균은 $\sigma^2\,\mathrm{tr}\!\bigl(J_t(J^\top J)^{-1}J_t^\top\bigr)\approx\sigma^2r/N$이므로 예측 오차 RMS는 $\sigma\sqrt{r/N}$이다($\sigma$는 한 축의 위치 잡음, $r$은 식별 가능한 매개변수 수, $N$은 측정 자세 수). 이 근사는 방정식 수 $3N$이 $r$보다 충분히 클 때 맞고 모형의 비선형성과 자세 분포의 차이로 오차가 있다.

2.17.3.6 측정 자세의 선택

같은 수의 측정이어도 자세에 따라 $J_{\mathrm{id}}$의 조건이 다르다. 관측 지표로 특이값의 곱·조건수·최소 특이값 같은 것이 제안된 것으로 알려져 있다(Borm·Meng 1991, Nahvi·Hollerbach 1996, Sun·Hollerbach 2008, 본문은 읽지 못했다). 이 장은 후보 풀에서 정보 행렬의 행렬식 $\det(J^\top J)$(식별 가능한 부분공간 위)을 가장 크게 하는 자세를 하나씩 고르는 탐욕 선택(D-최적)을 사용했다. 초기 정보 행렬은 정칙화로 $M=10^{-6}I$이다. 정보 행렬이 $M$이고 후보의 자코비안 블록이 $A$(3×$r$)이면 행렬식의 이득은 $\det(I+AM^{-1}A^\top)$이고 선택 후 $M^{-1}$은 우드버리 항등식으로 갱신한다. 실제 측정에서는 충돌·관절 한계·트래커의 가시선이 후보를 줄이며 이 장은 그 제약을 넣지 않았다.

2.17.3.7 비기하 오차와 컴플라이언스 매개변수

기하 모델에 없는 오차의 대표가 자중에 의한 관절 변형이다. 끝에 질량 $m$의 하중이 있으면 관절 $i$의 토크는 $\tau_i=m\,w_i\cdot\bigl((p-o_i)\times g\bigr)$이고(중력 $g$), 관절 컴플라이언스 $c_i$(강성의 역수)가 있으면 관절각이 $c_i\tau_i$만큼 변형된다. 이 장은 변형된 관절각 $q_i+c_i\tau_i$를 모형에 넣고 $c_i$를 식별 매개변수로 추가했다(매개변수 44개). 토크는 공칭 사슬에서 계산하고 하중 질량 $m$은 알려져 있다고 가정했다. 관절 1은 수직축이라 수직 하중의 토크가 0이고 관절 7의 축은 TCP를 지나므로 토크가 0이어서($|\tau_1|=0$, $|\tau_7|<10^{-15}$ N·m/kg) 두 컴플라이언스는 식별되지 않고 TCP에도 영향을 주지 않는다. 열 변형·전달 오차·백래시·마찰은 이 장의 모형에 없다.

2.17.3.8 보상

보정 모형 $\hat x$를 얻은 뒤에는 세 가지로 사용한다. ① 컨트롤러의 기구학 매개변수를 $\hat x$로 갱신한다(컨트롤러가 허용할 때). ② 오프라인으로 목표 TCP를 보정 모형의 역기구학으로 풀어 관절 지령을 만든다(이 장). ③ 외부 측정을 되먹임해 온라인으로 보정한다(6.22). 보상의 성능은 지령한 목표에서 진짜 로봇의 도달 오차 $\|p_{\mathrm{진짜}}(q_{\mathrm{지령}})-p_{\mathrm{목표}}\|$로 평가한다. 평가는 보정에 사용하지 않은 독립 자세에서 해야 하며 학습 자세에서의 잔차는 낙관적이다.

2.17.4 알고리즘

순기구학 + 식별 자코비안(x, q):
    기본 변환 목록 E를 만든다 (기저 6, 관절 4×7, 플랜지, TCP 3)
    각 변환에서 (종류, 축 방향 w = R[:, k], 원점 o)를 저장하고 R, p를 갱신
    마지막 p로: 회전 변환 열 = (w, w × (p − o)),  이동 변환 열 = (0, w)
LM 보정(자료 {q_i, p_i, R_i}, x0 = 0):
    반복:  A = Σ JᵀJ,  g = Σ Jᵀ r  (r = (측정 − 모형)/잡음)
            (A + λ diag A) dz = g;  x' = x + SC dz
            비용이 줄면 수락·λ/3, 아니면 λ·5
식별 가능성:  쌓은 J의 특이값 중 σ_i > 1e-8 σ_1 의 개수 r, 나머지가 영공간
D-최적 선택(풀 {A_c}, 정보 M⁻¹):  각 단계에서 det(I + A M⁻¹ Aᵀ)가 최대인 후보를 고르고 M⁻¹ 갱신
보상(목표 p*): 보정 모형의 위치 역기구학(DLS)으로 q 지령

2.17.5 풀이 예제 — 오차 원천, 식별 가능성, 보정, 자세 수, 컴플라이언스, 자세 선택

결론부터 적으면 다음과 같다. ① 예시 분포의 오차 원천 중 기저 자세($6.48$ mm RMS)와 기저 위치($3.33$ mm)가 가장 크고 모두 있을 때 $7.76$ mm이다(원천별 RMS의 제곱합의 제곱근 $7.79$ mm). ② 식별 가능 매개변수는 위치만 29개·위치+자세 32개이고 식별 자코비안이 중심 차분과 $2.5\times10^{-9}$ 안에서 같다. ③ 자세 100개의 보정에서 예측 오차 RMS가 $7.90\to0.0122$ mm(위치만)·$0.0098$ mm(위치+자세), 도달 오차가 $8.11\to0.0120$ mm이며 AP가 $5.59\to0.0138$ mm, RP는 $0.078$·$0.085$ mm로 같은 수준이다. ④ 측정 자세 수가 8·10개이면 학습 잔차가 0이고 예측 오차가 $1.47$·$0.73$ mm로 크며 $N\ge12$에서 급격히 줄어 $N=200$에서 $0.0080$ mm이다. ⑤ 컴플라이언스가 있으면 기하만 보정한 모형이 $0.27\sim0.62$ mm, 컴플라이언스를 더한 모형이 $0.012\sim0.014$ mm이다. ⑥ D-최적 선택이 $N=12$에서 조건수 $38.3$(무작위 중앙값 $93.0$)·예측 오차 $0.048$ mm(무작위 중앙값 $0.090$ mm)이다. ⑦ Robotics Toolbox·numpy·SciPy와 대조했다.

구현. elems·fk_jac(식별 자코비안)·system·calibrate. 아래 코드는 1.1의 matmul·solve_lu, 1.7의 log_so3, 2.4의 FR3 수정 DH 표를 사용한다. 진짜 매개변수 추첨, 잡음 있는 측정, 역기구학(ik_q), AP·RP, 컴플라이언스 확장, D-최적 선택, 그림은 스크립트에 있다.

항목값
입력 1로봇: Franka Research 3(7R, 수정 DH 표는 2.4, 플랜지 $d=0.107$ m), TCP 공칭 $(0,0,0.1)$ m(예시). 관절은 한계(2.6)의 중앙 $80\,\%$ 안의 균등 추첨
입력 2진짜 매개변수(예시 가정): 기저 위치 $\sigma=2$ mm·자세 $5$ mrad($0.29^\circ$), 관절 $\Delta\theta$ $1.7$ mrad($0.1^\circ$), $\Delta d$·$\Delta a$ $0.3$ mm, $\Delta\alpha$ $0.87$ mrad($0.05^\circ$), TCP $1$ mm. 오차 원천 표는 20회(시드 2000~2019), 보정 실험은 5회(시드 1000~1004) 추첨
입력 3측정(예시): 위치 한 축 잡음 $\sigma_p=0.02$ mm, 자세 한 축 잡음 $\sigma_\omega=1.7\times10^{-4}$ rad($0.01^\circ$). 독립 시험 자세 200개
입력 4보정: 자세 100개, 초기값 0(공칭), 위치만 또는 위치+자세. 측정 자세 수 시험은 $N=8\sim200$
입력 5보상·AP·RP: 시험 자세 30개의 진짜 TCP를 목표로 역기구학(관절 7개, 위치 3개, 시작은 그 자세). AP·RP는 10개 목표, 반복 30회, 관절 잡음 $3.5\times10^{-5}$ rad
입력 6컴플라이언스: 진짜 $c_i=(0.5\sim1.5)\times5\times10^{-5}$ rad/(N·m), 보정 하중 $2$ kg, 사용 하중 $0\cdot2\cdot4$ kg. 모형은 기하 37개 또는 기하+컴플라이언스 44개
입력 7자세 선택: 후보 풀 300개, D-최적 대 무작위(자세 수 12·15·20, 무작위 50회 = 진짜 매개변수 5 × 부분집합 10)
입력 8라이브러리 대조: 임의 매개변수·관절 200개, 식별 자코비안 3개 자세, 자세 60개의 특이값, 입력 4의 위치만 보정(진짜 매개변수 #0)
from math import sin, cos, sqrt

FR3 = rb47.FR3                  # 수정 DH (th0, d, a, al)
TOOL0 = [0.0, 0.0, 0.1]         # 공칭 TCP(플랜지 좌표, 예시)
NP, SC = 37, 1e-3               # 매개변수 수, 척도(rad·m)

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 rot(k, v):
    c, s = cos(v), sin(v)
    i, j = (k + 1) % 3, (k + 2) % 3
    R = [[float(a == b) for b in range(3)] for a in range(3)]
    R[i][i], R[i][j], R[j][i], R[j][j] = c, -s, s, c
    return R

def elems(x, q):
    """기본 변환 (종류, 축, 값, 매개변수 번호), -1은 상수"""
    E = [('T', 0, x[0], 0), ('T', 1, x[1], 1),
         ('T', 2, x[2], 2), ('R', 2, x[3], 3),
         ('R', 1, x[4], 4), ('R', 0, x[5], 5)]
    for i, (t0, d, a, al) in enumerate(FR3):
        b = 6 + 4 * i
        E += [('R', 0, al + x[b + 3], b + 3),
              ('T', 0, a + x[b + 2], b + 2),
              ('T', 2, d + x[b + 1], b + 1),
              ('R', 2, t0 + q[i] + x[b], b)]
    E.append(('T', 2, 0.107, -1))          # 플랜지
    return E + [('T', k, TOOL0[k] + x[34 + k], 34 + k)
                for k in range(3)]

def fk_jac(x, q, tau=None, jac=True):
    """끝 자세 (R, p)와 식별 자코비안 J (6 x len(x))
    행: 회전 3, 위치 3"""
    if len(x) > NP:                # 컴플라이언스: q += c tau
        q = [a + c * t for a, c, t in zip(q, x[NP:], tau)]
    R = [[1.0, 0, 0], [0, 1.0, 0], [0, 0, 1.0]]
    p, ax = [0.0, 0.0, 0.0], []
    for kind, k, v, idx in elems(x, q):
        w = [R[0][k], R[1][k], R[2][k]]
        ax.append((kind, w, list(p), idx))
        if kind == 'T':
            p = [p[i] + v * w[i] for i in range(3)]
        else:
            R = matmul(R, rot(k, v))
    if not jac:
        return R, p
    J = [[0.0] * len(x) for _ in range(6)]
    for kind, w, o, idx in ax:
        if idx < 0:
            continue
        if kind == 'R':
            r = [p[i] - o[i] for i in range(3)]
            col = w + cross(w, r)
        else:
            col = [0.0] * 3 + w
        for r in range(6):
            J[r][idx] = col[r]
    for i in range(len(x) - NP):   # dp/dc_i = tau_i dp/dq_i
        for r in range(6):
            J[r][NP + i] = J[r][6 + 4 * i] * tau[i]
    return (R, p), J

def system(x, data, sp, sw):
    """정규방정식 (A, g)와 비용 sum r^2 (가중 = 1/잡음)"""
    n = len(x)
    A = [[0.0] * n for _ in range(n)]
    g, cost = [0.0] * n, 0.0
    for q, pm, Rm, tau in data:
        (R, p), J = fk_jac(x, q, tau)
        rows = [([v * SC / sp for v in J[3 + i]],
                 (pm[i] - p[i]) / sp) for i in range(3)]
        if sw:
            Rt = [list(r) for r in zip(*R)]
            e = log_so3(matmul(Rm, Rt))
            rows += [([v * SC / sw for v in J[i]], e[i] / sw)
                     for i in range(3)]
        for row, r in rows:
            cost += r * r
            for a in range(n):
                ra = row[a]
                g[a] += ra * r
                Aa = A[a]
                for b in range(a, n):
                    Aa[b] += ra * row[b]
    for a in range(n):
        for b in range(a):
            A[a][b] = A[b][a]
    return A, g, cost

def calibrate(data, x0, sp=2e-5, sw=None, iters=25):
    """감쇠 최소제곱(LM, Marquardt). sw 없으면 위치만"""
    x, lam = list(x0), 1e-3
    A, g, c = system(x, data, sp, sw)
    for _ in range(iters):
        B = [r[:] for r in A]
        for j in range(len(x)):
            B[j][j] += lam * (A[j][j] + 1e-12)
        dz = solve_lu(B, g)[0]
        xn = [a + SC * d for a, d in zip(x, dz)]
        An, gn, cn = system(xn, data, sp, sw)
        if cn < c:
            done = c - cn < 1e-9 * c
            x, A, g, c, lam = xn, An, gn, cn, lam / 3
            if done:
                break
        else:
            lam *= 5
    return x, c

① 오차 원천.

오차 원천(진짜 매개변수 20회 추첨)TCP 위치 오차 RMS 평균 (mm)최대 (mm)
기저 위치3.335.91
기저 자세6.4811.18
관절 θ 오프셋1.803.06
관절 d0.711.22
관절 a0.641.11
관절 α1.091.96
TCP 위치1.492.30
전체7.7612.53

기저 자세 오차가 TCP 위치를 가장 크게 움직인다. 팔이 길어($\sim1$ m) 같은 각도 오차가 큰 변위가 되기 때문이다. 원천별 RMS의 제곱합의 제곱근($7.79$ mm)이 모두 있을 때의 값($7.76$ mm)과 가까워 원천들이 독립으로 추첨되므로 1차 근사에서 제곱합으로 더해진다. 위 분포는 이 장이 정한 예시이며 실제 로봇의 기하 오차 크기가 아니다. 기저 오차는 외부 측정 기준 틀을 로봇에 맞추는 방식에 따라 정해지고 보정은 기저를 함께 식별한다.

② 식별 가능성.

식별 자코비안(자세 60개, 공칭 매개변수)위치만 측정위치 + 자세 측정
식별 가능한 매개변수 수 (전체 37)2932
영공간 차원85
가장 작은 비영 특이값0.5463.185
가장 큰 영 특이값2.7e-152.8e-15
식별 자코비안 대 중심 차분(h=$10^{-7}$) 최대 차이2.5e-09 (위치 행)2.5e-09 (회전 행)

식별 가능한 매개변수는 위치만 측정할 때 29개, 자세까지 측정할 때 32개이다. 영공간 방향의 특이값이 $10^{-15}$ 수준이고 가장 작은 비영 특이값이 $0.55$·$3.2$여서 구분이 뚜렷하다. 영공간 5개(자세 측정)는 구조적 중복이다. 기저 $x$ 이동 ↔ $a_1$, 기저 $x$ 둘레 회전 ↔ $\alpha_1$, 기저 $z$ 둘레 회전 ↔ $\theta_1$, 기저 $z$ 이동 ↔ $d_1$, $d_7$ ↔ TCP $z$ 위치가 각각 같은 축의 변환이라 TCP에 같은 영향을 준다(영공간 벡터의 주성분이 이 쌍들이다). 위치만 측정하면 손목 쪽의 방향 3개가 더해지며 영공간 벡터에 관절 6·7의 $\theta$ 오프셋·$\alpha_7$·$a_7$이 나타난다. 이 개수와 영공간은 공칭 매개변수의 자코비안에서 구한 것이고 한 번의 자세 추첨(시드 7)의 결과이다.

③ 보정과 보상.

측정(자세 100개, 진짜 매개변수 5회)보정 전 예측 오차 RMS · 최대 (mm)보정 후 예측 오차 RMS · 최대 (mm)학습 잔차 RMS (mm)보상(역기구학) 후 도달 오차 RMS (mm): 보정 전 → 후
위치만 (0.02 mm)7.90 · 18.440.0122 · 0.03220.03308.11 → 0.0120
위치 + 자세 (0.02 mm, 0.01°)7.90 · 18.440.0098 · 0.02300.03418.11 → 0.0098

표의 최대는 진짜 매개변수 5회 중 가장 큰 값이다. 보정 후 독립 자세의 TCP 예측 오차 RMS가 $0.0122$ mm(위치만)·$0.0098$ mm(위치+자세)이다. 학습 잔차($0.033$ mm)가 측정 잡음의 3축 합($0.02\sqrt3=0.035$ mm)과 같은 수준이어서 모형이 잡음 수준까지 자료를 설명한다. 진짜 로봇이 모형의 족(族) 안에 있다는 가정에서의 결과이므로(아래 컴플라이언스 실험은 그 가정을 깨는 경우) 실제 로봇에서 같은 크기가 나온다는 뜻이 아니다.

도달 목표 10개, 반복 30회(관절 반복 잡음 $3.5\times10^{-5}$ rad)보정 전보정 후
위치 정확도 AP 평균 (mm)5.5900.0138
반복 정밀도 RP 평균 (mm)0.07800.0852

보정 전 위치 정확도 AP가 $5.59$ mm로 반복 정밀도 RP($0.078$ mm)의 70배 이상이다. 보정 후 AP($0.0138$ mm)는 RP($0.085$ mm)보다 작아져 남은 오차가 반복 정밀도 한계 안에 들어온다. RP는 보정으로 줄지 않는다(같은 목표라도 지령 관절각이 보정 전후로 다르고 반복 잡음이 새로 추첨되어 $0.078$과 $0.085$ mm로 같은 수준이다). AP·RP의 정의는 ISO 9283에서 알려진 형태를 따랐고 시험 자세·반복 횟수는 이 장의 예시이다 (확인 필요).

④ 측정 자세 수.

측정 자세 수 $N$잔여 자유도 $3N-29$학습 잔차 RMS (mm)독립 자세 예측 오차 RMS 평균 (mm)최대 (mm)예측식 $\sigma\sqrt{r/N}$ (mm)
8-50.00001.47072.9432—
1010.00000.73462.3165—
1270.01370.06590.08040.0311
15160.01850.04200.05390.0278
20310.02150.03440.04070.0241
30610.02810.02390.02940.0197
501210.03230.01770.01930.0152
1002710.03220.01180.01390.0108
2005710.03380.00800.00890.0076
8 10 20 50 100 200 0.01 0.1 1 측정 자세 수 N RMS (mm) 독립 자세 예측 오차 학습 잔차 예측식 σ√r/N
측정 자세 수 $N$에 따른 보정 모형의 독립 자세 예측 오차와 학습 잔차(위치만 측정, 잡음 $0.02$ mm, 진짜 매개변수 5회 평균)와 최소제곱 예측식 $\sigma\sqrt{r/N}$($r=29$). 학습 잔차는 $N\le10$에서 0이어서 그리지 않았고 예측식은 $N\ge12$에서 그렸다.

$N=8$·10에서는 방정식 수($24$·$30$)가 식별 가능 매개변수 수 $29$와 비슷하거나 작아서 학습 잔차가 0이고 예측 오차가 $1.47$·$0.73$ mm로 커진다(과적합). $N=12$에서 잔여 자유도 $7$이 생기며 예측 오차가 $0.066$ mm로 급감하고 $N$이 늘면서 학습 잔차는 잡음 수준($0.034$ mm)으로 오르고 예측 오차는 내린다. $N\ge50$에서 측정한 예측 오차가 예측식 $\sigma\sqrt{r/N}$의 $17\,\%$ 이내로 맞고($N=100$: $0.0118$ 대 $0.0108$ mm) $N=12\sim30$에서는 식이 $18\sim53\,\%$ 작게 예측한다(방정식 수가 적어 점근식이 낙관적이다). 방정식 수가 식별 가능 매개변수 수보다 충분히 커야 한다. 이 장의 시험에서 $N=20$이면 예측 오차가 $0.034$ mm로 $N=200$($0.008$ mm)의 약 4배이다.

⑤ 컴플라이언스.

사용 하중 (보정은 2 kg)보정 전 (mm)기하 보정만 (mm)기하 + 컴플라이언스 (mm)
0 kg7.8990.4090.0120
2 kg7.9290.2740.0117
4 kg7.9880.6240.0144
0 1 2 3 4 0.01 0.1 1 10 사용 하중 (kg) TCP 예측 오차 RMS (mm) 보정 전 기하 보정만 기하 + 컴플라이언스
자중 컴플라이언스가 있는 진짜 로봇을 $2$ kg에서 보정하고 사용 하중을 바꿀 때의 TCP 예측 오차 RMS(진짜 매개변수 5회 평균). 기하 보정만 한 모형은 $0.27\sim0.62$ mm에 머물고 컴플라이언스 매개변수를 더한 모형은 $0.012\sim0.014$ mm이다.

진짜 로봇에 자중 컴플라이언스(진짜 $c_i=(0.5\sim1.5)\times5\times10^{-5}$ rad/(N·m))가 있으면 하중 2 kg에서 보정한 기하 모형이 같은 하중에서도 $0.274$ mm에 머물고 하중이 $0$·$4$ kg으로 바뀌면 $0.409$·$0.624$ mm로 틀린다. 기하 매개변수는 자세와 하중에 따라 변하는 변형을 표현하지 못해 같은 하중에서도 오차가 남고, 하중이 바뀌면 보정 하중에 맞춰 흡수한 부분이 어긋나 더 커지는 것으로 해석한다(원인을 분리해 시험하지는 않았다). 컴플라이언스 매개변수 7개를 더하면 하중과 관계없이 $0.012\sim0.014$ mm이다. 식별된 $c_i$는 진짜 값과 $0.6\sim22\,\%$ 차이이고(진짜 매개변수 #0의 관절 2~6, 관절 5가 $22\,\%$로 가장 크며 관절 5의 평균 하중 토크가 이 다섯 중 가장 작다), 관절 1과 7의 $c_i$는 식별되지 않는다.

⑥ 자세 선택.

자세 수 $N$D-최적: 조건수 · 예측 오차 평균 · 최대 (mm)무작위(50회): 조건수 중앙값 · 예측 오차 중앙값 · 90분위 · 최대 (mm)
1238.3 · 0.048 · 0.06193.0 · 0.090 · 0.138 · 0.212
1524.8 · 0.035 · 0.04358.9 · 0.055 · 0.068 · 0.083
2023.2 · 0.028 · 0.03644.7 · 0.034 · 0.045 · 0.056

D-최적으로 고른 자세는 같은 수의 무작위 자세보다 $J_{\mathrm{id}}$의 조건수가 $1.9\sim2.4$배 낮다($N=12$: $38.3$ 대 중앙값 $93.0$, $N=20$: $23.2$ 대 $44.7$). 예측 오차는 $N=12$에서 $0.048$ mm(무작위 중앙값 $0.090$, 90분위 $0.138$, 최대 $0.212$ mm)로 작고 자세 수가 늘수록 차이가 줄어 $N=20$에서 $0.028$ 대 $0.034$ mm이다. D-최적 선택은 공칭 매개변수의 자코비안으로 한 번 고르면 되고 측정 전에 정할 수 있다. 후보 풀이 같은 분포이므로 충돌·가시선 제약이 있는 실제 풀에서는 이득이 달라질 수 있다.

⑦ 라이브러리 대조(실행 2026-11-03). Robotics Toolbox for Python 1.5.0의 수정 DH 로봇(DHRobot, base·tool)을 이 장의 순기구학과, 그 순기구학의 중심 차분을 식별 자코비안과, numpy 2.5.4의 svd를 식별 가능 매개변수 수와, SciPy 1.18.1 least_squares(lm)를 이 장의 LM과 같은 입력에서 비교했다. 스크립트는 robotics/fig-src/2.17-libcheck.py, 출력은 robotics/fig-src/data/2.17-libcheck-output.txt에 있다.

비교결과
이 장의 TCP 순기구학 대 Robotics Toolbox DHRobot(수정 DH + base·tool, 임의 매개변수·관절 200개): 위치 · 회전 최대 차이6.7e-16 · 4.4e-16
식별 자코비안 열 대 Robotics Toolbox 순기구학의 중심 차분(h=$10^{-7}$, 3개 자세 × 37열): 위치 행 · 회전 행 최대 차이1.7e-09 · 1.5e-09
식별 가능 매개변수 수, numpy svd(위치만 · 위치+자세) 대 이 장29 · 32 대 29 · 32
비영 특이값 최대 차이(상대)1.5e-15
이 장의 LM 대 SciPy least_squares(lm): 종점 비용 $\chi^2$255.93 대 255.93
두 보정 모형의 독립 자세 200개 TCP 예측 위치 최대 차이2.2e-09 m
두 보정 모형의 진짜 로봇 대비 예측 오차 RMS0.0137 mm 대 0.0137 mm

순기구학이 Robotics Toolbox와 $6.7\times10^{-16}$ 안에서 같고 식별 자코비안이 그 순기구학의 중심 차분과 $1.7\times10^{-9}$ 안에서 같다. numpy가 센 식별 가능 매개변수 수가 이 장과 같고(29·32) 이 장의 LM이 SciPy와 종점 비용($\chi^2=255.93$)이 같으며 독립 자세 200개의 TCP 예측이 $2.2\times10^{-9}$ m 안에서 같다. 이 장은 공개된 로봇 보정 전용 도구(제조사 보정 소프트웨어 등)와 대조하지 않았다 (확인 필요).

한계. 진짜 로봇이 모형의 매개변수족 안에 있는 모의이고 비기하 오차는 컴플라이언스 하나뿐이다. 진짜 매개변수 분포·잡음·강성은 예시이다. 측정 장비 자체의 오차는 잡음으로만 넣었다. 위치 측정은 레이저 트래커를 가정했고 CMM·카메라·터치 프로브·볼바의 측정 모델(자유도 구속)은 다루지 않았다. 자세 선택은 가시선·충돌·관절 한계를 넣지 않았다. 식별 가능성은 공칭 매개변수에서 한 번 구했다.

견해: 산업용 로봇의 절대 정확도 보정은 기저·관절 DH·TCP의 기하 매개변수로 시작하고, 외부 측정은 자세까지 재고(위치만 잴 때는 방정식 수 $3N$이 식별 가능 매개변수 수 $r$의 2배 이상이 되도록 자세를 정하며, 이 장에서 $3N=60\approx2r$($N=20$)이 $0.034$ mm, $N=100$이 $0.012$ mm였다), 사용 하중이 바뀌는 로봇은 컴플라이언스 같은 하중 의존 항을 모형에 넣는 것을 기본으로 둔다고 본다. 근거는 이 장의 계산에서 ① 자세 100개의 위치 측정으로 TCP 예측 오차가 $7.9$ mm에서 $0.012$ mm로 줄었으나, ② 자세 수가 $N=8\sim10$이면 학습 잔차가 0이어도 예측 오차가 $0.7\sim1.5$ mm로 커졌고, ③ 컴플라이언스가 있는 진짜 로봇에서 기하만 보정한 모형은 하중이 바뀌면 $0.27\to0.62$ mm로 틀렸으며 컴플라이언스를 더하면 $0.012\sim0.014$ mm로 하중에 무관했다는 점이다. 이 값은 모형 안의 오차가 없는 모의이므로 실제 로봇에서는 마찰·열·전달 오차가 남아 크기가 달라진다.

2.17.6 설계 트레이드오프 — 보정 방식과 측정 장비의 선택

보정에는 측정 방식과 보상 방식의 선택이 있다.

  • ① 외부 위치 측정(레이저 트래커 등). TCP 위치(또는 자세)를 외부 장비로 재서 절대 정확도를 직접 맞춘다. 장비가 비싸고 측정과 가시선이 번거롭다. 기저를 함께 식별한다.
  • ② 구속 기반 측정(고정점·구·평면 접촉, 볼바). 장비가 단순하지만 구속의 종류에 따라 식별되는 매개변수가 제한된다(Nubiola·Bonev 2014가 신축식 볼바 하나로 절대 보정을 다룬 것으로 알려져 있다. 본문은 읽지 못했다). 이 장은 시험하지 않았다.
  • ③ 카메라·비전. 작업공간 안에서 목표를 보고 되먹임하면 절대 정확도에 의존하지 않는다. 장면마다 보정 비용이 든다(6.22).
  • ④ 컨트롤러 갱신 대 오프라인 보상 대 온라인 되먹임. 컨트롤러가 기구학 매개변수를 받으면 갱신이 가장 단순하고, 받지 못하면 오프라인 보상으로 목표를 바꾸고, 외부 되먹임은 모델 오차에 가장 강하다.
방식측정식별 대상장점한계
① 외부 위치 측정TCP 위치(+자세)기저·DH·TCP·컴플라이언스절대 정확도를 직접 맞춤장비 비용, 가시선
② 구속 기반거리·접촉구속에 따라 제한장비 단순식별 가능 매개변수 제한
③ 비전 되먹임목표 상대 위치보정 불필요(상대)모델 오차에 강함시야·조명, 절대 좌표 아님
④ 컨트롤러 갱신—갱신가장 단순컨트롤러 접근 필요

견해: 새로 설치하는 정밀 작업 셀(용접·조립·오프라인 프로그래밍)은 외부 위치 측정으로 기하 보정을 기본으로 두고 비전 되먹임은 마지막 수 mm를 맞추는 용도로 둔다고 본다. 근거는 이 장에서 기하 오차가 모두 있을 때 TCP 오차가 $7.8$ mm이고 보정이 자세 100개로 $0.012$ mm까지 줄였다는 점이다. 비전 되먹임만으로 되는 응용(작업물에 상대적으로 위치를 맞추는 일)은 절대 보정이 필요 없을 수 있으며 이 장은 두 방식의 비용을 비교하지 않았다.

2.17.7 응용 축 비교

응용 축기구학 보정이 맡는 일요구관련 장
산업·제조용접·조립·오프라인 프로그래밍 로봇의 절대 정확도 향상(설치·출하 보정)절대 정확도, 반복성4.6, 42.10
물류·이동원리 수준: 팔레타이징 정확도(응용마다 요구가 다름)도달 오차6.22
도로 주행해당하는 고유 요구 없음——
서비스해당하는 고유 요구 없음——
의료·헬스케어수술 로봇의 정합·내비게이션 정확도(원리 수준)위치 정확도32.7
휴머노이드·범용팔과 카메라의 눈-손 보정과 결합시각-운동 정합6.22
필드해당하는 고유 요구 없음——
국방·안보원리 수준에서 해당하는 고유 요구 없음——

이 표는 이 책의 정리이며 장별 요구는 다르다. 응용별 정확도 요구 수치는 이 장이 확인하지 않았다.

2.17.8 관련 규격·프로토콜

문서발행무엇을 정하나상세 장
ISO 9283ISO산업용 로봇의 성능 기준과 시험 방법(위치 정확도·반복 정밀도 등으로 알려져 있음, 원문 미확인 (확인 필요))27.3
Franka Research 3 문서Franka RoboticsDH 표·관절 한계(2.4·2.6에서 사용)2.4
least_squares·svdSciPy 1.18.1, numpy 2.5.4감쇠 최소제곱·특이값2.6, 1.1
DHRobot(수정 DH)Robotics Toolbox for Python 1.5.0수정 DH 순기구학2.3
수학 표기·기호표이 책SE(3)·스크루 표기A.2

레이저 트래커·CMM의 측정 불확도 규격은 확인하지 못했다 (확인 필요).

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

기구학 보정 방식 자체를 규정하는 법령·인증 요건은 확인하지 못했다. 보정은 제품 성능 사양(반복 정밀도·절대 정확도)의 시험과 출하 검사에 사용되며 시험 방법은 성능 표준(27.3)의 대상이다. 의료 응용의 위치 정확도 요구는 의료기기 인허가의 시험 항목이 될 수 있다(39.20, 41.29). 이 장은 규정의 조항을 확인하지 않았다 (확인 필요).

2.17.10 한계·유의점·미해결

  • 모의의 가정. 진짜 로봇이 모형의 매개변수족 안에 있고 오차 분포·잡음이 예시이다. 실제 로봇의 보정 후 정확도를 주장하지 않는다.
  • 비기하 오차. 컴플라이언스 하나만 넣었다. 열 변형·전달 오차·백래시·마찰·케이블 힘은 모형에 없다.
  • 측정 모델. 트래커 위치 측정만 다뤘다. 측정 장비의 자체 오차·기준 틀 오차·자세 측정 방식, 구속 기반 측정은 다루지 않았다.
  • 식별 가능성. 공칭 매개변수 한 점에서 구했고 영공간의 해석은 한 번의 추첨(시드 7)에 근거한다. 관절 1의 하중 토크 0은 이 모형의 수직 하중 가정에서의 결과이다.
  • 자세 선택. 후보 풀이 충돌·가시선·관절 한계를 반영하지 않으며 D-최적 이외의 지표(조건수·최소 특이값 등)는 비교하지 않았다.
  • 보정의 수명. 열·마모·충돌 후 매개변수가 변하는 것과 재보정 주기는 다루지 않았다.
  • 병렬·연속체 로봇. 직렬 7R만 다뤘다. 연속체 로봇의 모델 계수 식별은 2.16의 모형에 같은 절차를 적용하는 것이며 이 장은 시험하지 않았다.

2.17.11 체크포인트·연구 질문·출처

체크포인트:

  1. 회전 변환과 이동 변환의 식별 자코비안 열 $w\times(p-o)$·$w$를 유도하고, 관절 영점 오프셋의 열이 자코비안 $\partial p/\partial q_i$와 같음을 보이라.
  2. 구조적 중복 다섯 쌍(기저 ↔ 관절 1의 네 쌍, $d_7$ ↔ TCP $z$)이 같은 축의 변환이라 TCP에 같은 영향을 줌을 설명하라.
  3. 선형 가우스 모형에서 예측 오차의 제곱 평균이 $\sigma^2\,\mathrm{tr}(J_t(J^\top J)^{-1}J_t^\top)\approx\sigma^2r/N$임을 보이라.
  4. 정보 행렬 $M$에 블록 $A$를 더할 때 $\det(M+A^\top A)=\det M\cdot\det(I+AM^{-1}A^\top)$와 $M^{-1}$의 갱신(우드버리)을 유도하라.
  5. 컴플라이언스가 있는데 기하만 보정한 모형이 사용 하중이 바뀔 때 틀리는 이유와 $c_1,c_7$이 식별되지 않는 이유를 토크 식으로 설명하라.

연구 질문:

  • 실제 로봇에서 보정 후 남는 오차의 원천(열·전달 오차·백래시)을 어떤 모델·측정으로 분리해 식별할 것인가?
  • 보정 주기를 정하는 지표(재보정이 필요함을 알리는 모니터링)는 무엇인가?

1차 출처(조회 2026-11-03).

  • S. Hayati, M. Mirmirani, "Improving the absolute positioning accuracy of robot manipulators," Journal of Robotic Systems 2(4), 397–413, 1985, doi:10.1002/rob.4620020406 — 서지만 확인.
  • K. Okamura, F. C. Park, "Kinematic calibration using the product of exponentials formula," Robotica 14(4), 415–421, 1996, doi:10.1017/s0263574700019810 — 서지만 확인.
  • J.-H. Borm, C.-H. Meng, "Determination of optimal measurement configurations for robot calibration based on observability measure," The International Journal of Robotics Research 10(1), 51–63, 1991, doi:10.1177/027836499101000106 — 서지만 확인.
  • A. Nahvi, J. M. Hollerbach, "The noise amplification index for optimal pose selection in robot calibration," Proc. IEEE ICRA, 647–654, 1996, doi:10.1109/robot.1996.503848 — 서지만 확인.
  • Sun, Hollerbach, "Observability index selection for robot calibration," Proc. IEEE ICRA, 831–836, 2008, doi:10.1109/robot.2008.4543308 — 서지만 확인.
  • A. Nubiola, I. A. Bonev, "Absolute calibration of an ABB IRB 1600 robot using a laser tracker," Robotics and Computer-Integrated Manufacturing 29(1), 236–245, 2013, doi:10.1016/j.rcim.2012.06.004 — 서지만 확인.
  • A. Nubiola, I. A. Bonev, "Absolute robot calibration with a single telescoping ballbar," Precision Engineering 38(3), 472–480, 2014, doi:10.1016/j.precisioneng.2014.01.001 — 서지만 확인.
  • Franka Research 3 공식 문서(DH 표·관절 한계, 2.4·2.6에서 조회); Robotics Toolbox for Python 1.5.0(DHRobot, RevoluteMDH); SciPy 1.18.1(optimize.least_squares), numpy 2.5.4(linalg.svd).

다음 장. 2.18은 링크 기구와 캠(4절 링크·그라쇼프 조건·슬라이더-크랭크·구면 링크·캠)을 다룬다. 보정이 다루는 직렬 팔과 달리 폐연쇄 평면 기구의 해석과 설계를 다룬다.