AEGLOSLAB 로봇공학 전서(全書)

제4부 기계 설계·구조·재료

4.10 정적 균형과 중력 보상 기구: 스프링·카운터웨이트·밸런서

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

이 장은 로봇 팔의 중력 토크를 구동기가 아니라 수동 요소가 담당하게 하는 기구를 다룬다. 중력 위치에너지와 보상 요소의 위치에너지의 합이 자세와 무관하게 일정하면 모든 자세가 평형이 되고(정적 균형), 이때 구동기가 유지에 사용하는 토크는 0이다. 영 자유길이 스프링이 1링크에서 정확한 균형을 만드는 닫힌 식, 자유길이가 있는 실제 코일 스프링의 잔차, 카운터웨이트의 질량·관성 비용, 2링크 팔을 스프링만으로 정확히 균형시키는 구성과 인접 링크 스프링만으로는 불가능한 이유, 균형 방식에 따른 구동 토크의 변화를 계산으로 보인다.

배우는 것:

  • 정적 균형 조건 — $U+V=$ 일정 ⟺ 구동 유지 토크 0. 중립 평형과 "에너지 무료" 성질.
  • 영 자유길이 스프링 — $k\,a\,b=m\,g\,l_c$의 유도, 케이블·도르래 실현, 자유길이 $L_0>0$인 코일 스프링의 잔차.
  • 카운터웨이트 — 질량 $m_{cw}=m\,l_c/r$과 관성 증가 $\Delta J=m\,l_c\,r$, 직렬 연쇄에서 하류 질량이 상류 카운터웨이트를 키우는 효과.
  • 다관절 균형 — 평면 2R의 위치에너지 구조, 스프링 3개의 정확 균형, 인접 링크 스프링만으로 균형이 불가능한 이유.
  • 동역학과 하중 변동 — 균형이 질량 행렬에 미치는 영향, 구동 토크의 최대·RMS, 말단 하중 불일치의 잔차, 가스 스프링의 온도 의존.

선수 지식: 3.4(운동방정식의 중력항 $g(q)$), 2.12(정역학과 강성), 4.3(코일 스프링의 강성·응력은 이 장이 아니라 그 장).

특히 중요한 독자: 대형·고가반하중 팔이나 전원 차단 시 낙하하지 않아야 하는 팔을 설계하는 기계 설계자, 구동기 용량(5.2)을 줄이려는 관절 모듈 설계자(7.2), 시뮬레이터에 스프링·중력 보상을 모델링하는 개발자(16.5).

출처 방침. 기준 시점은 2026-11-05이다. 직접 읽은 자료: S. Segla의 "Static balancing of robot mechanisms and manipulation devices"(Journal of Mechanical Engineering – Strojnícky časopis 68(2), 77–90, 2018, doi:10.2478/scjme-2018-0019, 공개 PDF 전문 — 평행사변형 로봇의 일정 힘 균형, 말단 하중 변동 시 평균 평형력 표, 스프링 방정식의 최적화 정식화), Whitney 외의 미국 특허 US 9,314,934 B2(Disney Enterprises, 출원 2014-02-27, 발행 2016-04-19, "Gravity-counterbalanced robot arm"; 명세서 중 1링크의 영 자유길이 스프링 위치에너지 식, 사전 응력 권선과 케이블·도르래 실현, 카운터웨이트와 스프링의 비교 서술), 이 장의 모든 계산식은 이 장이 직접 유도하고 계산했다. 서지만 확인(Crossref): Streit·Gilmore(1989), Herder(1998)와 박사학위 논문(2001, TU Delft; 저장소 서버에 접속하지 못해 본문은 읽지 못했다), Agrawal·Fattah(2004), Arakelian(2016), Gosselin(2008). 읽지 못한 것: 산업 로봇 제조사의 밸런서 사양과 정비 절차(검색에서 단편만 보았고 원문 매뉴얼은 확인하지 못했다 (확인 필요)), 안전 표준의 저장 에너지 조항. 표준 EN 13906-2:2013과 ISO 26909:2009는 판매처 목록의 범위 서술로만 확인했고 본문은 읽지 못했다. 이 장의 수치는 모두 가정이 표에 있는 합성 계산이며 특정 제품의 값이 아니다.

4.10.2 개념 — 중력 위치에너지를 수동 요소의 위치에너지로 상쇄한다

결론부터 적으면 다음과 같다. 팔의 운동방정식 $M(q)\ddot q+C(q,\dot q)\dot q+g(q)=\tau$에서 정지한 자세를 유지하는 데 필요한 토크는 중력항 $g(q)$이다. 이 항은 중력 위치에너지 $U(q)$의 기울기이므로, 보상 요소의 위치에너지 $V(q)$가 $U+V=$ 일정을 만족하면 $g(q)$ 전체가 수동 요소의 토크 $-\partial V/\partial q$와 상쇄된다. 이를 정적 균형이라 하고, 모든 자세가 중립 평형이 되어 구동기는 마찰과 잔차만 이긴다. 구현 방식은 ① 질량을 관절 축에 모으는 카운터웨이트 ② 위치에너지가 위치의 제곱에 비례하는 영 자유길이 스프링 ③ 비선형 탄성 요소인 가스 스프링·유압 밸런서 ④ 구동기가 $g(q)$를 계산해 상쇄하는 능동 보상이다. ④는 정적 균형이 아니라 제어이며 구동기 토크와 발열을 줄이지 못하므로 이 장 밖(5.2)에서 다룬다.

q O 관절 P (기저, 높이 a) B m, lc mg 링크 영 자유길이 스프링 V = k r2/2 r2 = a2 + b2 − 2absinq 균형 조건 k a b = m g lc 모든 각도에서 U + V 일정 a = OP, b = OB
1링크 중력 보상 기구도. 관절 O에서 각도 $q$로 놓인 링크(파랑), 무게중심의 질량 $m$과 중력 $mg$(초록), 기저의 점 P(관절 위 높이 $a$)에서 링크 위의 점 B(관절에서 $b$)로 연결된 영 자유길이 스프링(주황)이다. 균형 조건은 $kab=mgl_c$이다.

