Curieux.JY
  • JungYeon Lee
  • Post
  • Note

On this page

  • ๐Ÿ” Ping Review
  • ๐Ÿ”” Ring Review
    • ์„œ๋ก : ์™œ ์ง€๊ธˆ ์ด ๋ฌธ์ œ์ธ๊ฐ€?
    • ๋ฐฐ๊ฒฝ: ๋‘ ์„ธ๊ณ„์˜ ์ถฉ๋Œ
      • ๊ฐ์†Œ ์ขŒํ‘œ๊ณ„ vs. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„
      • ๋ฃจํ”„๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€: Delassus ํ–‰๋ ฌ
    • ๋ฐฉ๋ฒ•: Kamino์˜ ์„ค๊ณ„ ์ฒ ํ•™
      • 1. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„ + Proximal-ADMM (PADMM)
      • 2. ๋‘ ๊ฐ€์ง€ ์„ ํ˜• ์‹œ์Šคํ…œ ์†”๋ฒ„ ์ „๋žต
      • 3. GPU ๋ณ‘๋ ฌํ™”: ์ด์ข…(heterogeneous) ์„ธ๊ณ„ ์ง€์›
      • 4. CUDA Graph Capture๋กœ ๋ฐ˜๋ณต ๋ฃจํ”„ ๊ฐ€์†
      • 5. Newton ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ๊ณผ Isaac Lab ๊ณ„ํš
    • ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ
    • ์‹คํ—˜: ๋ฌด์—‡์„ ๊ฒ€์ฆํ–ˆ๋Š”๊ฐ€?
      • ํ‰๊ฐ€ ๋Œ€์ƒ ๋กœ๋ด‡ ์‹œ์Šคํ…œ
      • ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ๋ฐ ํ™•์žฅ์„ฑ
      • DR Legs RL ์ •์ฑ… ํ•™์Šต
    • ๊ด€๋ จ ์—ฐ๊ตฌ์™€์˜ ๋น„๊ต
      • GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ƒํƒœ๊ณ„์—์„œ์˜ ์œ„์น˜
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜์  ์„ ์กฐ๋“ค
    • ๋น„ํŒ์  ๊ณ ์ฐฐ: ๋ฌด์—‡์„ ์–ป๊ณ  ๋ฌด์—‡์„ ์žƒ๋Š”๊ฐ€?
      • ๊ฐ•์ 
      • ์•ฝ์  ๋ฐ ํ•œ๊ณ„
    • Allegro Hand / Dexterous Manipulation ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ ๊ด€์ 
    • ์š”์•ฝ ๋ฐ ๊ฒฐ๋ก 
    • ์ฐธ๊ณ ๋ฌธํ—Œ ๋ฐ ๊ด€๋ จ ์ž๋ฃŒ

๐Ÿ“ƒKamino ๋ฆฌ๋ทฐ

proximal-admm
rl
simulation
GPU-based Massively Parallel Simulation of Multi-Body Systems with Challenging Topologies
Published

April 2, 2026

  • Paper Link
  • Project Page
  • Code Link
  1. ๐Ÿš€ Kamino๋Š” NVIDIA Warp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋œ GPU ๊ธฐ๋ฐ˜ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์†”๋ฒ„๋กœ, ๋ณต์žกํ•œ kinematic loop๋ฅผ ํฌํ•จํ•œ ์ด์ข…์˜ ๋‹ค์ค‘ ๋ฐ”๋”” ์‹œ์Šคํ…œ์„ ๋ณ‘๋ ฌ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ Reinforcement Learning(๊ฐ•ํ™” ํ•™์Šต)์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  2. โš™๏ธ ์ด ์†”๋ฒ„๋Š” Maximal-Coordinate Formulation๊ณผ Proximal-ADMM์„ ํ†ตํ•ด ๊ด€์ ˆ ์ œ์•ฝ ์กฐ๊ฑด, ๊ด€์ ˆ ํ•œ๊ณ„, ๋งˆ์ฐฐ ์ ‘์ด‰์„ ํ†ตํ•ฉ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, heterogeneous world๋ฅผ ์ง€์›ํ•˜์—ฌ ๊ตฌ์กฐ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋กœ๋ด‡์˜ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๐Ÿ“ˆ Kamino๋Š” DR Legs์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ๋กœ๋ด‡์— ๋Œ€ํ•œ RL ์ •์ฑ… ํ•™์Šต์„ ๋‹จ์ผ GPU์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ณ‘๋ ฌ ํ™˜๊ฒฝ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์—ฐํ–ˆ์œผ๋ฉฐ, ํŠนํžˆ ์ ‘์ด‰ ์ œ์•ฝ ์กฐ๊ฑด์ด ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋†’์€ ์ถฉ์‹ค๋„์™€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ” Ping Review

๐Ÿ” Ping โ€” A light tap on the surface. Get the gist in seconds.

Kamino๋Š” ์ด์ข…์˜ ๊ณ ๋„๋กœ ๊ฒฐํ•ฉ๋œ ๊ธฐ๊ณ„ ์‹œ์Šคํ…œ์˜ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ GPU ๊ธฐ๋ฐ˜ ๋ฌผ๋ฆฌ ์†”๋ฒ„์ž…๋‹ˆ๋‹ค. NVIDIA Warp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Python์œผ๋กœ ๊ตฌํ˜„๋˜์—ˆ๊ณ  Newton ํ”„๋ ˆ์ž„์›Œํฌ์— ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์šด๋™ํ•™์  ๋ฃจํ”„์™€ ๊ฐ™์ด ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋œ ์šด๋™ํ•™์  ๋ฐ ๋™์  ์ œ์•ฝ์„ ๋ณด์ด๋Š” ๋ณต์žกํ•œ ๋กœ๋ด‡ ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•(์˜ˆ: ๋Œ€๊ทœ๋ชจ Reinforcement Learning)์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ์‹œ์Šคํ…œ ํ† ํด๋กœ์ง€๋ฅผ ์šด๋™ํ•™์  ํŠธ๋ฆฌ๋กœ ๊ทผ์‚ฌํ•˜๊ณ  ๋ช…์‹œ์ ์ธ ๋ฃจํ”„-ํ์‡„ ์ œ์•ฝ ์กฐ๊ฑด ๋˜๋Š” ์†Œ์œ„ โ€™mimic jointsโ€™๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์šด๋™ํ•™์  ๋ฃจํ”„๋ฅผ ํšŒํ”ผํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์—ˆ์œผ๋‚˜, Kamino๋Š” ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๊ฒฐํ•ฉ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜์—ฌ ์ด ๋ถ€๋‹ด์„ ๊ฒฝ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ์‡„ํ˜• ์šด๋™ํ•™์  ์ฒด์ธ์„ ํ™œ์šฉํ•˜๋Š” ๊ธฐ๊ณ„ ์‹œ์Šคํ…œ์˜ ์‹ค์ œ ํŠน์„ฑ์„ ํฌ์ฐฉํ•˜๋Š” ๊ณ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, Kamino๋Š” ์ด์ข… ์„ธ๊ณ„(heterogeneous worlds)๋ฅผ ์ง€์›ํ•˜์—ฌ ๋‹จ์ผ GPU์—์„œ ๊ตฌ์กฐ์ ์œผ๋กœ ๋‹ค์–‘ํ•œ ๋กœ๋ด‡์˜ ๋ฐฐ์น˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

Kamino์˜ ํ•ต์‹ฌ์€ ์ œ์•ฝ๋œ ๊ฐ•์ฒด ๋‹ค๋ฌผ์ฒด ์ „๋ฐฉ ๋™์—ญํ•™์„ ๋น„์„ ํ˜• ์ƒ๋ณด์„ฑ ๋ฌธ์ œ(Nonlinear Complementarity Problem, NCP)๋กœ ์ „์‚ฌํ•˜์—ฌ ์ œ์•ฝ ํž˜(constraint forces)์„ ๊ณ„์‚ฐํ•˜๋Š” ์ตœ์‹  ์ œ์•ฝ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ œ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณผ๋กํ™”ํ•˜๋Š” ๊ทผ์‚ฌ ๋ชจ๋ธ์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ ‘์ด‰ ๋™์—ญํ•™์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ •๋ฐ€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๋ฐฉ๋ฒ•๋ก  (Core Methodology)

Kamino๋Š” Maximal-coordinate formulation [12]์„ ์ฑ„ํƒํ•˜์—ฌ ๊ฐ ๊ฐ•์ฒด i๊ฐ€ ๋…๋ฆฝ์ ์ธ \text{SE}(3) ์ž์„ธ q_i = (r_i, q_i) \in \mathbb{R}^3 \times \text{S}^3์™€ 6D ๊ณต๊ฐ„ ํŠธ์œ„์ŠคํŠธ u_i = (v_i, \omega_i) \in \mathbb{R}^6๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ์งˆ๋Ÿ‰ ํ–‰๋ ฌ์€ ๋ธ”๋ก-๋Œ€๊ฐ(block-diagonal) ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค: M = \text{diag}(M_1, \dots, M_{nb}), \quad M_i = \begin{pmatrix} m_i I_3 & 0 \\ 0 & R_i I_i^b R_i^\top \end{pmatrix} ์—ฌ๊ธฐ์„œ m_i๋Š” ์งˆ๋Ÿ‰, I_i^b๋Š” ๊ฐ•์ฒด-์ขŒํ‘œ๊ณ„(body-frame) ๊ด€์„ฑ ํ…์„œ, R_i๋Š” ์ฟผํ„ฐ๋‹ˆ์–ธ q_i์—์„œ ์ถ”์ถœ๋œ ํšŒ์ „์ž…๋‹ˆ๋‹ค. ์šด๋™ ๋ฐฉ์ •์‹์€ Newton-Euler formulation์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค: M\dot{u} = h(q, u) + J(q)^\top \lambda, ์—ฌ๊ธฐ์„œ h๋Š” ์ค‘๋ ฅ, ์ž์ด๋กœ์Šค์ฝ”ํ”ฝ ๋ฐ ์ˆœ์ˆ˜ ์™ธ๋ถ€ ํž˜, J๋Š” ์ œ์•ฝ Jacobian, \lambda๋Š” ์ œ์•ฝ ๋ฐ˜์‘ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค.

