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 ๋ฆฌ๋ทฐ
- ๐ Kamino๋ NVIDIA Warp๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ GPU ๊ธฐ๋ฐ ๋ฌผ๋ฆฌ ์๋ฎฌ๋ ์ด์ ์๋ฒ๋ก, ๋ณต์กํ kinematic loop๋ฅผ ํฌํจํ ์ด์ข ์ ๋ค์ค ๋ฐ๋ ์์คํ ์ ๋ณ๋ ฌ๋ก ์๋ฎฌ๋ ์ด์ ํ์ฌ Reinforcement Learning(๊ฐํ ํ์ต)์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- โ๏ธ ์ด ์๋ฒ๋ Maximal-Coordinate Formulation๊ณผ Proximal-ADMM์ ํตํด ๊ด์ ์ ์ฝ ์กฐ๊ฑด, ๊ด์ ํ๊ณ, ๋ง์ฐฐ ์ ์ด์ ํตํฉ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, heterogeneous world๋ฅผ ์ง์ํ์ฌ ๊ตฌ์กฐ์ ์ผ๋ก ๋ค์ํ ๋ก๋ด์ ๋๊ท๋ชจ ๋ณ๋ ฌ ์๋ฎฌ๋ ์ด์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๐ 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๋ ์ ์ฝ ๋ฐ์ ๋ฒกํฐ์ ๋๋ค.
์ธ ๊ฐ์ง ๋ฒ์ฃผ์ ์ ์ฝ ์กฐ๊ฑด์ด ๋จ์ผ ์์คํ ์ผ๋ก ํตํฉ๋ฉ๋๋ค:
- ์๋ฐฉํฅ(Bi-lateral) ๋ฐ ๋จ๋ฐฉํฅ(Unilateral) ์กฐ์ธํธ ์ ์ฝ ์กฐ๊ฑด: f(q) = 0 ํํ๋ก, ์ด๋ํ์ ๊ด๊ณ๋ฅผ ๊ฐ์ ํฉ๋๋ค. Maximal-coordinate formulation์ ํต์ฌ ์ฅ์ ์ ๋ฃจํ-ํ์ ์ ์ฝ ์กฐ๊ฑด์ด ์ผ๋ฐ์ ์ธ ์กฐ์ธํธ ์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ตฌ์กฐ์ ์ผ๋ก ๋์ผํ๊ฒ ์ฒ๋ฆฌ๋์ด ํน๋ณํ ์ฒ๋ฆฌ๊ฐ ํ์ ์๋ค๋ ์ ์ ๋๋ค.
- ๋จ๋ฐฉํฅ ์กฐ์ธํธ ํ๊ณ: ์กฐ์ธํธ ์ขํ์ ๋ํ ๋ถ๋ฑ์ ํ๊ณ๋ฅผ 0 \le \lambda \perp g(q) \ge 0 ํํ๋ก ๊ฐ์ ํฉ๋๋ค.
- ์ ์ด(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๋ฅผ ๋์ ํฉ๋๋ค. ๊ฐ ๋ฐ๋ณต ๋จ๊ณ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- D_{\eta, \rho} = D + (\eta + \rho)I๋ฅผ ๋น๋ํฉ๋๋ค.
- 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})์ ๋๋ค.
- y^i \leftarrow \Pi_K(x^i - \rho^{-1} z^{i-1})์ ๊ฐ์ด ์๋ฟ ํฌ์์ ์ํํฉ๋๋ค.
- 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 ์ํฌํ๋ก์ฐ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
- ์ ํ ์์คํ
ํด๊ฒฐ:
- ์ฌ์ฉ์๋ 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ํ์ฌ ์ ์ ๋ฐ๋ณต์ผ๋ก๋ ์ถฉ๋ถํ ์๋ ด ๋ฌ์ฑ)์ด ์์ต๋๋ค.
- ์ด์ข
ํ๊ฒฝ (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 ํ๋ จ ๋ฃจํ์ ๋ฐ๋ก ๊ณต๊ธํ ์ ์๋ค.
์์คํ ์ํคํ ์ฒ ๋ค์ด์ด๊ทธ๋จ
์คํ: ๋ฌด์์ ๊ฒ์ฆํ๋๊ฐ?
ํ๊ฐ ๋์ ๋ก๋ด ์์คํ
๋ ผ๋ฌธ์ ๋ค ๊ฐ์ ๋ก๋ด ์์คํ ์ ๋์์ผ๋ก 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 ์์์ ์์ฒ ๊ฐ ๋์์, ๊ทผ์ฌ ์์ด ์ ํํ๊ฒ ์๋ฎฌ๋ ์ด์ ํ๋ค.โ
์ด๋ฅผ ์ํด:
- ์ต๋ ์ขํ๊ณ๋ก ์์ ํ ํด๋ก์ง๋ฅผ ํต์ผ์ ์ผ๋ก ํํํ๊ณ ,
- Proximal-ADMM์ผ๋ก bilateral/unilateral/์ ์ด ์ ์ฝ์ ํ๋์ ํ๋ ์์ํฌ์์ ์ฒ๋ฆฌํ๋ฉฐ,
- Block-Cholesky ๋๋ Conjugate Residual ์ ํ ์๋ฒ๋ก Delassus ์์คํ ์ ํจ์จ์ ์ผ๋ก ํ๊ณ ,
- 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์ ์์