이 장의 계산 결과를 미리 적으면 다음과 같다. ① 1링크($m=10$ kg, $l_c=0.5$ m)에서 영 자유길이 스프링 $k=mgl_c/(ab)=204.31$ N/m($a=0.6$ m, $b=0.4$ m)가 총 위치에너지의 변동을 $1.4\times10^{-14}$ J(계산 반올림 수준)로 만든다. ② 자유길이 $L_0=100$ mm인 코일 스프링은 같은 $a=0.6$ m에서 중력 토크 최대($49.03$ N·m)의 $9.0\,\%$($4.44$ N·m)가 남고, 설치 높이 $a\le0.8$ m 안에서 격자 최적화하면 $4.3\,\%$($2.09$ N·m)가 남는다. ③ 카운터웨이트는 팔 길이 $r=0.2$ m에서 $25$ kg(링크 질량의 $2.5$배)이 추가되고 관절 둘레 관성이 $30\,\%$ 늘며, $r=0.5$ m에서는 $10$ kg이 추가되고 관성이 $75\,\%$ 늘어 질량과 관성이 서로 반대로 움직인다. ④ 평면 2링크 팔은 영 자유길이 스프링 3개로 자세 300개에서 잔차 $1.4\times10^{-14}$ N·m의 정확 균형이 되고, 인접 링크 사이 스프링만 사용하면 중력 토크 RMS $32.86$ N·m 중 $9.15$ N·m(28 %)가 남는다. ⑤ 주기 운동의 관절 1 RMS 토크는 무보상 $64.8$ N·m에서 스프링 균형 $25.1$ N·m(−61 %), 카운터웨이트 균형 $38.7$ N·m(질량 49 kg 추가)로 줄어 스프링은 질량 변화 없이 구리 손실을 $(25.1/64.8)^2=0.150$배로 줄인다(모터 상수 일정 가정). ⑥ Pinocchio·MuJoCo와 최대 차 $4\times10^{-8}$ N·m 이내(주기 통계는 상대 $2\times10^{-5}$ 이내)로 일치한다(4.10.5의 라이브러리 대조).

4.10.3 원리

4.10.3.1 정적 균형의 조건

운동방정식의 중력항은 중력 위치에너지의 기울기 $g(q)=\partial U/\partial q$이다. 보상 요소(스프링·카운터웨이트)의 위치에너지를 $V(q)$라 하면 그 요소가 관절에 주는 토크는 $\tau_c=-\partial V/\partial q$이고, 정지한 자세를 유지하는 구동 토크는 다음이다.

$$\tau_{\mathrm{hold}}(q)=g(q)-\tau_c(q)=\frac{\partial}{\partial q}\bigl(U(q)+V(q)\bigr).$$

따라서 $U+V$가 $q$에 대해 상수이면 모든 자세에서 $\tau_{\mathrm{hold}}=0$이다. 이 조건은 모든 자세가 평형이라는 뜻(중립 평형)이므로 어느 자세도 선호되지 않고, 구동기는 마찰·잔차·관성력만 이긴다. 에너지가 한 자세에서 다른 자세로 갈 때 중력 위치에너지의 변화량을 수동 요소가 그대로 되돌려 주기 때문에 이를 에너지 무료(energy-free) 균형이라 부른다(Herder의 박사학위 논문 제목이 이 용어를 사용한다; 본문은 읽지 못했다). 이 조건은 정지 상태의 힘 균형이고 관성력 $M\ddot q$와 $C\dot q$는 건드리지 않는다. 동역학에 대한 영향은 4.10.3.6에서 계산한다.

4.10.3.2 1링크와 영 자유길이 스프링

관절 O에서 수평으로부터 각도 $q$로 놓인 링크(질량 $m$, 무게중심까지 $l_c$)를 생각한다. 중력 위치에너지는 $U=mgl_c\sin q$이고 유지 토크는 $mgl_c\cos q$이다. 기저의 점 $P=(0,a)$(관절 위 높이 $a$)와 링크 위의 점 $B=b(\cos q,\sin q)$를 영 자유길이 스프링(힘이 길이에 비례, $F=kr$)으로 연결하면 거리 $r$은 다음이고 위치에너지는 $V=\tfrac12kr^{2}$이다.

$$r^{2}=a^{2}+b^{2}-2ab\sin q,\qquad U+V=\tfrac12k(a^{2}+b^{2})+(mgl_c-kab)\sin q.$$

따라서 $\sin q$의 계수가 0인 조건이 곧 정적 균형이다.

$$\boxed{\,k\,a\,b=m\,g\,l_c\,}\qquad\Longrightarrow\qquad \tau_c=kab\cos q=mgl_c\cos q.$$

이 식은 $q$를 포함하지 않으므로 스프링 하나로 전 구간에서 정확하다. 1절에서 인용한 특허 명세서(Whitney 외)가 같은 위치에너지 식과 조건 $mgL=kab$를 서술한다. 영 자유길이 스프링은 사전 응력을 준 권선으로 만들 수 있으나 어렵다고 명세서가 서술하며, 보통 스프링·케이블·도르래로 등가를 만든다고 한다. 도르래 방식은 스프링 끝이 기저점 $P$의 도르래를 지나는 케이블에 연결되어 스프링의 늘어난 길이가 $P$에서 $B$까지 풀려 나간 케이블 길이 $r$과 같아지는 구성이며, 스프링의 자유길이에 해당하는 공간이 도르래 뒤쪽에 필요하고 케이블 신장·도르래 마찰이 오차 요인이다(이 장은 계산하지 않았다).

4.10.3.3 자유길이가 있는 코일 스프링의 잔차

실제 인장 코일 스프링은 자유길이 $L_0>0$이고 힘이 $k(r-L_0)$이다. 위치에너지 $V=\tfrac12k(r-L_0)^2$와 $\partial r/\partial q=-ab\cos q/r$로부터 다음을 얻는다.

$$\tau_c=kab\cos q\left(1-\frac{L_0}{r(q)}\right),\qquad \tau_{\mathrm{hold}}=\cos q\left[mgl_c-kab+\frac{kabL_0}{r(q)}\right].$$

$L_0=0$이면 앞 절의 정확 균형이다. $L_0>0$이면 $r(q)$가 변하는 만큼 항 $kabL_0/r$이 변하여 잔차가 남고, $k$를 조정해도 한 자세에서만 0으로 만들 수 있다. $r(q)$의 변화율을 줄이려면 $a\gg b$로 두어 스프링을 길게 하면 되는데 설치 공간이 제한한다. 이 장의 계산에서 최소최대 최적화는 $a$를 $6.5$ m까지 보내 잔차를 $0.022$ N·m로 낮추었고(4.10.5), 이는 $a\to\infty$에서 코일 스프링이 영 자유길이 스프링으로 수렴한다는 해석과 일치하나 실현할 수 없는 값이다.

4.10.3.4 카운터웨이트 — 질량 균형

링크 반대쪽 관절에서 $r$ 떨어진 곳에 질량 $m_{cw}$를 두고 $m_{cw}\,r=m\,l_c$로 하면 합성 무게중심이 관절 축 위에 놓인다. 이때 중력 방향과 링크 자세와 무관하게 중력 토크가 0이고, 합성 무게중심이 고정되므로 이 링크의 가속에 따른 기저 반력(흔들림 힘)도 0이다(힘 균형). 비용은 다음 두 양이다.

$$m_{cw}=\frac{m\,l_c}{r},\qquad \Delta J=m_{cw}r^{2}=m\,l_c\,r.$$