์„ธ ๊ฐ€์ง€ ๋ฒ”์ฃผ์˜ ์ œ์•ฝ ์กฐ๊ฑด์ด ๋‹จ์ผ ์‹œ์Šคํ…œ์œผ๋กœ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค:

  1. ์–‘๋ฐฉํ–ฅ(Bi-lateral) ๋ฐ ๋‹จ๋ฐฉํ–ฅ(Unilateral) ์กฐ์ธํŠธ ์ œ์•ฝ ์กฐ๊ฑด: f(q) = 0 ํ˜•ํƒœ๋กœ, ์šด๋™ํ•™์  ๊ด€๊ณ„๋ฅผ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. Maximal-coordinate formulation์˜ ํ•ต์‹ฌ ์žฅ์ ์€ ๋ฃจํ”„-ํ์‡„ ์ œ์•ฝ ์กฐ๊ฑด์ด ์ผ๋ฐ˜์ ์ธ ์กฐ์ธํŠธ ์ œ์•ฝ ์กฐ๊ฑด๊ณผ ๊ตฌ์กฐ์ ์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜์–ด ํŠน๋ณ„ํ•œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š” ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.
  2. ๋‹จ๋ฐฉํ–ฅ ์กฐ์ธํŠธ ํ•œ๊ณ„: ์กฐ์ธํŠธ ์ขŒํ‘œ์— ๋Œ€ํ•œ ๋ถ€๋“ฑ์‹ ํ•œ๊ณ„๋ฅผ 0 \le \lambda \perp g(q) \ge 0 ํ˜•ํƒœ๋กœ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค.
  3. ์ ‘์ด‰(Contacts): De Saxcยดe correction [20, 21]์„ ์‚ฌ์šฉํ•˜์—ฌ Signorini-Coulomb-Newton ์ƒ๋ณด์„ฑ์œผ๋กœ ๋ชจ๋ธ๋ง๋˜๋ฉฐ, ๋น„๊ด€๋ จ Coulomb ๋งˆ์ฐฐ ๋ฒ•์น™์„ Coulomb cone K = \bigoplus_k K_{\mu_k}์˜ ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์— ๋Œ€ํ•œ ์ƒ๋ณด์„ฑ ์กฐ๊ฑด์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ์€ semi-implicit Euler integration [23]์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„์ ์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ œ์•ฝ ๋ฐ˜์‘์€ ์•”์‹œ์ ์œผ๋กœ ํ•ด๊ฒฐ๋˜๊ณ , ์ž์„ธ๋Š” \text{SO}(3)์— ๋Œ€ํ•œ exponential map์„ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ํ†ตํ•ฉ๋ฉ๋‹ˆ๋‹ค. Moreau-Jean midpoint scheme [24]๋„ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์šด๋™ ๋ฐฉ์ •์‹๊ณผ ์‹œ๊ฐ„-๋‹จ๊ณ„(time-stepping) ์Šคํ‚ค๋งˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ KKT ์‹œ์Šคํ…œ์„ ๋„์ถœํ•ฉ๋‹ˆ๋‹ค: \begin{pmatrix} M & J^\top \\ J & -R \end{pmatrix} \begin{pmatrix} \dot{u} \\ -\lambda \end{pmatrix} = \begin{pmatrix} \Delta t h + M u \\ -v^* \end{pmatrix} ์—ฌ๊ธฐ์„œ v^*๋Š” Baumgarte stabilization, impact biases ๋ฐ PD ์ œ์–ด์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ•ญ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ์ด๋ฉฐ, R์€ armature, ์ ์„ฑ ๊ฐ์‡ , ์•”์‹œ์  PD ์ œ์–ด์™€ ๊ฐ™์€ ์กฐ์ธํŠธ ๊ณต๊ฐ„ ๋™์—ญํ•™ ์ œ์•ฝ ์กฐ๊ฑด์—์„œ ํŒŒ์ƒ๋œ ์ •๊ทœํ™” ํ•ญ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์†๋„ ๋ณ€์ˆ˜๋ฅผ Schur complement๋ฅผ ํ†ตํ•ด ์ œ๊ฑฐํ•˜๋ฉด, ์ „๋ฐฉ ๋™์—ญํ•™ ๋ฌธ์ œ๋Š” ์ œ์•ฝ ๋ฐ˜์‘ \lambda์— ๋Œ€ํ•œ ์ด์ค‘ ๋ฌธ์ œ(dual problem)๋กœ ์ถ•์†Œ๋ฉ๋‹ˆ๋‹ค [11]: \lambda^* = \arg\min_{x \in K} \frac{1}{2} x^\top D x + x^\top v_f + \Gamma(v^+(x)) ์—ฌ๊ธฐ์„œ D = J M^{-1} J^\top + R์€ Delassus matrix(์ฆ‰, ์ œ์•ฝ ๊ณต๊ฐ„ ์—ญ ๊ฒ‰๋ณด๊ธฐ ๊ด€์„ฑ ํ–‰๋ ฌ)์ด๊ณ , v_f = J u^- + \Delta t M^{-1} h + v^*๋Š” ์ž์œ  ์†๋„ ๋ฒกํ„ฐ์ž…๋‹ˆ๋‹ค. \Gamma(\cdot)์€ De Saxcยดe correction operator๋กœ ๋ชฉ์  ํ•จ์ˆ˜๋ฅผ ๋น„์„ ํ˜•์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ด ๋น„ํ‰ํ™œ(non-smooth), ์›๋ฟ”-์ œ์•ฝ(cone-constrained) ์ตœ์ ํ™” ๋ฌธ์ œ๋Š” Proximal-ADMM (PADMM) [11, 17, 15]์„ ํ†ตํ•ด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. PADMM์€ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์›๋ฟ” K์— ์ œ์•ฝ๋œ ํ•ฉ์˜ ๋ณ€์ˆ˜(consensus variable) y์™€ ์Šค์ผ€์ผ๋œ ์ด์ค‘ ๋ณ€์ˆ˜(dual variable) z, ๊ทธ๋ฆฌ๊ณ  proximal regularization ๋งค๊ฐœ๋ณ€์ˆ˜ \eta์™€ ์ฆ๊ฐ•-Lagrangian ํŽ˜๋„ํ‹ฐ \rho๋ฅผ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฐ˜๋ณต ๋‹จ๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. D_{\eta, \rho} = D + (\eta + \rho)I๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
  2. x^i๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ์„ ํ˜• ์‹œ์Šคํ…œ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค: x^i \leftarrow -D_{\eta, \rho}^{-1} (v_f + s^i - \eta x^{i-1} - \rho y^{i-1} - z^{i-1}), ์—ฌ๊ธฐ์„œ s^i = \Gamma(z^{i-1})์ž…๋‹ˆ๋‹ค.
  3. y^i \leftarrow \Pi_K(x^i - \rho^{-1} z^{i-1})์™€ ๊ฐ™์ด ์›๋ฟ” ํˆฌ์˜์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. z^i \leftarrow z^{i-1} - \rho(x^i - y^i)์™€ ๊ฐ™์ด ์ด์ค‘ ๋ณ€์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

Nesterov acceleration๊ณผ warm-starting ๊ธฐ๋ฒ•์ด ์ˆ˜๋ ด์„ ๊ฐ€์†ํ™”ํ•˜๊ณ , Jacobi preconditioner P = \text{diag}(D)^{-1/2}๊ฐ€ ์ŠคํŽ™ํŠธ๋Ÿผ ์†์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

GPU ๋ณ‘๋ ฌํ™” ๋ฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”

Kamino๋Š” ์ˆ˜์ฒœ ๊ฐœ์˜ ๋…๋ฆฝ๋œ ํ™˜๊ฒฝ์„ ๋™์‹œ์— ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ด์•ผ ํ•˜๋Š” RL ์›Œํฌํ”Œ๋กœ์šฐ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์„ ํ˜• ์‹œ์Šคํ…œ ํ•ด๊ฒฐ:
    • ์‚ฌ์šฉ์ž๋Š” Jacobian ํ–‰๋ ฌ J๋ฅผ Dense ๋˜๋Š” Block-Sparse-Row (BSR) ํ˜•์‹์œผ๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BSR ํ˜•์‹์€ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ์—ฐ์‚ฐ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ์ ˆ๊ฐํ•ฉ๋‹ˆ๋‹ค.
    • ๋™์—ญํ•™ ๋ฌธ์ œ ํ‘œํ˜„์€ Dense (D ํ–‰๋ ฌ์„ ๋ช…์‹œ์ ์œผ๋กœ ์กฐ๋ฆฝํ•˜๊ณ  LLT factorization) ๋˜๋Š” Sparse (ํ–‰๋ ฌ-์ž์œ (matrix-free) Delassus ์—ฐ์‚ฐ์ž๋ฅผ Conjugate Residual (CR) iterative solver [13]์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ)๋กœ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ์‹œ์Šคํ…œ์—๋Š” Dense LLT๊ฐ€ ํšจ์œจ์ ์ด์ง€๋งŒ, ํฐ ์‹œ์Šคํ…œ์—์„œ๋Š” Sparse CR์ด ๋ฉ”๋ชจ๋ฆฌ ๋ฐ ๊ณ„์‚ฐ ๋น„์šฉ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. Sparse CR์€ Dv ์—ฐ์‚ฐ์„ J, M^{-1}, J^\top์™€์˜ ํฌ์†Œ ํ–‰๋ ฌ-๋ฒกํ„ฐ ๊ณฑ์„ ์—ฐ๊ฒฐํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋น„์ œ๋กœ ๋ธ”๋ก์— ๊ฑธ์ณ ๋ณ‘๋ ฌํ™”๋ฉ๋‹ˆ๋‹ค.
    • GPU ์ตœ์ ํ™”๋กœ๋Š” โ€˜Pre-baked Jacobiansโ€™ (๋Œ€๊ฐ์„  preconditioner์™€ M^{-1}๋ฅผ Jacobian ์‚ฌ๋ณธ์— ํ†ตํ•ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ-๋ฐ”์šด๋“œ ์—ฐ์‚ฐ ๊ฐ์†Œ) ๋ฐ โ€˜Low iteration budgetโ€™ (ADMM ์ˆ˜๋ ด ์‹œ ์ด์ „ ๋ฐ˜๋ณต์˜ ํ•ด๋กœ CR ์†”๋ฒ„๋ฅผ warm-startํ•˜์—ฌ ์ ์€ ๋ฐ˜๋ณต์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•œ ์ˆ˜๋ ด ๋‹ฌ์„ฑ)์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด์ข… ํ™˜๊ฒฝ (Heterogeneous Environments):
    • ๊ธฐ์กด ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์™€ ๋‹ฌ๋ฆฌ, Kamino๋Š” ๋ชจ๋“  ์„ธ๊ณ„๊ฐ€ ๋™์ผํ•œ ์ˆ˜์˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์—”ํ‹ฐํ‹ฐ(์˜ˆ: ๊ฐ•์ฒด, ์กฐ์ธํŠธ)๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ œ์•ฝ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    • ๋ชจ๋“  GPU ์ปค๋„์€ (num worlds, max dim) ํ˜•ํƒœ์˜ 2D ์Šค๋ ˆ๋“œ ๊ทธ๋ฆฌ๋“œ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, โ€™max dimโ€™์€ ๋ชจ๋“  ์„ธ๊ณ„์—์„œ ๊ด€๋ จ ์ˆ˜๋Ÿ‰(๊ฐ•์ฒด, ์ œ์•ฝ, ์ ‘์ด‰ ๋“ฑ)์˜ ์ตœ๋Œ€๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ฐ ์„ธ๊ณ„๋Š” ์‹ค์ œ ์ฐจ์›์„ ์ €์žฅํ•˜๋ฉฐ, ์Šค๋ ˆ๋“œ๋Š” ํ•ด๋‹น ์„ธ๊ณ„์˜ ์นด์šดํŠธ๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์กฐ๊ธฐ์— ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.
    • Struct-of-Arrays (SoA) ๋ ˆ์ด์•„์›ƒ์€ GPU ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์˜ coalesced ์•ก์„ธ์Šค๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
    • PADMM ์†”๋ฒ„ ๋ฃจํ”„ ์ „์ฒด๋Š” Warp์˜ wp.capture_while์„ ์‚ฌ์šฉํ•˜์—ฌ CUDA ๊ทธ๋ž˜ํ”„๋กœ ์บก์ฒ˜๋˜์–ด ์ปค๋„ ์‹คํ–‰ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐฐ์—ด ๋ชจ์–‘์ด ๊ทธ๋ž˜ํ”„ ์บก์ฒ˜ ์‹œ์ ์— ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  Delassus operator๊ฐ€ ์‹œ๊ฐ„ ๋‹จ๊ณ„ ๋‚ด์—์„œ ์ผ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, PADMM์ด ์ด๋ฏธ ์ˆ˜๋ ดํ•œ ์„ธ๊ณ„๋Š” ์กฐ๊ธฐ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ๊ณ„๋ณ„ ๋งˆ์Šคํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