$r$이 짧으면 질량이 크고 관성은 작으며, $r$이 길면 질량은 작고 관성이 크다. 직렬 연쇄에서는 하류 링크의 합성 질량이 상류 링크의 모멘트에 더해지므로 상류 카운터웨이트가 커진다. 특허 명세서는 링크 수가 늘수록 팔 질량이 지수적으로 커진다고 서술하며, 이 장의 2링크 팔에서 링크 2는 $9$ kg, 링크 1은 $40$ kg의 카운터웨이트가 필요했다(팔 질량 15 kg 대비 합계 49 kg).

4.10.3.5 다관절 — 위치에너지의 구조와 스프링 3개

평면 2R 팔(링크 길이 $l_1$, 말단 하중 포함)의 중력 위치에너지는 두 항이다.

$$U=A\sin q_1+B\sin(q_1+q_2),\quad A=g\bigl[m_1l_{c1}+(m_2+m_p)l_1\bigr],\ \ B=g\bigl(m_2l_{c2}+m_pl_2\bigr).$$

영 자유길이 스프링이 두 물체 위의 점 $p$, $b$를 연결하고 두 물체가 하나의 관절을 공유하면 위치에너지는 $V=\text{상수}-k\,p^{\mathsf T}R(\theta)\,b$($\theta$는 상대 각도)이므로 $\alpha\sin\theta+\beta\cos\theta$ 꼴, 곧 한 각도만의 함수이다. 그러나 $\sin(q_1+q_2)=\sin q_1\cos q_2+\cos q_1\sin q_2$는 단일 변수 함수의 합이 아니므로 인접한 링크 사이의 영 자유길이 스프링만으로는 $B$ 항을 상쇄하지 못한다(이 장의 유도). 4.10.5의 최소제곱에서 기저-링크 1과 링크 1-링크 2 스프링의 모든 계수를 자유롭게 두어도 잔차 RMS가 $9.15$ N·m 남았다.

기저에서 링크 2로 건너가는 스프링을 더하면 $B$ 항이 생긴다. 기저점 $P_b=(0,a_b)$와 링크 2 위의 점 $B_b=l_1e(q_1)+b_b\,e(q_1+q_2)$를 연결하면 다음이다.

$$V_b=\text{상수}-k_ba_bl_1\sin q_1-k_ba_bb_b\sin(q_1+q_2)+k_bl_1b_b\cos q_2.$$

$\sin(q_1+q_2)$ 항은 $k_ba_bb_b=B$로 정해지고, 부수적으로 생기는 $\sin q_1$ 항은 기저-링크 1 스프링 $a$가 줄여 주며, $\cos q_2$ 항은 링크 1의 팔꿈치 너머 연장점($c_1$)과 링크 2 위의 점($c_2$)을 잇는 스프링 $c$($V_c=\text{상수}-k_cc_1c_2\cos q_2$)가 상쇄한다. 세 조건은 다음이다.

$$k_ba_bb_b=B,\qquad k_aa_ab_a=A-\frac{B\,l_1}{b_b},\qquad k_cc_1c_2=\frac{B\,l_1}{a_b}.$$

두 번째 식이 양수여야 하므로 $b_b\ge Bl_1/A$이다(이 장의 값 $0.164$ m). 평행사변형이나 팬터그래프 같은 기구는 링크 2의 절대 방향을 관절 1 근처로 옮겨 오는 수단이고, 특허 명세서는 팬터그래프로 전완의 방향을 어깨로 전달하여 카운터웨이트를 스프링으로 대체하는 구성을 서술한다. 이 장은 평행사변형을 계산하지 않았다. 3차원 직렬 팔의 일반 이론은 Agrawal·Fattah(2004)의 논문이 다루는 것으로 서지만 확인했다.

4.10.3.6 균형과 동역학

스프링은 질량 행렬 $M$과 코리올리 행렬 $C$를 바꾸지 않는다(스프링 자체의 질량과 서징은 제외, 4.8). 반면 카운터웨이트는 $M$을 키운다(1링크에서 $\Delta J=m\,l_c\,r$). 주기 운동에서 스프링 균형은 위치에너지를 저장했다가 되돌려 구동기의 순 토크를 관성력 성분으로 줄이고, 카운터웨이트 균형은 중력을 없애는 대신 관성 토크를 키운다. 구리 손실이 토크의 제곱에 비례하므로 RMS 토크 비의 제곱이 발열 비이며 구동기 선정은 RMS 토크와 최대 토크로 한다(5.2, 8.7).

4.10.3.7 가스 스프링과 온도

가스 스프링은 밀폐된 기체가 압축되며 힘을 내는 비선형 탄성 요소이다. 이상 기체의 폴리트로프 과정에서 압력은 $p\propto(L_g/(L_g-x))^{n}$이므로 압축 비율 $s=x/L_g$에서 힘 비는 $(1-s)^{-n}$이다. 등온($n=1$)과 단열($n=1.4$, 이원자 이상 기체 가정)의 값은 $s=0.5$에서 $2.00$과 $2.64$이고 $s=0.7$에서 $3.33$과 $5.40$이다. 따라서 가스 스프링의 힘-행정 곡선은 압축될수록 가파르고 속도(열 교환 정도)에 따라 달라진다. 밀폐 정량 기체는 $p\propto T$이므로 $293.15$ K 기준 $253.15$ K($-20\,^\circ$C)에서 힘이 $0.864$배($-13.6\,\%$), $333.15$ K($60\,^\circ$C)에서 $1.136$배가 된다(씰 마찰과 오일 영향은 제외한 이상 기체 모형). 균형 장치가 저온에서 정격보다 낮은 힘을 내므로 실외 팔은 이를 고려한다(4.13).

4.10.3.8 하중 변동과 조정

스프링과 카운터웨이트는 설계 질량에 대해서만 정확하다. 말단 하중이 설계 값에서 $\Delta m$ 어긋나면 팔 길이 $L$에서 잔차 $\Delta m\,g\,L\cos q$가 남는다. 이 장의 예($L=1$ m, 설계 하중 3 kg)에서 $1$ kg 어긋남은 $9.8$ N·m, $3$ kg 어긋남은 $29.4$ N·m이다. Segla(2018)는 평행사변형 로봇을 설계 하중 10 kg으로 최적화했을 때 평균 평형력 $F_{C,av}$가 하중 $0\to14$ kg에서 $474.59$, $200.97$(6 kg), $0.04$(10 kg), $83.36$(12 kg), $163.45$ N(14 kg)으로 변한다고 보고하며(그 논문 표 1), 무보상 팔은 같은 하중에서 $2645.98\sim2970.24$ N(표 3)이어서 하중 불일치 후에도 보상이 이득이다. 같은 논문은 설계 변수 하나(스프링 부착점 $b$)를 다시 최적화하면 다른 하중에서도 균형을 맞출 수 있다고 보고한다. 조정 수단은 스프링 사전 장력·부착점 이동·스프링 병렬 개수 가감이며, 하중이 연속으로 바뀌는 용도는 능동 보상이나 조정 기구와 병행한다.