Kamino๋Š” DR Legs์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ๋กœ๋ด‡์˜ RL ์ •์ฑ… ํ›ˆ๋ จ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์—ฐํ•˜๋ฉฐ, ๋‹จ์ผ GPU์—์„œ ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ณ‘๋ ฌ ํ™˜๊ฒฝ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. Maximal-coordinate formulation์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฐœ์ƒํ•˜๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰ ์˜ค๋ฒ„ํ—ค๋“œ๋Š” GPU์˜ SIMT ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋Šฅ๋ ฅ์œผ๋กœ ํšจ๊ณผ์ ์œผ๋กœ ์™„ํ™”๋ฉ๋‹ˆ๋‹ค. ์ด์ข… ์„ธ๊ณ„ ์ฒ˜๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ๋กœ๋ด‡ ํ˜•ํƒœ์— ๋Œ€ํ•œ ๋ฐฐ์น˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ, ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์„ค๊ณ„ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ƒ˜ํ”Œ๋ง ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ  ์ ์šฉ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด์ค๋‹ˆ๋‹ค. ํ˜„์žฌ Kamino๋Š” ๊ฐ•์ฒด ๋‹ค๋ฌผ์ฒด ์‹œ์Šคํ…œ์— ์ค‘์ ์„ ๋‘๊ณ  ์žˆ์œผ๋ฉฐ, ์ž…์ž ๋ฐ ์—ฐ์ฒด ์ง€์›, ์—”๋“œ-ํˆฌ-์—”๋“œ ์†”๋ฒ„ ๋ฏธ๋ถ„ ๊ฐ€๋Šฅ์„ฑ, ํ”„๋ผ์ด๋ฉ€ ๋ฐ KKT ์‹œ์Šคํ…œ ์ง€์› ๋“ฑ์€ ํ–ฅํ›„ ์—ฐ๊ตฌ ๊ณผ์ œ์ž…๋‹ˆ๋‹ค.

๐Ÿ”” Ring Review

๐Ÿ”” Ring โ€” An idea that echoes. Grasp the core and its value.

์„œ๋ก : ์™œ ์ง€๊ธˆ ์ด ๋ฌธ์ œ์ธ๊ฐ€?

๊ฐ•ํ™”ํ•™์Šต(RL)์œผ๋กœ ๋กœ๋ด‡ ์ œ์–ด ์ •์ฑ…์„ ํ•™์Šตํ•˜๋ ค๋ฉด, ์ˆ˜์ฒœ ๊ฐœ์˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ์„ ๋™์‹œ์— ๋Œ๋ฆด ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. Isaac Gym์ด 2021๋…„ ๋“ฑ์žฅํ•˜๋ฉด์„œ GPU ๊ธฐ๋ฐ˜ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ผ๋ฐ˜ํ™”๋˜์—ˆ๊ณ , ์ด์ œ ๋‹จ์ผ GPU์—์„œ 4096๊ฐœ์˜ ํ™˜๊ฒฝ์„ ๋Œ๋ฆฌ๋ฉฐ ์‹ค์ œ ๋กœ๋ด‡ ๊ฑท๊ธฐ๋ฅผ ํ•™์Šต์‹œํ‚ค๋Š” ๊ฑด ๋” ์ด์ƒ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์— ์กฐ์šฉํžˆ ๋ฐฉ์น˜๋˜์–ด ์˜จ ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜ ์žˆ๋‹ค.

ํ˜„์‹ค์˜ ๋กœ๋ด‡์€ ํŠธ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์‚ฌ์กฑ๋ณดํ–‰ ๋กœ๋ด‡์˜ ๋‹ค๋ฆฌ, ์ด์กฑ๋ณดํ–‰ ๋กœ๋ด‡์˜ ๋ฌด๋ฆŽ, ๋””์ฆˆ๋‹ˆ ํŒŒํฌ์˜ ํผํฌ๋จผ์Šค ๋กœ๋ด‡, ์ •๋ฐ€ ๋ณ‘๋ ฌ ๋งค๋‹ˆํ“ฐ๋ ˆ์ดํ„ฐ โ€” ์ด๋“ค ์ƒ๋‹น์ˆ˜๋Š” ๋‹ซํžŒ ์šด๋™ํ•™์  ๋ฃจํ”„(closed kinematic loop), ์ฆ‰ 4์ ˆ ๋งํฌ(four-bar linkage)๋‚˜ ๋ณ‘๋ ฌ ๊ธฐ๊ตฌ๋ฅผ ๋‚ด๋ถ€์— ๋‹ด๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ตฌ์กฐ๋Š” ์ง๋ ฌ ์ฒด์ธ๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ํž˜์„ ์ „๋‹ฌํ•˜๊ณ  ๊ฐ•์„ฑ์„ ๋†’์ธ๋‹ค. ๊ธฐ๊ณ„๊ณตํ•™์ ์œผ๋กœ๋Š” ํƒ์›”ํ•œ ์„ค๊ณ„๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ž…์žฅ์—์„œ๋Š” ์•…๋ชฝ์ด๋‹ค.

๊ธฐ์กด GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋“ค(Isaac Gym, Brax, MuJoCo MJX)์€ ๋Œ€๋ถ€๋ถ„ ๊ฐ์†Œ ์ขŒํ‘œ๊ณ„(reduced-coordinate) ๊ธฐ๋ฐ˜์˜ ๊ด€์ ˆํ˜• ๋ฐ”๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜(Articulated Body Algorithm, ABA)์„ ์“ด๋‹ค. ์ด ๋ฐฉ์‹์€ ์šด๋™ํ•™์  ํŠธ๋ฆฌ๋ฅผ ์ „์ œ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์–ด์„œ, ๋ฃจํ”„ ํด๋กœ์ €๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ตฌ์กฐ ์ž์ฒด๊ฐ€ ๊นจ์ง„๋‹ค. ์‹ค๋ฌด์ž๋“ค์€ ์–ด์ฉ” ์ˆ˜ ์—†์ด ๋ฃจํ”„๋ฅผ โ€œ๋Š๊ณ โ€ ๋“ฑ๊ฐ€์ ์ธ ํŠธ๋ฆฌ๋กœ ๊ทผ์‚ฌํ•˜๊ฑฐ๋‚˜, mimic joint๋‚˜ ๋ณ„๋„ penalty ์ œ์•ฝ์œผ๋กœ ํ‰๋‚ด๋ฅผ ๋‚ธ๋‹ค. ์ด๋Š” sim-to-real gap์„ ํ‚ค์šฐ๊ณ , ์ •ํ™•ํ•œ ๋™์—ญํ•™์„ ํฌ๊ธฐํ•˜๋Š” ํƒ€ํ˜‘์ด๋‹ค.

Kamino๋Š” ์ด ํƒ€ํ˜‘์„ ๊ฑฐ๋ถ€ํ•œ๋‹ค.

Disney Research์™€ NVIDIA Zurich์˜ ๊ณต๋™ ์—ฐ๊ตฌํŒ€์ด ๋ฐœํ‘œํ•œ ์ด ๋…ผ๋ฌธ์€, ์ž„์˜์˜ ์กฐ์ธํŠธ ํ† ํด๋กœ์ง€๋ฅผ ๊ฐ€์ง„ ๊ฐ•์ฒด ๋‹ค์ฒด๊ณ„๋ฅผ GPU์—์„œ ์ˆ˜์ฒœ ๊ฐœ ๋™์‹œ์— ์ •ํ™•ํ•˜๊ฒŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ์†”๋ฒ„๋ฅผ ์ œ์‹œํ•œ๋‹ค. ํ•ต์‹ฌ์€ ๋‘ ๊ฐ€์ง€๋‹ค: ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„(maximal-coordinate) ์ •์‹ํ™”์™€ Proximal-ADMM ๊ธฐ๋ฐ˜ ์Œ๋Œ€ ์†”๋ฒ„. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์„ NVIDIA Warp ์œ„์—์„œ ์ˆœ์ˆ˜ Python GPU ์ปค๋„๋กœ ๊ตฌํ˜„ํ•ด, Newton ๋ฌผ๋ฆฌ ์—”์ง„์— ํ†ตํ•ฉํ–ˆ๋‹ค.


๋ฐฐ๊ฒฝ: ๋‘ ์„ธ๊ณ„์˜ ์ถฉ๋Œ

๊ฐ์†Œ ์ขŒํ‘œ๊ณ„ vs. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„

๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—์„œ ๊ฐ•์ฒด ๋‹ค์ฒด๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋‹ค.

๊ฐ์†Œ ์ขŒํ‘œ๊ณ„(Reduced Coordinates)๋Š” ๊ฐ ์กฐ์ธํŠธ์˜ ์ž์œ ๋„(DOF)๋งŒ์„ ์ƒํƒœ ๋ณ€์ˆ˜๋กœ ์“ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 7์ถ• ๋งค๋‹ˆํ“ฐ๋ ˆ์ดํ„ฐ๋Š” 7๊ฐœ์˜ ๊ด€์ ˆ๊ฐ๋งŒ์œผ๋กœ ์ „์ฒด ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. ์ œ์•ฝ์กฐ๊ฑด์ด ์ด๋ฏธ ์ขŒํ‘œ ์„ ํƒ์— ๋‚ด์žฌ๋˜์–ด ์žˆ์–ด ์ž๋™์œผ๋กœ ๋งŒ์กฑ๋œ๋‹ค. Featherstone์˜ Articulated Body Algorithm์ด ์ด ์œ„์—์„œ ๋™์ž‘ํ•˜๋ฉฐ, ํŠธ๋ฆฌ ๊ตฌ์กฐ ๋กœ๋ด‡์—์„œ O(n)์˜ ์„ ํ˜• ๋ณต์žก๋„๋ฅผ ๋‹ฌ์„ฑํ•œ๋‹ค. Isaac Gym, MuJoCo, Brax๊ฐ€ ๋ชจ๋‘ ์ด ๋ฐฉ์‹์ด๋‹ค.

๋ฌธ์ œ๋Š” ๋ฃจํ”„ ํด๋กœ์ €๋‹ค. ๋ฃจํ”„๊ฐ€ ์ƒ๊ธฐ๋Š” ์ˆœ๊ฐ„, ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ผ๋Š” ์ „์ œ๊ฐ€ ๊นจ์ง€๊ณ  ABA์˜ ์žฌ๊ท€์  ๋ถ„ํ•ด๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ผ๋ถ€ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์ œํ•œ์ ์ธ ๋ฃจํ”„ ํด๋กœ์ € ์ œ์•ฝ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋Š” ๋ณ„๋„์˜ ํŠน์ˆ˜ ์ฒ˜๋ฆฌ์ด๋ฉฐ GPU ๋ณ‘๋ ฌํ™”์™€ ์ž˜ ๋งž์ง€ ์•Š๋Š”๋‹ค.

์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„(Maximal Coordinates)๋Š” ๋ชจ๋“  ๊ฐ•์ฒด์— ๋…๋ฆฝ์ ์ธ 6D ํฌ์ฆˆ(์œ„์น˜+์ž์„ธ)๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค. ์กฐ์ธํŠธ ์ œ์•ฝ์€ ๋ช…์‹œ์ ์ธ ๋Œ€์ˆ˜ ๋ฐฉ์ •์‹์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. n๊ฐœ์˜ ๋ฐ”๋””๊ฐ€ ์žˆ์œผ๋ฉด 6n๊ฐœ์˜ ์ƒํƒœ ๋ณ€์ˆ˜๊ฐ€ ์ƒ๊ธฐ๊ณ , ์ œ์•ฝ์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์†”๋ฒ„์˜ ๋ชซ์ด ๋œ๋‹ค. ์ด ๋ฐฉ์‹์€ ๋” ๋งŽ์€ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฃจ์ง€๋งŒ, ์ž„์˜์˜ ํ† ํด๋กœ์ง€๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋ฃจํ”„๋“  ํŠธ๋ฆฌ๋“ , ์ˆ˜์‹์˜ ํ˜•ํƒœ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

๋ฃจํ”„๊ฐ€ ์™œ ์–ด๋ ค์šด๊ฐ€: Delassus ํ–‰๋ ฌ

์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„์—์„œ ์ˆœ๋ฐฉํ–ฅ ๋™์—ญํ•™(forward dynamics)์„ ํ’€๋ฉด, ๊ฒฐ๊ตญ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ ํ˜• ์‹œ์Šคํ…œ์— ๋„๋‹ฌํ•œ๋‹ค:

\mathbf{G} \boldsymbol{\lambda} = \mathbf{g}

์—ฌ๊ธฐ์„œ \boldsymbol{\lambda}๋Š” ์ œ์•ฝ ๋ฐ˜๋ ฅ(constraint reaction force) ๋ฒกํ„ฐ, \mathbf{g}๋Š” ์ž์œ  ์šด๋™ ์†๋„, ๊ทธ๋ฆฌ๊ณ :

\mathbf{G} = \mathbf{J} \mathbf{M}^{-1} \mathbf{J}^\top

์ด \mathbf{G}๊ฐ€ ๋ฐ”๋กœ Delassus ํ–‰๋ ฌ์ด๋‹ค. \mathbf{J}๋Š” ์ œ์•ฝ ์ž์ฝ”๋น„์•ˆ, \mathbf{M}์€ ์งˆ๋Ÿ‰ ํ–‰๋ ฌ์ด๋‹ค.

ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” \mathbf{G}์˜ ์ŠคํŒŒ์Šค ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•ด ํšจ์œจ์ ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ฃจํ”„ ํด๋กœ์ €๊ฐ€ ์ƒ๊ธฐ๋ฉด, ๋ฃจํ”„์— ์†ํ•œ ๋ชจ๋“  ๋ฐ”๋””๋“ค์ด ์ „์—ญ์ ์œผ๋กœ ๊ฒฐํ•ฉ(globally coupled)๋˜๋ฉด์„œ \mathbf{G}์˜ ์ŠคํŒŒ์Šค ๊ตฌ์กฐ๊ฐ€ ๊นจ์ง€๊ณ  ๋ฐ€์ง‘ ๋ธ”๋ก์ด ์ƒ๊ธด๋‹ค. ์ด ๋ฐ€์ง‘ ์„ ํ˜• ์‹œ์Šคํ…œ์„ GPU์—์„œ ์ˆ˜์ฒœ ๊ฐœ ๋™์‹œ์— ํšจ์œจ์ ์œผ๋กœ ํ‘ธ๋Š” ๊ฒƒ์ด Kamino์˜ ํ•ต์‹ฌ ๊ธฐ์ˆ ์  ๊ณผ์ œ๋‹ค.


๋ฐฉ๋ฒ•: Kamino์˜ ์„ค๊ณ„ ์ฒ ํ•™

1. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„ + Proximal-ADMM (PADMM)

Kamino๋Š” ์ˆœ๋ฐฉํ–ฅ ๋™์—ญํ•™ ๋ฌธ์ œ๋ฅผ ์ œ์•ฝ ๋ฐ˜๋ ฅ์˜ ์Œ๋Œ€ ๊ณต๊ฐ„(dual space)์—์„œ ํ‘ผ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, Proximal ADMM(PADMM)์„ ์‚ฌ์šฉํ•ด ๋‹ค์Œ ์„ธ ์œ ํ˜•์˜ ์ œ์•ฝ์„ ํ†ตํ•ฉ์ ์œผ๋กœ ๋‹ค๋ฃฌ๋‹ค:

์ œ์•ฝ ์œ ํ˜• ์˜ˆ์‹œ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
์Œ๋ฐฉํ–ฅ ์กฐ์ธํŠธ ์ œ์•ฝ (bilateral) ํšŒ์ „ ์กฐ์ธํŠธ, ๋ฃจํ”„ ํด๋กœ์ € ๋“ฑํ˜ธ ์ œ์•ฝ โ†’ ํ•˜๋“œ ๋Œ€์ˆ˜ ์ œ์•ฝ
๋‹จ๋ฐฉํ–ฅ ๊ด€์ ˆ ํ•œ๊ณ„ (unilateral) ๊ด€์ ˆ ๋ฒ”์œ„ ํ•œ๊ณ„ ๋ถ€๋“ฑํ˜ธ ์ œ์•ฝ โ†’ ๊ทผ์œ„ ์—ฐ์‚ฐ์ž(proximal operator)
๋งˆ์ฐฐ ์ ‘์ด‰ (frictional contact) ๋ฐœ์ด ์ง€๋ฉด์— ๋‹ฟ์„ ๋•Œ ๋งˆ์ฐฐ ์ฝ˜(cone) ํˆฌ์˜

์ด ์„ธ ๊ฐ€์ง€๊ฐ€ ํ•˜๋‚˜์˜ PADMM ๋ฃจํ”„ ์•ˆ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋œ๋‹ค๋Š” ์ ์ด ์šฐ์•„ํ•˜๋‹ค. ๊ฐ๊ฐ ๋ณ„๋„์˜ ์†”๋ฒ„๋ฅผ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค.

PADMM์˜ ํ•œ iteration์„ ์˜์‚ฌ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด:

Algorithm: Proximal-ADMM (PADMM) for Constrained Forward Dynamics

Input: Mass matrix M, Jacobian J, free velocities v_free, 
       penalty parameter rho, max_iterations K

Initialize: lambda = 0, z = 0, u = 0  (primal, auxiliary, dual variables)

For k = 1, ..., K:
  // Step 1: Solve linear system (most expensive step)
  G_rho = G + rho * I   // augmented Delassus matrix
  lambda = solve(G_rho, -(g + rho*(z - u)))

  // Step 2: Proximal/projection step (cheap)
  z = prox_C(lambda + u)   // project onto constraint set C

  // Step 3: Dual variable update (cheap)
  u = u + lambda - z

  // Early exit check per world
  if converged(lambda, z): break

Output: lambda (constraint reactions)
Post: Compute accelerations via M * a = tau - J^T * lambda