4.10.4 알고리즘

1링크 영 자유길이 스프링 설계(m, l_c, a, b 선택):
    W ← m g l_c;  k ← W / (a b)           # 케이블·도르래로 영 자유길이 실현
    잔차 확인: τ_hold(q) = (W − k a b) cos q = 0
코일 스프링(자유길이 L0, b 고정, a 후보 격자):
    각 a마다 s_i ← a b cos q_i (1 − L0/r_i),  k ← Σ W cos q_i s_i / Σ s_i²
    최대 |W cos q_i − k s_i|가 최소인 a 선택;  r_min ≥ L0 확인(스프링이 느슨해지지 않음)
2링크 스프링 3개(A, B, l1, a_b, b_b 선택):
    k_b a_b b_b ← B;  k_a a_a b_a ← A − B l1 / b_b (b_b ≥ B l1 / A);  k_c c1 c2 ← B l1 / a_b
카운터웨이트(하류에서 상류로):
    링크 2: m_cw2 ← (m2 l_c2 + m_p l2)/r2
    링크 1: m_cw1 ← (m1 l_c1 + (m2 + m_p + m_cw2) l1)/r1
검증: g(q)(Pinocchio)와 −∇V(위치에너지 수치 기울기)의 차, MuJoCo 정지 가속도 q̈ = 0

4.10.5 풀이 예제 — 1링크 균형, 코일 스프링 잔차, 카운터웨이트 비용, 2링크 정확 균형, 구동 토크

결론부터 적으면 앞 절의 ①~⑥이다. 입력은 모두 예시 가정이다.

구현. rlen·tau_grav·tau_spring(1링크), fit_coil(코일 스프링의 $k$·$a$ 선택), compose·dyn2(합성 링크와 2R 닫힌 식 토크), design3·spring3(스프링 3개의 설계식과 토크), adjacent_only(인접 스프링만의 최소제곱), torque_stats(주기 토크의 최대·RMS)가 아래 코드이다. 아래 코드는 1.1의 solve_lu를 사용한다.

항목값
입력 1 (1링크)$m=10$ kg, $l_c=0.5$ m, 균일봉 길이 $1$ m(관절 둘레 관성 $3.333$ kg·m²), $g=9.80665$ m/s², 스프링 부착점 $b=0.4$ m, 영 자유길이 $a=0.6$ m, 각도 구간 $-30^\circ\sim90^\circ$(121점)
입력 2 (코일)자유길이 $L_0=50\cdot100\cdot150$ mm, $b=0.4$ m, 설치 높이 $a\in[0.45,\,0.8]$ m(간격 5 mm), $k$는 최소제곱
입력 3 (카운터웨이트)팔 길이 $r=0.2\cdot0.3\cdot0.5$ m, 점질량
입력 4 (가스 스프링)이상 기체, 폴리트로프 지수 $n=1\cdot1.4$, 밀폐 정량($p\propto T$)
입력 5 (2링크)링크 1: $8$ kg·$0.5$ m 균일봉, 링크 2: $5$ kg·$0.4$ m 균일봉, 말단 하중 $2$ kg(점질량). $a_a=0.6$, $b_a=0.4$, $a_b=0.5$, $b_b=0.3$, $c_1=0.2$, $c_2=0.3$ m. 스프링 질량은 모델링하지 않음
입력 6 (운동)주기 $2$ s, $q_1=45^\circ+35^\circ\sin\omega t$, $q_2=30^\circ+40^\circ\sin(\omega t+0.5)$, 2000점. 카운터웨이트는 링크 2 뒤 $0.2$ m, 링크 1 뒤 $0.25$ m
입력 7 (라이브러리 대조)Pinocchio 4.1.0, MuJoCo 3.17.0, SciPy 1.18.1, numpy 2.5.4
from math import sin, cos, sqrt, pi, radians

G = 9.80665

def rlen(a, b, q):
    """기저 점 (0,a)와 링크 점 b(cos q, sin q) 사이 거리"""
    return sqrt(a * a + b * b - 2 * a * b * sin(q))

def tau_grav(m, lc, q):
    """링크를 붙들기 위해 필요한 중력 토크"""
    return m * G * lc * cos(q)

def tau_spring(k, L0, a, b, q):
    """코일 스프링(L0=0이면 영 자유길이)이 링크에 주는 토크"""
    r = rlen(a, b, q)
    return k * a * b * cos(q) * (1 - L0 / r)

def fit_coil(W, L0, b, qs, a_grid):
    """각 a마다 k를 최소제곱으로 정하고 최대 잔차 최소인 a"""
    best = None
    for a in a_grid:
        if abs(a - b) < L0 * 1.05:
            continue
        s = [a * b * cos(q) * (1 - L0 / rlen(a, b, q))
             for q in qs]
        c = [W * cos(q) for q in qs]
        k = (sum(x * y for x, y in zip(c, s))
             / sum(y * y for y in s))
        res = [x - k * y for x, y in zip(c, s)]
        mx = max(abs(x) for x in res)
        if best is None or mx < best[0]:
            rms = sqrt(sum(x * x for x in res) / len(res))
            best = (mx, a, k, rms)
    return best

def compose(parts):
    """(질량, 링크축 위치, 무게중심 관성)들을 하나로 합친다"""
    m = sum(p[0] for p in parts)
    s = sum(p[0] * p[1] for p in parts) / m
    I = sum(p[2] + p[0] * (p[1] - s) ** 2 for p in parts)
    return m, s, I

def dyn2(P, q, qd, qdd):
    """평면 2R 팔의 닫힌 식 토크 (M qdd + C qd + g)
    P = (l1, link1 합성(m, s, I), link2 합성(m, s, I))"""
    l1, (m1, s1, I1), (m2, s2, I2) = P
    c2, s2n = cos(q[1]), sin(q[1])
    M11 = (m1 * s1 ** 2 + I1 + I2
           + m2 * (l1 ** 2 + s2 ** 2 + 2 * l1 * s2 * c2))
    M12 = m2 * (s2 ** 2 + l1 * s2 * c2) + I2
    M22 = m2 * s2 ** 2 + I2
    h = -m2 * l1 * s2 * s2n
    g1 = ((m1 * s1 + m2 * l1) * G * cos(q[0])
          + m2 * s2 * G * cos(q[0] + q[1]))
    g2 = m2 * s2 * G * cos(q[0] + q[1])
    t1 = (M11 * qdd[0] + M12 * qdd[1] + g1
          + h * qd[1] * (2 * qd[0] + qd[1]))
    t2 = M12 * qdd[0] + M22 * qdd[1] - h * qd[0] ** 2 + g2
    return t1, t2