์—ฌ๊ธฐ์„œ prox_C๋Š” ์ œ์•ฝ ์œ ํ˜•์— ๋”ฐ๋ผ: - ์Œ๋ฐฉํ–ฅ ์ œ์•ฝ: ํ•ญ๋“ฑ ์—ฐ์‚ฐ (์ด๋ฏธ ๋“ฑํ˜ธ ์ œ์•ฝ์ด๋ฏ€๋กœ ํˆฌ์˜ ๋ถˆํ•„์š”) - ๊ด€์ ˆ ํ•œ๊ณ„: ํด๋žจํ•‘(clamping) ์—ฐ์‚ฐ - ๋งˆ์ฐฐ ์ ‘์ด‰: ๋งˆ์ฐฐ ์ฝ˜์œผ๋กœ์˜ ํˆฌ์˜ (Coulomb cone projection)

Step 1์ด ๊ฐ€์žฅ ๋น„์‹ผ ์—ฐ์‚ฐ์ด๋‹ค. \mathbf{G}_\rho = \mathbf{G} + \rho \mathbf{I}๋ฅผ ํ‘ธ๋Š” ์„ ํ˜• ์‹œ์Šคํ…œ์ด ์ „์ฒด ๊ณ„์‚ฐ์˜ ๋ณ‘๋ชฉ์ด๊ณ , Kamino์˜ GPU ๋ณ‘๋ ฌํ™” ์„ค๊ณ„๊ฐ€ ์—ฌ๊ธฐ์— ์ง‘์ค‘๋œ๋‹ค.

2. ๋‘ ๊ฐ€์ง€ ์„ ํ˜• ์‹œ์Šคํ…œ ์†”๋ฒ„ ์ „๋žต

Kamino๋Š” ๋ฌธ์ œ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ์„ ํ˜• ์†”๋ฒ„ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค:

์ „๋žต A: Block-Cholesky (๋ฐ€์ง‘ LLT ๋ถ„ํ•ด)

\mathbf{G}_\rho๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์ž‘์„ ๋•Œ(์ ‘์ด‰์ด ์ ์€ ์ƒํ™ฉ ๋“ฑ) ์‚ฌ์šฉํ•œ๋‹ค. \mathbf{G}_\rho๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ˜•์„ฑํ•˜๊ณ  Cholesky ๋ถ„ํ•ด๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. GPU์—์„œ ๋ฐฐ์น˜ ํ–‰๋ ฌ ๋ถ„ํ•ด(batched LLT)๋กœ ๊ตฌํ˜„๋˜์–ด, ๊ฐ world์˜ ๋…๋ฆฝ์ ์ธ \mathbf{G}_\rho๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค.

์ „๋žต B: Warm-Started Conjugate Residual (CR, ํฌ์†Œ ํ–‰๋ ฌ-์ž์œ  ์—ฐ์‚ฐ)

\mathbf{G}_\rho๊ฐ€ ํด ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ–‰๋ ฌ์„ ๋ช…์‹œ์ ์œผ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , matrix-free ๋ฐฉ์‹์œผ๋กœ Delassus ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•œ๋‹ค. ์ฆ‰ \mathbf{G}_\rho \mathbf{v} = (\mathbf{J} \mathbf{M}^{-1} \mathbf{J}^\top + \rho \mathbf{I})\mathbf{v}๋ฅผ ๋งค๋ฒˆ ๊ณ„์‚ฐํ•œ๋‹ค. ์ด์ „ timestep์˜ ํ•ด๋ฅผ ์ดˆ๊ธฐ ์ถ”์ •๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” warm-starting์ด ์ˆ˜๋ ด์„ ํฌ๊ฒŒ ๊ฐ€์†ํ•œ๋‹ค.

\text{Memory: Block-Cholesky} \propto O(m^2 \cdot N_\text{worlds}), \quad \text{CR} \propto O(n \cdot N_\text{worlds})

์—ฌ๊ธฐ์„œ m์€ Delassus ํ–‰๋ ฌ์˜ ์ฐจ์›(ํ™œ์„ฑ ์ œ์•ฝ ์ˆ˜), n์€ ๋ฐ”๋”” ์ˆ˜๋‹ค. ์ ‘์ด‰์ด ๋งŽ์•„์ง€๋ฉด CR ๋ฐฉ์‹์ด ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์—์„œ ์••๋„์ ์œผ๋กœ ์œ ๋ฆฌํ•˜๋‹ค.

3. GPU ๋ณ‘๋ ฌํ™”: ์ด์ข…(heterogeneous) ์„ธ๊ณ„ ์ง€์›

RL ํ•™์Šต์—์„œ GPU ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ์ง„์งœ ์–ด๋ ค์›€์€ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋‹ค. ์ˆ˜์ฒœ ๊ฐœ์˜ world๋ฅผ ๋™์‹œ์— ๋Œ๋ฆด ๋•Œ, ๊ฐ world์˜ ์ ‘์ด‰ ์ƒํƒœ๊ฐ€ ๋‹ฌ๋ผ์„œ ํ™œ์„ฑ ์ œ์•ฝ์˜ ์ˆ˜ m์ด world๋งˆ๋‹ค ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ด์ข… ์‹œ์Šคํ…œ(heterogeneous system)์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

Kamino๋Š” ๋‘ ๊ฐ€์ง€ ์ฐจ์›์˜ ์ด์ข…์„ฑ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค:

์ฐจ์› 1: ๋™์ผ ๋กœ๋ด‡, ๋‹ค๋ฅธ ์ œ์•ฝ ์ƒํƒœ

๊ฐ™์€ ๋กœ๋ด‡์ด๋ผ๋„ world๋งˆ๋‹ค ๋ฐœ์˜ ์ ‘์ด‰ ํŒจํ„ด์ด ๋‹ฌ๋ผ ์ œ์•ฝ ์ˆ˜ m์ด ๋‹ค๋ฅด๋‹ค. Kamino๋Š” ๊ฐ€์žฅ ํฐ m์— ๋งž์ถฐ ํŒจ๋”ฉ(padding)ํ•˜๊ฑฐ๋‚˜, per-world ๋งˆ์Šคํฌ๋กœ ์ˆ˜๋ ดํ•œ world๋Š” ์กฐ๊ธฐ ์ข…๋ฃŒ(early exit)ํ•œ๋‹ค.

์ฐจ์› 2: ์•„์˜ˆ ๋‹ค๋ฅธ ๋กœ๋ด‡ ๊ตฌ์กฐ

Kamino์˜ ํŠนํžˆ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ๊ธฐ๋Šฅ์€, ๊ฐ parallel world์— ๊ตฌ์กฐ์ ์œผ๋กœ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋กœ๋ด‡์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋ฐ”๋”” ์ˆ˜, ์กฐ์ธํŠธ ์ˆ˜, ์ถฉ๋Œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๊ฐ€ ๋ชจ๋‘ ๋‹ค๋ฅธ ๋กœ๋ด‡๋“ค์„ ๋™์‹œ์— ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋กœ๋ด‡์„ ํƒ์ƒ‰ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด ์„ค๊ณ„ ์ตœ์ ํ™”๋‚˜, ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ ์„ค์ •์—์„œ์˜ ๋„๋ฉ”์ธ ๋žœ๋คํ™”(domain randomization)์— ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฐ˜์ด ๋œ๋‹ค.

4. CUDA Graph Capture๋กœ ๋ฐ˜๋ณต ๋ฃจํ”„ ๊ฐ€์†

PADMM์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆ˜๋ ดํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋Š” ๋ฃจํ”„๋‹ค. Warp์˜ wp.capture_while์„ ์‚ฌ์šฉํ•ด ์ด ๋ฐ˜๋ณต ๋ฃจํ”„ ์ „์ฒด๋ฅผ ๋‹จ์ผ CUDA Graph๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ๋ฐฐ์—ด ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ ์‹œ์ ์— ์บก์ฒ˜๋˜๋ฉฐ, ํ•œ timestep ์•ˆ์—์„œ Delassus ์—ฐ์‚ฐ์ž๋Š” ๋ถˆ๋ณ€์ด๋ฏ€๋กœ ์บก์ฒ˜ ํ›„ ๋ฐ˜๋ณต ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Per-world ์ˆ˜๋ ด ๋งˆ์Šคํฌ๊ฐ€ ์กฐ๊ธฐ ์ข…๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Pythonโ†’CUDA ์‚ฌ์ด์˜ kernel launch overhead๊ฐ€ ์ˆ˜๋ ด ๋ฐ˜๋ณต ํšŸ์ˆ˜๋งŒํผ ๊ณฑํ•ด์ง€์ง€ ์•Š๊ณ , ๊ทธ๋ž˜ํ”„ ์‹คํ–‰ ํ•œ ๋ฒˆ์œผ๋กœ ์••์ถ•๋œ๋‹ค. ๊ธด ํ•™์Šต ์‹คํ–‰์—์„œ ์ด ์ดˆ๊ธฐ ๊ทธ๋ž˜ํ”„ ์ปดํŒŒ์ผ ๋น„์šฉ์ด ์ƒ๊ฐ(amortize)๋œ๋‹ค.

5. Newton ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ๊ณผ Isaac Lab ๊ณ„ํš

Kamino๋Š” ๋…๋ฆฝ ์‹คํ–‰ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ, NVIDIA Newton ์˜คํ”ˆ์†Œ์Šค ๋ฌผ๋ฆฌ ์—”์ง„์˜ ์†”๋ฒ„ ๋ฐฑ์—”๋“œ๋กœ ๊ตฌํ˜„๋œ๋‹ค. Newton์€ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์†”๋ฒ„ ๋ฐฑ์—”๋“œ๋ฅผ ์ง€์›ํ•˜๋ฉฐ, Kamino๋Š” ๊ทธ ์ค‘ ํ•˜๋‚˜๋‹ค. Newton์ด ์ œ๊ณตํ•˜๋Š” ์ž์‚ฐ ์ž„ํฌํŠธ(URDF, MJCF, USD), ์ถฉ๋Œ ๊ฐ์ง€, ์‹œ๊ฐํ™” ์œ„์— Kamino๊ฐ€ ๋™์—ญํ•™ ์†”๋ฒ„๋กœ ์˜ฌ๋ผํƒ„๋‹ค.