def spring3(sp, l1, q):
    """영 자유길이 스프링 3개가 두 관절에 주는 토크
    sp = (ka*aa*ba, kb*ab*bb, kb*ab, kb*l1*bb, kc*c1*c2)"""
    Sa, Sb, Sb1, Sb2, Sc = sp
    t1 = (Sa * cos(q[0]) + Sb1 * l1 * cos(q[0])
          + Sb * cos(q[0] + q[1]))
    t2 = (Sb2 * sin(q[1]) + Sb * cos(q[0] + q[1])
          - Sc * sin(q[1]))
    return t1, t2

def design3(l1, A, B, ab, bb):
    """A = sin q1 항 계수, B = sin(q1+q2) 항 계수 (N·m)
    k_b a_b b_b = B,  k_a a_a b_a = A - B l1 / b_b,
    k_c c1 c2 = B l1 / a_b"""
    return (A - B * l1 / bb, B, B / bb,
            B * l1 / ab, B * l1 / ab)

def adjacent_only(A, B, q1s, q2s):
    """인접 링크 스프링만: V1 = a sin q1 + b cos q1,
    V2 = c sin q2 + d cos q2 의 최소제곱 잔차 RMS"""
    rows, rhs = [], []
    for u in q1s:
        for v in q2s:
            rows.append([cos(u), -sin(u), 0.0, 0.0])
            rhs.append(-(A * cos(u) + B * cos(u + v)))
            rows.append([0.0, 0.0, cos(v), -sin(v)])
            rhs.append(-B * cos(u + v))
    n = 4
    N = [[sum(r[i] * r[j] for r in rows) for j in range(n)]
         for i in range(n)]
    y = [sum(r[i] * t for r, t in zip(rows, rhs))
         for i in range(n)]
    x = solve_lu(N, y)[0]
    res = [sum(a * b for a, b in zip(r, x)) - t
           for r, t in zip(rows, rhs)]
    raw = [-t for t in rhs]
    rms = lambda v: sqrt(sum(e * e for e in v) / len(v))
    return rms(res), rms(raw), max(abs(e) for e in res)

def traj(t, w, c, a, ph):
    return (c + a * sin(w * t + ph), a * w * cos(w * t + ph),
            -a * w * w * sin(w * t + ph))

def torque_stats(P, spr, l1, w, c, a, ph, n=2000):
    """한 주기의 관절 토크 최대·RMS (스프링 토크는 뺌)"""
    pk, ss = [0.0, 0.0], [0.0, 0.0]
    for i in range(n):
        t = 2 * pi / w * i / n
        st = [traj(t, w, c[j], a[j], ph[j]) for j in range(2)]
        q = [x[0] for x in st]
        qd = [x[1] for x in st]
        qdd = [x[2] for x in st]
        tau = list(dyn2(P, q, qd, qdd))
        if spr:
            ts = spring3(spr, l1, q)
            tau = [tau[0] - ts[0], tau[1] - ts[1]]
        for j in range(2):
            pk[j] = max(pk[j], abs(tau[j]))
            ss[j] += tau[j] ** 2
    return pk, [sqrt(s / n) for s in ss]
1링크 영 자유길이 스프링 (예시 가정: $m=10$ kg, $l_c=0.5$ m, $a=0.6$ m, $b=0.4$ m)값
중력 토크 계수 $mgl_c$ · 필요한 강성 $k=mgl_c/(ab)$49.033 N·m · 204.31 N/m
총 위치에너지 $U+V$의 변동 폭 ($q\in[-30^\circ,90^\circ]$, 121점) · 평균1.42e-14 J · 53.119 J
구동에 남는 잔차 토크 $\max\lvert\tau_g-\tau_s\rvert$7.11e-15 N·m

영 자유길이 스프링의 총 위치에너지(상수 $53.119$ J)는 121점에서 변동이 $1.4\times10^{-14}$ J이고 남는 토크도 $7.1\times10^{-15}$ N·m(부동소수점 오차)이다.

코일 스프링 자유길이 $L_0$$a=0.6$ m 고정: $k$ · 최대 잔차$a\le0.8$ m 격자 최적: $a$ · $k$최대 잔차 · RMS최소 스프링 길이
50 mm222.9 N/m · 2.00 N·m (4.1 %)0.800 m · 163.7 N/m0.97 N·m (2.0 %) · 0.62 N·m400 mm
100 mm244.5 N/m · 4.44 N·m (9.0 %)0.800 m · 175.6 N/m2.09 N·m (4.3 %) · 1.33 N·m400 mm
150 mm269.8 N/m · 7.44 N·m (15.2 %)0.800 m · 189.2 N/m3.41 N·m (6.9 %) · 2.16 N·m400 mm

$a$를 $0.6$ m로 고정하면 최대 잔차가 $L_0$와 함께 $2.00\to4.44\to7.44$ N·m($4.1\to9.0\to15.2\,\%$)로 커진다. $a\le0.8$ m 안의 최적 $a$는 모든 경우에서 상한 $0.8$ m이고, 경계 최적이므로 설치 공간이 더 허락하면 잔차는 더 작아진다.

−30 0 30 60 90 −4 −2 0 2 4 링크 각도 q (deg) 구동 토크 (N·m) 코일 L0 = 50 mm 코일 L0 = 100 mm 코일 L0 = 150 mm 영 자유길이(잔차 0)
1링크의 구동 토크(중력 토크에서 스프링 토크를 뺀 값). 코일 스프링은 자유길이 $L_0=50\cdot100\cdot150$ mm에서 $b=0.4$ m, $a\le0.8$ m 격자 최적이고, 영 자유길이 스프링은 잔차가 0이어서 가로축과 겹친다.
균형 방식 (1링크)추가 질량관절 둘레 관성 $J$비고
균형 없음03.333 kg·m²중력 토크 최대 49.0 N·m
영 자유길이 스프링스프링 질량(이 장은 계산하지 않음)$J_0$ 그대로잔차 0
카운터웨이트 $r=0.2$ m25.0 kg4.333 kg·m² ($+30\,\%$)팔 길이가 짧을수록 질량이 커진다
카운터웨이트 $r=0.3$ m16.7 kg4.833 kg·m² ($+45\,\%$)팔 길이가 짧을수록 질량이 커진다
카운터웨이트 $r=0.5$ m10.0 kg5.833 kg·m² ($+75\,\%$)팔 길이가 짧을수록 질량이 커진다

카운터웨이트는 같은 정확 균형을 주지만 팔 길이 $r$이 질량과 관성을 반대로 움직인다. 영 자유길이 스프링은 관성이 그대로이고(스프링 질량 제외) 스프링 질량과 설치 공간이 비용이다.

이상 기체 가스 스프링: 압축 비율 $s=x/L_g$힘 비 $F/F_0$ (등온 $n=1$)힘 비 (단열 $n=1.4$)
0.101.1111.159
0.251.3331.496
0.502.0002.639
0.703.3335.395
온도 $253.15\cdot293.15\cdot333.15$ K에서 힘 비(밀폐 정량 기체, $p\propto T$)0.864 · 1.000 · 1.136—
2링크 팔 (링크 1 8 kg·0.5 m, 링크 2 5 kg·0.4 m, 말단 2 kg)값
중력 위치에너지 계수 $A$ ($\sin q_1$) · $B$ ($\sin(q_1+q_2)$)53.937 · 17.652 N·m
스프링 $\times$ 기하 곱 $k_aa_ab_a$ · $k_ba_bb_b$ · $k_cc_1c_2$24.517 · 17.652 · 17.652 N·m
강성 $k_a$ · $k_b$ · $k_c$ ($a_a=0.6$, $b_a=0.4$, $a_b=0.5$, $b_b=0.3$, $c_1=0.2$, $c_2=0.3$ m)102.2 · 117.7 · 294.2 N/m
무작위 자세 300개에서 $\max\lvert g(q)-\tau_s(q)\rvert$ (두 관절)1.42e-14 N·m
인접 링크 스프링만 (기저-링크 1, 링크 1-링크 2; 자세 격자 $19\times22$): 잔차 RMS · 중력 토크 RMS · 최대 잔차9.15 · 32.86 · 21.56 N·m

스프링 3개의 강성은 $k_a=102.2$, $k_b=117.7$, $k_c=294.2$ N/m이다. 위치에너지를 좌표에서 직접 만들어 수치 미분한 토크와 닫힌 식이 $3.6\times10^{-8}$ N·m 안에서 같고(미분의 중심 차분 오차), 그 값으로 Pinocchio 중력 $g(q)$를 빼면 잔차가 같은 크기이므로 균형이 정확하다. 인접 링크 스프링만 사용하면 자세 격자($q_1$ 0~90°, $q_2$ $-90^\circ\sim120^\circ$)에서 잔차 RMS가 $9.15$ N·m, 최대 $21.56$ N·m로 중력 토크 RMS $32.86$ N·m의 $28\,\%$이다.

구동 토크 (주기 2 s: $q_1=45^\circ+35^\circ\sin\omega t$, $q_2=30^\circ+40^\circ\sin(\omega t+0.5)$)추가 질량관절 1 최대·RMS (N·m)관절 2 최대·RMS (N·m)
무보상0.0 kg108.9 · 64.830.2 · 20.5
스프링 3개0.0 kg38.2 · 25.112.6 · 7.7
카운터웨이트 2개49.0 kg54.7 · 38.711.9 · 8.4
혼합(링크 2 카운터웨이트 + 스프링 1개)9.0 kg39.7 · 28.111.9 · 8.4
0.0 0.5 1.0 1.5 2.0 −60 −30 0 30 60 90 120 시간 (s) 관절 1 구동 토크 (N·m) 무보상 스프링 3개 카운터웨이트 2개
2링크 팔 관절 1의 구동 토크 한 주기(2 s). 무보상(파랑), 영 자유길이 스프링 3개의 정확 균형(주황), 카운터웨이트 2개(초록, 추가 질량 49 kg)이다.

관절 1의 최대 토크는 무보상 $108.9$ N·m에서 스프링 $38.2$, 카운터웨이트 $54.7$, 혼합 $39.7$ N·m로, RMS는 $64.8$에서 $25.1$, $38.7$, $28.1$ N·m로 줄었다. 스프링 균형의 남은 토크는 관성·코리올리 성분이다. 카운터웨이트 균형은 관성 증가로 같은 운동에서 관절 1 RMS가 스프링 균형보다 $54\,\%$ 크고 질량이 $49$ kg 늘었다. 혼합(링크 2에 $9$ kg 카운터웨이트, 링크 1에 스프링 1개)은 질량 $9$ kg의 추가로 스프링 3개 균형에 가까운 $28.1$ N·m를 얻었다. 관절 2는 스프링 균형에서 $12.6$ N·m(최대)이다.

말단 하중 불일치 (설계 하중 3 kg, 팔 길이 1 m)0 kg1 kg2 kg3 kg4 kg5 kg6 kg
잔차 토크 최대 (N·m)29.419.69.80.09.819.629.4

라이브러리 대조. 같은 입력에서 Pinocchio·MuJoCo·SciPy·numpy와 비교한 결과는 다음이다.

비교결과
Pinocchio computeGeneralizedGravity 대 이 장의 $g(q)$ (2링크, 자세 300개, 최대 차)2.13e-14 N·m
Pinocchio rnea 대 이 장의 닫힌 식 토크 (무보상, 주기 400점, 최대 차)1.25e-08 N·m
카운터웨이트 모델의 Pinocchio 중력 항 (자세 300개, 최대 크기; 점질량을 별도로 붙여 Pinocchio가 합성)2.84e-14 N·m
카운터웨이트 구동 토크 최대·RMS: Pinocchio RNEA 대 이 장 (4개 값의 최대 상대 차)1.58e-05 (이 장 관절 1: 54.73·38.70)
1링크 관성 $J_0$ · 카운터웨이트(25 kg, 0.2 m) 추가 후 $J$: Pinocchio crba (이 장 3.333 · 4.333)3.3333 · 4.3333 kg·m²
1링크 카운터웨이트 25 kg·0.2 m의 중력 토크 (Pinocchio, $q\in[-0.5,1.6]$ rad 최대 크기)9.53e-15 N·m
스프링 토크 $-\nabla V$ (좌표에서 직접 만든 위치에너지의 중심 차분) 대 이 장의 닫힌 식 (자세 300개, 최대 차)3.62e-08 N·m
Pinocchio 중력 $g(q)$ 빼기 스프링 토크 $-\nabla V$ (스프링 3개 정확 균형, 자세 300개, 최대 잔차)3.62e-08 N·m
스프링 3개 구동 토크 최대·RMS: Pinocchio RNEA − 수치 스프링 토크 대 이 장 (최대 상대 차)1.91e-05 (관절 1: 38.18·25.12)
MuJoCo 무보상 2링크의 $\max\lvert\ddot q\rvert$ (정지 상태, 자세 300개)46.89 rad/s²
MuJoCo 영 자유길이 스프링 3개(spatial 힘줄, stiffness=k, springlength=0)의 $\max\lvert\ddot q\rvert$7.42e-14 rad/s²
MuJoCo 본체 gravcomp="1"의 $\max\lvert\ddot q\rvert$ (같은 자세)5.55e-14 rad/s²
MuJoCo 1링크: $k=mgl_c/(ab)$일 때 순토크 최대 (자세 41점) · $k$를 10 % 낮추면1.42e-14 · 4.90 N·m (이론 4.90)
SciPy least_squares (경계 $a\in[0.45,0.8]$) 대 이 장의 코일 $L_0=100$ mm 격자·정규방정식: $a$ · $k$ · 잔차 RMS0.800 · 175.6 · 1.334 (이 장 0.800 · 175.6 · 1.334)
SciPy 최소최대(Nelder–Mead)로 줄인 최대 잔차 (경계 없음)0.022 N·m (이 장 최소제곱 해의 최대 2.090), $a$=6.534
numpy lstsq 대 이 장: 인접 링크 스프링만 사용할 때 잔차 RMS9.1523 N·m (이 장 9.1523)
도구 버전Pinocchio 4.1.0, MuJoCo 3.17.0, SciPy 1.18.1, numpy 2.5.4