๋˜ํ•œ NVIDIA Isaac Lab๊ณผ์˜ ํ†ตํ•ฉ์ด ๊ณ„ํš๋˜์–ด ์žˆ์–ด, Isaac Lab์˜ RL ํ™˜๊ฒฝ ๋ž˜ํผ, ํƒœ์Šคํฌ ์ •์˜, ํ›ˆ๋ จ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ทธ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋  ์˜ˆ์ •์ด๋‹ค. PyTorch ๋ฐ JAX์™€ ์ œ๋กœ ์นดํ”ผ(zero-copy) ํ…์„œ ์ƒํ˜ธ์šด์šฉ์„ฑ์ด ์ด๋ฏธ Warp์—์„œ ์ง€์›๋˜๋ฏ€๋กœ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ RL ํ›ˆ๋ จ ๋ฃจํ”„์— ๋ฐ”๋กœ ๊ณต๊ธ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.


์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

graph TD
    A["Isaac Lab / RL Training Loop"] -->|"actions (PyTorch/JAX tensor)"| B["Newton Physics Engine"]
    B --> C["Asset Import\n(URDF / MJCF / USD)"]
    B --> D["Collision Detection"]
    B --> E["Kamino Solver Backend"]

    E --> F["Maximal Coordinate\nFormulation\n(6D pose per body)"]
    F --> G["Constraint Jacobian J\n(bilateral + unilateral + contact)"]
    G --> H["Delassus Matrix\nG = J M-1 J^T"]

    H --> I{"Problem Size?"}
    I -->|"Small (few contacts)"| J["Block-Cholesky\n(batched dense LLT)"]
    I -->|"Large (many contacts)"| K["Warm-Started\nConjugate Residual\n(matrix-free)"]

    J --> L["Proximal-ADMM\nIterative Solver"]
    K --> L

    L --> M["CUDA Graph Capture\n(wp.capture_while)"]
    M --> N["Per-World Early Exit\nMask"]
    N -->|"converged"| O["Forward Dynamics\nOutput: accelerations"]
    N -->|"not converged"| L

    O -->|"observations (zero-copy)"| A

    style E fill:#1a1a2e,color:#eee
    style L fill:#16213e,color:#eee
    style M fill:#0f3460,color:#eee


์‹คํ—˜: ๋ฌด์—‡์„ ๊ฒ€์ฆํ–ˆ๋Š”๊ฐ€?

ํ‰๊ฐ€ ๋Œ€์ƒ ๋กœ๋ด‡ ์‹œ์Šคํ…œ

๋…ผ๋ฌธ์€ ๋„ค ๊ฐœ์˜ ๋กœ๋ด‡ ์‹œ์Šคํ…œ์„ ๋Œ€์ƒ์œผ๋กœ Kamino๋ฅผ ํ‰๊ฐ€ํ•œ๋‹ค. ๋ณต์žก๋„ ์ˆœ์„œ๋กœ:

๋กœ๋ด‡ ๋ฐ”๋”” ์ˆ˜ ์กฐ์ธํŠธ ์ˆ˜ ๋ฃจํ”„ ์ˆ˜ ํ† ํด๋กœ์ง€
Cartpole 2 1 0 Open tree
BDX ์ค‘๊ฐ„ - 0 Open tree (์ด์กฑ๋ณดํ–‰)
Olaf ์ค‘๊ฐ„ - ๋‚ฎ์Œ Closed-chain
DR Legs ๋†’์Œ 36 (12 ๊ตฌ๋™, 24 ์ˆ˜๋™) 6 Serial-parallel hybrid

DR Legs๊ฐ€ ํ•ต์‹ฌ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋‹ค. Disney Research์˜ ์ด์กฑ๋ณดํ–‰ ๋กœ๋ด‡์œผ๋กœ, ๊ฐ ๋‹ค๋ฆฌ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ 4์ ˆ ๋งํฌ(four-bar linkage)๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณต์žกํ•œ ๋ณ‘๋ ฌ-์ง๋ ฌ ํ˜ผํ•ฉ ๊ตฌ์กฐ๋‹ค. 4๊ฐœ์˜ ๋ฐ˜-๋‹ค๋ฆฌ(half-leg) ๊ฐ๊ฐ์— 9๊ฐœ์˜ ํšŒ์ „ ์กฐ์ธํŠธ(12๊ฐœ ๊ตฌ๋™, 24๊ฐœ ์ˆ˜๋™)๊ฐ€ ์žˆ๊ณ  ๋…๋ฆฝ์ ์ธ ๋ฃจํ”„๊ฐ€ 6๊ฐœ ์กด์žฌํ•œ๋‹ค. ์ด๋Ÿฐ ๋กœ๋ด‡์„ ๊ทผ์‚ฌ ์—†์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์€ ๊ธฐ์กด GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค.

์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ๋ฐ ํ™•์žฅ์„ฑ

Kamino๋Š” ๋‹ค์Œ ์„ธ ์†”๋ฒ„ ์„ค์ •์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•œ๋‹ค:

  • Sparse CR: ํฌ์†Œ ์ผค๋ ˆ ์ž”์ฐจ ์†”๋ฒ„ (๋Œ€ํ˜• ์‹œ์Šคํ…œ์šฉ)
  • Dense LLT (Dense J): ๋ฐ€์ง‘ Cholesky + ๋ฐ€์ง‘ ์ž์ฝ”๋น„์•ˆ
  • Dense LLT (Sparse J): ๋ฐ€์ง‘ Cholesky + ํฌ์†Œ ์ž์ฝ”๋น„์•ˆ

๋ณ‘๋ ฌ world ์ˆ˜๋ฅผ ๋Š˜๋ฆด์ˆ˜๋ก ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์„ ํ˜•์— ๊ฐ€๊น๊ฒŒ ์Šค์ผ€์ผํ•˜๋ฉฐ, DR Legs์˜ ๊ฒฝ์šฐ ๋‹จ์ผ GPU์—์„œ 4096๊ฐœ ๋ณ‘๋ ฌ ํ™˜๊ฒฝ ์šด์šฉ์ด ์‹œ์—ฐ๋˜์—ˆ๋‹ค.

ํ•œํŽธ BDX์ฒ˜๋Ÿผ ๋ฃจํ”„๊ฐ€ ์—†๋Š” ์ˆœ์ˆ˜ ๊ด€์ ˆํ˜• ๋กœ๋ด‡์—์„œ๋Š” Kamino๊ฐ€ Newton ๋‚ด์˜ reduced-coordinate ์†”๋ฒ„๋ณด๋‹ค ๋‚ฎ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ณด์ธ๋‹ค. ์ด๋Š” ์„ค๊ณ„์ƒ์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋กœ, ๋…ผ๋ฌธ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ธ์ •ํ•˜๊ณ  ์žˆ๋‹ค. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„๋Š” ๋” ๋งŽ์€ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋ฏ€๋กœ, ๋ฃจํ”„๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ์—์„œ๋Š” ABA ๊ธฐ๋ฐ˜ ์†”๋ฒ„๊ฐ€ ํ•ญ์ƒ ๋” ๋น ๋ฅด๋‹ค.

DR Legs RL ์ •์ฑ… ํ•™์Šต

๊ฐ€์žฅ ์ธ์ƒ์ ์ธ ์‹คํ—˜ ๊ฒฐ๊ณผ๋Š” DR Legs์— ๋Œ€ํ•œ ๊ฐ•ํ™”ํ•™์Šต ๋ณดํ–‰ ์ •์ฑ… ํ•™์Šต์ด๋‹ค. ์ด๋Š” ๋ณต์žกํ•œ ์šด๋™ํ•™์  ๋ฃจํ”„๋ฅผ ๊ฐ€์ง„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•ด GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์•ˆ์—์„œ RL ํ•™์Šต์„ ์ˆ˜ํ–‰ํ•œ ์ฒซ ๋ฒˆ์งธ ์‚ฌ๋ก€๋กœ ๋…ผ๋ฌธ์—์„œ ๋ช…์‹œ๋œ๋‹ค.

4096๊ฐœ์˜ ๋ณ‘๋ ฌ ํ™˜๊ฒฝ์—์„œ PPO(Proximal Policy Optimization)๋กœ ๋ณดํ–‰ ์ •์ฑ…์„ ํ•™์Šตํ–ˆ์œผ๋ฉฐ, Kamino๊ฐ€ RL ๋ฃจํ”„์™€์˜ ํ†ตํ•ฉ ๋ฐฑ์—”๋“œ๋กœ์„œ ์‹ค์งˆ์ ์œผ๋กœ ๋™์ž‘ํ•จ์„ ๋ณด์˜€๋‹ค.


๊ด€๋ จ ์—ฐ๊ตฌ์™€์˜ ๋น„๊ต

GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ƒํƒœ๊ณ„์—์„œ์˜ ์œ„์น˜

quadrantChart
    title GPU Simulators: Topology Generality vs. Throughput
    x-axis Low Throughput --> High Throughput
    y-axis Open Tree Only --> Arbitrary Topology
    quadrant-1 Ideal (unreached)
    quadrant-2 Kamino territory
    quadrant-3 CPU simulators
    quadrant-4 Existing GPU simulators
    Isaac Gym: [0.9, 0.15]
    Brax: [0.85, 0.1]
    MuJoCo MJX: [0.75, 0.2]
    MuJoCo CPU: [0.2, 0.3]
    Kamino (DR Legs): [0.35, 0.85]
    Kamino (simple): [0.5, 0.85]

์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์ขŒํ‘œ๊ณ„ ๋ฃจํ”„ ์ง€์› GPU ๋ณ‘๋ ฌํ™” RL ํ†ตํ•ฉ
Isaac Gym / Lab Reduced ์ œํ•œ์  ๋›ฐ์–ด๋‚จ ์ง์ ‘ ์ง€์›
Brax Reduced ์—†์Œ ๋›ฐ์–ด๋‚จ JAX ๊ธฐ๋ฐ˜
MuJoCo MJX Maximal ์žˆ์Œ (์ œํ•œ) ์ค‘๊ฐ„ Python
Genesis Mixed ์ œํ•œ์  ๋›ฐ์–ด๋‚จ ํ†ตํ•ฉ
Kamino Maximal ์ž„์˜ ํ† ํด๋กœ์ง€ ๋›ฐ์–ด๋‚จ Newton/Isaac Lab

MuJoCo๋Š” ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์›๋ฆฌ์ ์œผ๋กœ ๋ฃจํ”„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ GPU ๋ณ‘๋ ฌํ™”์—์„œ ์ˆ˜์ฒœ ๊ฐœ world ์Šค์ผ€์ผ์„ ์ง€์›ํ•˜์ง€ ๋ชปํ•˜๊ณ , MJX(JAX ๊ธฐ๋ฐ˜ GPU ๋ฒ„์ „)๋„ ์ด์ข… world๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์  ์„ ์กฐ๋“ค

Kamino์˜ ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜์€ ๋ณ„๋„ ๋…ผ๋ฌธ(arXiv:2504.19771)์— ์ƒ์„ธํžˆ ๊ธฐ์ˆ ๋˜์–ด ์žˆ๋‹ค. ADMM์„ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ์ ์šฉํ•˜๋Š” ์ ‘๊ทผ์€ Macklin์˜ XPBD(Extended Position-Based Dynamics)์™€ ๊ฐœ๋…์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์ง€๋งŒ, Kamino๋Š” ํ•˜๋“œ ๋Œ€์ˆ˜ ์ œ์•ฝ(hard algebraic constraints)์„ ์ •ํ™•ํ•˜๊ฒŒ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋ฐ ์ง‘์ค‘ํ•œ๋‹ค๋Š” ์ ์—์„œ ๋‹ค๋ฅด๋‹ค. XPBD๋Š” penalty ๊ธฐ๋ฐ˜์ด๋ผ ์ œ์•ฝ์„ ๊ทผ์‚ฌ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋ฐ˜๋ฉด, Kamino๋Š” PADMM์˜ ์ˆ˜๋ ด์„ ํ†ตํ•ด ์ง„์ •ํ•œ ์ œ์•ฝ ๋งŒ์กฑ์„ ๋‹ฌ์„ฑํ•œ๋‹ค.

Pinocchio + MPC ๊ธฐ๋ฐ˜ ์ ‘๊ทผ์€ CPU์—์„œ ๋ฃจํ”„ ํด๋กœ์ €๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ, RL ํ•™์Šต์— ํ•„์š”ํ•œ ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•œ๋‹ค.


๋น„ํŒ์  ๊ณ ์ฐฐ: ๋ฌด์—‡์„ ์–ป๊ณ  ๋ฌด์—‡์„ ์žƒ๋Š”๊ฐ€?

๊ฐ•์ 

1. ์ง„์ •ํ•œ ์˜๋ฏธ์˜ ํ† ํด๋กœ์ง€ ์ž์œ ๋„
4์ ˆ ๋งํฌ, ๋ณ‘๋ ฌ ๊ธฐ๊ตฌ, ๋‹ค์ง€ ๋กœ๋ด‡์˜ ๋ฐœ ํ๋ฃจํ”„ - ์ด๋Ÿฐ ๊ตฌ์กฐ๋ฅผ ๊ทผ์‚ฌ ์—†์ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•œ ํŽธ์˜๊ฐ€ ์•„๋‹ˆ๋ผ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ •ํ™•๋„์™€ sim-to-real gap ๊ฐ์†Œ์— ์ง์ ‘ ๊ธฐ์—ฌํ•œ๋‹ค. ๋ฃจํ”„๋ฅผ mimic joint๋กœ ๊ทผ์‚ฌํ•˜๋ฉด, ์‹ค์ œ ์‹œ์Šคํ…œ์˜ ๊ฐ•์„ฑ, ์ œ์•ฝ๋ ฅ, ๋™์—ญํ•™ ์‘๋‹ต์ด ๋ชจ๋‘ ํ‹€์–ด์ง„๋‹ค.

2. ์ด์ข… world ์ง€์›
๊ฐ™์€ GPU ๋ฐฐ์น˜ ์•ˆ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋กœ๋ด‡ ๊ตฌ์กฐ๋ฅผ ๋™์‹œ์— ๋Œ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€, ๊ธฐ์กด ์–ด๋–ค GPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•œ ๊ธฐ๋Šฅ์ด๋‹ค. ์ด๋Š” multi-morphology RL์ด๋‚˜ ํ•˜๋“œ์›จ์–ด ์„ค๊ณ„ ๊ณต๊ฐ„ ํƒ์ƒ‰์— ์ƒˆ๋กœ์šด ๊ฐ€๋Šฅ์„ฑ์„ ์—ฐ๋‹ค.

3. ํ†ตํ•ฉ์  ์ œ์•ฝ ์ฒ˜๋ฆฌ
bilateral ์กฐ์ธํŠธ, unilateral ํ•œ๊ณ„, ๋งˆ์ฐฐ ์ ‘์ด‰์ด ํ•˜๋‚˜์˜ PADMM ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ†ตํ•ฉ๋œ๋‹ค. ์ด๋Š” ์ฝ”๋“œ ๋ณต์žก๋„๋ฅผ ์ค„์ด๊ณ , ๊ฐ ์ œ์•ฝ ์œ ํ˜• ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ผ๊ด€๋˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.

4. ์‹ค์šฉ์  Python ๊ธฐ๋ฐ˜ ๊ตฌํ˜„
NVIDIA Warp๋ฅผ ํ†ตํ•ด Python์œผ๋กœ GPU ์ปค๋„์„ ์ž‘์„ฑํ•˜๊ณ , PyTorch/JAX์™€ ์ œ๋กœ ์นดํ”ผ๋กœ ์—ฐ๋™๋œ๋‹ค. ์ด๋Š” RL ์—ฐ๊ตฌ์ž๋“ค์ด ์ต์ˆ™ํ•œ ์ƒํƒœ๊ณ„์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ†ตํ•ฉ๋œ๋‹ค.

์•ฝ์  ๋ฐ ํ•œ๊ณ„

1. ์ˆœ์ˆ˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ ๋กœ๋ด‡์—์„œ์˜ ์„ฑ๋Šฅ ์—ด์„ธ

๋ฃจํ”„๊ฐ€ ์—†๋Š” ๋‹จ์ˆœ ๊ด€์ ˆํ˜• ๋กœ๋ด‡(์˜ˆ: BDX)์—์„œ Kamino๋Š” reduced-coordinate ABA ์†”๋ฒ„๋ณด๋‹ค ๋‚ฎ์€ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋ณด์ธ๋‹ค. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„์˜ ๋†’์€ ์ฐจ์›์„ฑ๊ณผ PADMM ๋ฐ˜๋ณต ๋น„์šฉ์ด ๊ทธ ์ด์œ ๋‹ค. ์ฆ‰ Kamino๋Š” ๋ฃจํ”„ ์—†๋Š” ๋กœ๋ด‡์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

2. ๋‹จ์ผ ํ™˜๊ฒฝ ์‹ค์‹œ๊ฐ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ๋ถ€์ ํ•ฉ

๋…ผ๋ฌธ ์ž์ฒด๊ฐ€ ๋ช…์‹œํ•˜๋“ฏ, Kamino๋Š” ๋‹จ์ผ ํ™˜๊ฒฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋Œ๋ฆฌ๋Š” ๋ฐ๋Š” CPU ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ณด๋‹ค ๋А๋ฆฌ๋‹ค. GPU ๋ณ‘๋ ฌํ™”๊ฐ€ ๋น›์„ ๋ฐœํ•˜๋ ค๋ฉด ์ˆ˜๋ฐฑ~์ˆ˜์ฒœ ๊ฐœ์˜ world๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

3. ๋ฒ ํƒ€ ๋‹จ๊ณ„์˜ ์„ฑ์ˆ™๋„
ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€์— ๋ช…์‹œ์ ์œผ๋กœ โ€œcurrently in betaโ€๋ผ๊ณ  ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค. ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์ง€์›์ด ์ง„ํ–‰ ์ค‘์ด๋‹ค. ์•„์ง ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ์—๋Š” ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

4. ์ ‘์ด‰์ด ๋งŽ์€ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์Šค์ผ€์ผ๋ง
Delassus ํ–‰๋ ฌ์˜ ์ฐจ์›์€ ํ™œ์„ฑ ์ œ์•ฝ(active constraint) ์ˆ˜์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๋ณ€ํ•œ๋‹ค. ์ ‘์ด‰์ด ๋งŽ์€ ํ™˜๊ฒฝ(์˜ˆ: ๋ณต์žกํ•œ ์ง€ํ˜• ์œ„ ๋ณดํ–‰, ๋‹ค์ง€ ๊ทธ๋ฆฌํ•‘)์—์„œ๋Š” \mathbf{G}์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ฒŒ ๋ณ€๋™ํ•˜๋ฉฐ, ์ด์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ์™€ ์—ฐ์‚ฐ ๋น„์šฉ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

5. PADMM์˜ ์ˆ˜๋ ด ๋ฏผ๊ฐ์„ฑ
ADMM ๊ณ„์—ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ penalty ํŒŒ๋ผ๋ฏธํ„ฐ \rho ์„ ํƒ์— ๋ฏผ๊ฐํ•˜๋‹ค. ๋…ผ๋ฌธ์ด warm-starting์œผ๋กœ ์ด๋ฅผ ์™„ํ™”ํ•˜์ง€๋งŒ, ๋Œ€๊ทœ๋ชจ ์งˆ๋Ÿ‰ ๋น„์œจ ์ฐจ์ด(ill-conditioning)๋‚˜ ๊ฐ•ํ•œ ์ œ์•ฝ ๊ฒฐํ•ฉ์—์„œ๋Š” ์ˆ˜๋ ด์ด ๋А๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ž๋™ \rho ํŠœ๋‹ ์ „๋žต์ด ํ–ฅํ›„ ๊ณผ์ œ๋กœ ๋‚จ๋Š”๋‹ค.

6. ๊ทธ๋ž˜๋””์–ธํŠธ ๋ฏธ๋ถ„ ๊ฐ€๋Šฅ์„ฑ ๋ฏธ์ง€์›
ํ˜„์žฌ Kamino๋Š” ๋ฏธ๋ถ„ ๊ฐ€๋Šฅํ•œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, model-based RL์ด๋‚˜ ๊ธฐ์šธ๊ธฐ ๊ธฐ๋ฐ˜ ์ •์ฑ… ์ตœ์ ํ™”(์˜ˆ: Diff-Sim ๊ธฐ๋ฐ˜ ์ ‘๊ทผ)์™€ ์ง์ ‘ ๊ฒฐํ•ฉํ•˜๊ธฐ ์–ด๋ ต๋‹ค. RL์˜ ๊ฒฝ์šฐ ํ™˜๊ฒฝ๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ๋งŒ ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ์—†์ง€๋งŒ, ๋” ๋„“์€ ํ•™์Šต ๋ฐฉ๋ฒ•๋ก  ์ ์šฉ์„ ์œ„ํ•ด์„œ๋Š” ์ค‘์š”ํ•œ ํ•œ๊ณ„๋‹ค.