모든 항목이 일치한다. Pinocchio RNEA와 닫힌 식의 차 $1.25\times10^{-8}$ N·m는 Pinocchio 모델에서 말단 하중과 카운터웨이트를 별도의 점질량($10^{-9}$ kg·m² 회전 관성)으로 붙인 것에서 오며 이 장의 결론을 바꾸지 않는다. SciPy의 최소최대 최적화가 설치 높이 $a$를 $6.5$ m까지 키운 것은 4.10.3.3의 해석(긴 스프링은 영 자유길이에 수렴)과 같으며 이 장의 설치 높이 상한 $0.8$ m는 이 장이 정한 가정이다. MuJoCo의 스프링 힘줄(spatial 힘줄, stiffness, springlength=0)은 영 자유길이 스프링을 직접 모델링하며 이 장의 닫힌 식 균형을 정지 가속도 $10^{-14}$ rad/s²로 확인했다.

한계. 합성 계산이고 모든 질량·치수는 가정이다. 스프링과 케이블·도르래의 질량, 마찰, 신장, 서징, 설치 간섭은 모델링하지 않았다. 코일 스프링 최적화는 $b$를 고정하고 $a$ 격자와 최소제곱 $k$만 탐색했으며 부착점 위치 전체의 최적화는 아니다. 2링크 팔은 평면이고 3차원 직렬 팔의 균형(구면 관절·오프셋)은 계산하지 않았다. 말단 하중 불일치는 해석식이고 실제 하중 변동 시나리오는 계산하지 않았다. 가스 스프링은 이상 기체 모형이며 실제 제품의 힘-행정과 열 교환은 확인하지 못했다. 평행사변형 기구는 계산하지 않았다.

견해: 연속 사용하는 팔의 중력 보상은 질량이 중요하면 영 자유길이 스프링(케이블·도르래 실현)을 기본으로 하고, 일부 링크에만 카운터웨이트를 섞는 혼합이 설계 여지가 크다고 본다. 근거는 이 장의 2링크 계산에서 ① 스프링 3개가 질량 변화 없이 관절 1 RMS 토크를 $-61\,\%$로 줄였고 ② 카운터웨이트만으로는 질량이 $49$ kg 늘고 RMS가 $38.7$ N·m에 머물렀으며 ③ 링크 2에만 카운터웨이트($9$ kg)를 두고 링크 1은 스프링 하나로 균형시킨 혼합이 $28.1$ N·m를 얻어 질량 증가를 $9$ kg으로 줄였다는 점이다. 이 비교는 합성 질량 분포와 이 운동 하나에 대한 것이고 스프링 질량·설치 공간·비용은 반영하지 않았다.

4.10.6 설계 트레이드오프 — 균형 방식의 선택

균형 방식은 다음 중에서 고른다.

  • ① 카운터웨이트. 정확 균형이 하중 방향·자세와 무관하고 힘 균형까지 되며 구조가 단순하다. 질량과 관성이 늘고 직렬 연쇄에서 급격히 커진다.
  • ② 영 자유길이 스프링. 질량·관성 증가가 거의 없고 정확하다. 케이블·도르래 실현이 필요하고 하중 변동에 민감하며 스프링 파손이 낙하로 이어진다.
  • ③ 가스 스프링·유압 밸런서. 작은 부피에 큰 힘을 내고 기성품이 많다. 힘-행정이 비선형이고 온도에 의존하며(저온 $-13.6\,\%$) 씰 마찰이 있다.
  • ④ 능동 보상. 정적 균형이 아니라 구동기가 $g(q)$를 상쇄한다. 하중 변동에 적응하지만 구동기 정격·열과 전원 차단 시 안전은 해결하지 못한다.
방식질량 증가관성 증가하중 변동 대응환경 민감성전원 차단 시
① 카운터웨이트큼(이 장 2링크 $+49$ kg)큼($r$가 길수록)설계 질량에만 정확낮음균형 유지
② 영 자유길이 스프링작음(스프링 질량, 이 장은 계산하지 않음)거의 없음설계 질량에만 정확, 사전 장력 조정케이블 신장·마찰균형 유지, 파손 시 낙하
③ 가스 스프링작음거의 없음압력 조정온도($p\propto T$)·씰균형 유지, 누설 시 균형 상실
④ 능동 보상없음없음센서·모델로 적응모델 오차구동·브레이크가 낙하 방지

견해: 가반하중이 일정하고 전원 차단 시 자세 유지가 중요한 팔은 ②와 ①의 혼합이, 하중이 자주 바뀌는 협동 작업 팔은 ④와 일부 ②(자중 보상)가 낫다고 본다. 근거는 이 장에서 ② 균형의 잔차가 하중 불일치 $1$ kg당 $9.8$ N·m($L=1$ m)로 하중에 선형 비례했고, ①이 질량 $49$ kg을 더한 점이다. 장기 신뢰성과 보수 비용은 이 장이 비교하지 않았다.

4.10.7 응용 축 비교

응용 축균형 기구가 맡는 일요구관련 장
산업·제조대형 고가반하중 팔의 중력 토크 분담(스프링·가스 밸런서 방식은 제조사 자료 확인 필요), 구동기 소형화와 발열 감소하중 변동 허용, 정비 주기, 파손 시 낙하 방지5.2, 7.6
물류·이동해당하는 고유 요구 없음——
도로 주행해당하는 고유 요구 없음——
서비스전원 차단 시 낙하 방지와 전력 절감(원리 수준)저비용, 정숙, 하중 범위7.5
의료·헬스케어지지 암과 재활·외골격의 자중 보상(원리 수준, Agrawal 외 2004는 서지만 확인)임의 자세 유지, 안전한 파손 모드32.17
휴머노이드·범용질량 한계로 말단 카운터웨이트가 불리하며 스프링·탄성 구동기 사용(원리 수준)낮은 관성, 백드라이버빌리티5.18, 7.2
필드장대·유압 팔의 균형 실린더·카운터웨이트, 저온에서 가스 압력 저하(원리 수준)온도 범위, 하중 변동, 내구7.6, 4.13
국방·안보해당하는 고유 요구 없음——

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

4.10.8 관련 규격·프로토콜

문서발행무엇을 정하나상세 장
EN 13906-2:2013CEN원형 선재 인장 코일 스프링의 계산·설계(판매처 목록의 범위 서술만 확인, 본문은 읽지 못했다)4.3
ISO 26909:2009ISO금속 스프링 용어(판매처 목록의 서술만 확인)4.3
ISO 2162-1:1993ISO도면의 스프링 간략 표시(판매처 목록의 서술만 확인)4.3
tendon(spatial, stiffness, springlength)·gravcompMuJoCo 3.17.0스프링 힘줄과 본체 중력 보상 속성(이 장은 동작만 확인했고 문서는 읽지 못했다)16.5
computeGeneralizedGravity·rneaPinocchio 4.1.0일반화 중력과 역동역학3.6
ISO 12100ISO기계 안전 일반 원칙(저장 에너지·중력 낙하의 조항 번호는 확인하지 못했다 (확인 필요))27.10

스프링 균형 기구를 규정한 로봇 전용 국제 표준은 확인하지 못했다 (확인 필요).

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

균형 기구 자체를 규정한 법령은 확인하지 못했다. 저장 에너지(스프링·가스)와 중력 낙하는 기계 안전의 일반 위험원이고, 로봇 팔은 전원 차단·브레이크 해제 때 자세 유지와 낙하 방지가 위험성 평가 항목이 된다. 조항은 확인하지 못했다 (확인 필요). 브레이크는 5.23, 산업 로봇 안전 표준은 27.10, 충돌 안전은 26.9에서 다룬다. 균형 기구의 정비(스프링 해체 전 에너지 해제)는 제조사 절차를 따르며 이 장은 절차를 확인하지 못했다.

4.10.10 한계·유의점·미해결

  • 스프링 모델의 단순화. 질량·마찰·신장·서징·설치 간섭을 모델링하지 않았다.
  • 영 자유길이의 실현 오차. 케이블 신장과 도르래 마찰이 잔차에 얼마나 기여하는지 계산하지 않았다.
  • 하중 변동. 실제 가반하중 범위 전체에서 허용 잔차와 조정 기구의 설계는 다루지 않았다.
  • 3차원 직렬 팔. 구면 손목·오프셋 구조의 균형은 계산하지 않았다.
  • 가스 스프링. 이상 기체 모형이며 열 교환·씰 마찰·제품 사양을 확인하지 못했다.
  • 제품·절차. 제조사별 밸런서 사양, 정비 주기, 안전 절차를 확인하지 못했다.

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

체크포인트:

  1. 1링크에서 $U+V$를 구하고 영 자유길이 스프링의 균형 조건 $kab=mgl_c$를 유도하라.
  2. 자유길이 $L_0$인 코일 스프링의 토크 $kab\cos q\,(1-L_0/r)$를 유도하고 잔차가 0이 되는 자세를 논하라.
  3. 카운터웨이트의 질량과 관성 비용 $m_{cw}=ml_c/r$, $\Delta J=ml_cr$를 유도하고 2링크에서 상류 카운터웨이트가 커지는 이유를 설명하라.
  4. 인접 링크의 영 자유길이 스프링이 단일 각도의 함수만 만드는 이유를 보이고, 기저-링크 2 스프링이 만드는 세 항을 유도하라.
  5. 스프링 3개의 설계식에서 $b_b\ge Bl_1/A$ 조건을 유도하고 위반 시 어떤 일이 생기는지 설명하라.
  6. 말단 하중 불일치가 만드는 잔차 토크를 구하고 구동기 정격과 비교하는 방법을 기술하라.

연구 질문:

  • 하중이 연속으로 변하는 팔에서 스프링 균형의 사전 장력이나 부착점을 능동으로 조정하는 기구를 어떻게 설계하고 에너지 이득을 어떻게 평가하는가(이 장은 계산하지 않았다)?
  • 3차원 직렬 팔의 정확 균형에 필요한 최소 스프링 수는 몇 개이고 구면 관절·오프셋이 있을 때 어떻게 달라지는가?
  • 케이블·도르래로 실현한 영 자유길이 스프링의 신장과 마찰을 포함한 잔차를 모델링하고 실측으로 검증할 수 있는가?
  • 균형 요소의 파손을 어떻게 검출하고 안전하게 대응하는가?

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

  • S. Segla, "Static balancing of robot mechanisms and manipulation devices," Journal of Mechanical Engineering – Strojnícky časopis 68(2), 77–90, 2018, doi:10.2478/scjme-2018-0019 — 직접 읽음(공개 PDF).
  • J. P. Whitney 외(Disney Enterprises), 미국 특허 US 9,314,934 B2 "Gravity-counterbalanced robot arm," 출원 2014-02-27, 발행 2016-04-19 — 명세서 중 1링크 영 자유길이 스프링 식과 구현·카운터웨이트 서술을 직접 읽음.
  • D. A. Streit, B. J. Gilmore, "'Perfect' spring equilibrators for rotatable bodies," Journal of Mechanisms, Transmissions, and Automation in Design 111(4), 451–458, 1989, doi:10.1115/1.3259020 — 서지만 확인.
  • J. L. Herder, "Design of spring force compensation systems," Mechanism and Machine Theory 33(1–2), 151–161, 1998, doi:10.1016/s0094-114x(97)00027-x — 서지만 확인.
  • J. L. Herder, Energy-free systems: theory, conception and design of statically balanced spring mechanisms, 박사학위 논문, TU Delft, 2001 — 저장소 레코드의 메타데이터만 확인(본문 접속 실패).
  • S. K. Agrawal, A. Fattah, "Gravity-balancing of spatial robotic manipulators," Mechanism and Machine Theory 39(12), 1331–1344, 2004, doi:10.1016/j.mechmachtheory.2004.05.019 — 서지만 확인.
  • V. Arakelian, "Gravity compensation in robotics," Advanced Robotics 30(2), 79–96, 2016, doi:10.1080/01691864.2015.1090334 — 서지만 확인.
  • C. Gosselin, "Gravity compensation, static balancing and dynamic balancing of parallel mechanisms," Smart Devices and Machines for Advanced Manufacturing, Springer, 27–48, doi:10.1007/978-1-84800-147-3_2 — 서지만 확인.
  • EN 13906-2:2013, ISO 26909:2009, ISO 2162-1:1993 — 판매처 목록의 범위 서술만 확인.
  • Pinocchio 4.1.0, MuJoCo 3.17.0, SciPy 1.18.1, numpy 2.5.4.

다음 장. 4.11은 케이블·호스 관리(드레스팩·슬립링·로터리 조인트)를 다룬다. 이 장에서 중력을 수동 요소로 상쇄한 관절이 움직일 때 배선과 유체 호스가 겪는 굽힘·꼬임·피로의 기계 설계를 다룬다.