Allegro Hand / Dexterous Manipulation ์—ฐ๊ตฌ์ž๋ฅผ ์œ„ํ•œ ๊ด€์ 

์ด ๋…ผ๋ฌธ์˜ ๋…์ž ์ค‘ ๋งŽ์€ ๋ถ„๋“ค์ด Allegro Hand๋‚˜ ๋‹ค์ง€ ์กฐ์ž‘ ์‹œ์Šคํ…œ์„ ์—ฐ๊ตฌํ•  ๊ฒƒ์ด๋‹ค. Kamino๊ฐ€ ์ด ๋ถ„์•ผ์— ๊ฐ–๋Š” ํ•จ์˜๋ฅผ ์งš์–ด๋ณด์ž.

ํ˜„์žฌ dexterous manipulation ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ํ•œ๊ณ„: Allegro Hand V4๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹จ์ˆœํ•œ ํšŒ์ „ ์กฐ์ธํŠธ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ผ Kamino์˜ ์ง์ ‘์  ์ˆ˜ํ˜œ ๋Œ€์ƒ์€ ์•„๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋” ๋ณต์žกํ•œ ์† ์„ค๊ณ„, ์˜ˆ๋ฅผ ๋“ค์–ด Shadow Hand์˜ ์—„์ง€ ๊ธฐ๊ตฌ๋‚˜ ๋‹ค์ˆ˜์˜ ๋งํฌ๊ฐ€ ๊ฒฐํ•ฉ๋œ ๊ณ ์„ฑ๋Šฅ ๊ทธ๋ฆฌํผ๋Š” closed-loop ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด๋Ÿฐ ์‹œ์Šคํ…œ์„ ์ •ํ™•ํ•˜๊ฒŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ Kamino๊ฐ€ ํ•ต์‹ฌ ๋„๊ตฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

์ด์ข… world์˜ ์‘์šฉ: ๋‹ค์–‘ํ•œ ๋ฌผ์ฒด ํ˜•์ƒ์ด๋‚˜ ์† ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋™์‹œ์— ํƒ์ƒ‰ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋„๋ฉ”์ธ ๋žœ๋คํ™” ์‹คํ—˜์—์„œ, ์ด์ข… world ์ง€์›์ด ์ƒˆ๋กœ์šด ์‹คํ—˜ ์„ค๊ณ„๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์–‘ํ•œ ์†๊ฐ€๋ฝ ๊ธธ์ด๋‚˜ ๊ด€์ ˆ ๊ฐ•์„ฑ์„ ๊ฐ€์ง„ ๋ณ€ํ˜• ๋กœ๋ด‡๋“ค์„ ํ•œ ๋ฐฐ์น˜ ์•ˆ์—์„œ ๋™์‹œ์— ํ›ˆ๋ จ์‹œํ‚ค๋Š” morphology-conditioned policy ํ•™์Šต์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

์ ‘์ด‰ ๋™์—ญํ•™ ์ •ํ™•๋„: ์†-๋ฌผ์ฒด ์ ‘์ด‰์€ ๋‹ค์ˆ˜์˜ ์ ‘์ด‰์ ์ด ๋™์‹œ์— ํ™œ์„ฑํ™”๋˜๋Š” ๋ณต์žกํ•œ ์ƒํ™ฉ์ด๋‹ค. PADMM์˜ ํ†ตํ•ฉ ์ ‘์ด‰ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋Ÿฐ ํ™˜๊ฒฝ์—์„œ ์–ด๋–ค ์„ฑ๋Šฅ์„ ๋ณด์ด๋Š”์ง€๋Š” ์ถ”๊ฐ€ ์—ฐ๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํŠนํžˆ ๋งˆ์ฐฐ ๋ชจ๋ธ๋ง์˜ ์ •ํ™•๋„์™€ ์ ‘์ด‰ ์•ˆ์ •์„ฑ์ด ์‹ค์šฉ์  ์ธก๋ฉด์—์„œ ์ค‘์š”ํ•˜๋‹ค.


์š”์•ฝ ๋ฐ ๊ฒฐ๋ก 

Kamino๊ฐ€ ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด:

โ€œ๋‹ซํžŒ ์šด๋™ํ•™์  ๋ฃจํ”„๋ฅผ ๊ฐ€์ง„ ๋ณต์žกํ•œ ๋กœ๋ด‡์„, GPU ์œ„์—์„œ ์ˆ˜์ฒœ ๊ฐœ ๋™์‹œ์—, ๊ทผ์‚ฌ ์—†์ด ์ •ํ™•ํ•˜๊ฒŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ๋‹ค.โ€

์ด๋ฅผ ์œ„ํ•ด:

  1. ์ตœ๋Œ€ ์ขŒํ‘œ๊ณ„๋กœ ์ž„์˜ ํ† ํด๋กœ์ง€๋ฅผ ํ†ต์ผ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ ,
  2. Proximal-ADMM์œผ๋กœ bilateral/unilateral/์ ‘์ด‰ ์ œ์•ฝ์„ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉฐ,
  3. Block-Cholesky ๋˜๋Š” Conjugate Residual ์„ ํ˜• ์†”๋ฒ„๋กœ Delassus ์‹œ์Šคํ…œ์„ ํšจ์œจ์ ์œผ๋กœ ํ’€๊ณ ,
  4. CUDA Graph Capture + ์ด์ข… world ๋งˆ์Šคํ‚น์œผ๋กœ GPU ๋ณ‘๋ ฌํ™”๋ฅผ ์‹คํ˜„ํ•œ๋‹ค.

๋…ผ๋ฌธ์˜ ๊ธฐ์—ฌ๋Š” ๊ธฐ์ˆ ์  ์‹ ๊ธฐํ•จ์ด ์•„๋‹ˆ๋‹ค. ์ด๋ฏธ ์•Œ๋ ค์ง„ ์ˆ˜ํ•™์  ๋„๊ตฌ๋“ค์„ GPU ๋ณ‘๋ ฌ RL ์Šค์ผ€์ผ์— ๋งž๊ฒŒ ์—”์ง€๋‹ˆ์–ด๋งํ•œ ๊ฒƒ์ด๋‹ค. 4์ ˆ ๋งํฌ๋ฅผ ๊ฐ€์ง„ ์ด์กฑ๋ณดํ–‰ ๋กœ๋ด‡ DR Legs์— ๋Œ€ํ•ด 4096๊ฐœ ๋ณ‘๋ ฌ ํ™˜๊ฒฝ์—์„œ RL ๋ณดํ–‰ ์ •์ฑ…์„ ํ•™์Šตํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๊ฐ€, โ€œ์ด๋ก ์€ ์žˆ์—ˆ์ง€๋งŒ ์‹คํ–‰์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜โ€ ์˜์—ญ์„ ์ฒ˜์Œ์œผ๋กœ ์‹ค์šฉ ์˜์—ญ์œผ๋กœ ๋Œ์–ด๋‚ธ ์ฆ๊ฑฐ๋‹ค.

๋ฌผ๋ก  ํ•œ๊ณ„๋Š” ๋ถ„๋ช…ํ•˜๋‹ค. ๋ฃจํ”„ ์—†๋Š” ๋กœ๋ด‡์—๋Š” ๋А๋ฆฌ๊ณ , ๋‹จ์ผ ํ™˜๊ฒฝ ์‹ค์‹œ๊ฐ„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์—๋Š” ๋ถ€์ ํ•ฉํ•˜๋ฉฐ, ์•„์ง ๋ฒ ํƒ€ ๋‹จ๊ณ„๋‹ค. ๋ฏธ๋ถ„ ๊ฐ€๋Šฅ์„ฑ๋„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋…ผ๋ฌธ์ด ์—ด์–ด์ค€ ๊ณต๊ฐ„ โ€” ๋ณต์žกํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง„ ๋กœ๋ด‡์„ ์œ„ํ•œ ๋Œ€๊ทœ๋ชจ RL ํ•™์Šต โ€” ์€ ๋ถ„๋ช…ํžˆ ์ค‘์š”ํ•˜๊ณ , ํƒ€์ด๋ฐ๋„ ์ •ํ™•ํ•˜๋‹ค. ๋ณ‘๋ ฌ ๊ธฐ๊ตฌ, ํ…๋˜ ๊ตฌ๋™, ๋‹ค์ค‘ ์ ‘์ด‰ ๋กœ๋ด‡์ด ์‹ค์šฉํ™”๋˜๋Š” ์‹œ์ ์— ์ด ์†”๋ฒ„๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค.

์•ž์œผ๋กœ Isaac Lab ํ†ตํ•ฉ์ด ์™„๋ฃŒ๋˜๊ณ  ๋ฏธ๋ถ„ ๊ฐ€๋Šฅ์„ฑ์ด ์ถ”๊ฐ€๋œ๋‹ค๋ฉด, Kamino๋Š” ๋‹จ์ˆœํ•œ ํŠน์ˆ˜ ๋ชฉ์  ์†”๋ฒ„๋ฅผ ๋„˜์–ด ์ฐจ์„ธ๋Œ€ ๋กœ๋ด‡ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์Šคํƒ์˜ ์ค‘์š”ํ•œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.


์ฐธ๊ณ ๋ฌธํ—Œ ๋ฐ ๊ด€๋ จ ์ž๋ฃŒ

  • Kamino ๋…ผ๋ฌธ (arXiv:2603.16536)
  • Kamino ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฐ˜ ๋…ผ๋ฌธ (arXiv:2504.19771) โ€” ํ•ต์‹ฌ ์ˆ˜์‹๊ณผ PADMM ์œ ๋„
  • Kamino ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€
  • Newton Physics Engine (GitHub)
  • NVIDIA Warp
  • Isaac Lab
  • Macklin et al., โ€œXPBD: Position-Based Simulation of Compliant Constrained Dynamicsโ€ (2016) โ€” penalty ๊ธฐ๋ฐ˜ ๋น„๊ต ๊ธฐ์ค€
  • Featherstone, โ€œRigid Body Dynamics Algorithmsโ€ (2008) โ€” ABA์˜ ์›์ „

Copyright 2026, JungYeon Lee