๐งฉNewton ๋ฌผ๋ฆฌ์์ง
This post is a translated article of the original โTrain a Quadruped Locomotion Policy and Simulate Cloth Manipulation with NVIDIA Isaac Lab and Newtonโ News.
NVIDIA Isaac Lab ๋ฐ Newton์ผ๋ก Quadruped ๋ณดํ ์ ์ฑ ์ ํ์ตํ๊ณ ์ฒ(์ท๊ฐ) ์กฐ์์ ์๋ฎฌ๋ ์ด์ ํ๊ธฐ
๋ฌผ๋ฆฌ(Physics)๋ ๋ก๋ด ์๋ฎฌ๋ ์ด์ ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํ๋ฉฐ, ๋ก๋ด ๋์๊ณผ ํ์ค์ ์ธ ํ๊ฒฝ ๋ด ์ํธ์์ฉ์ ์ ํํ๊ฒ ๊ฐ์์ผ๋ก ํํํ๋ ๊ธฐ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๋ฌํ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ํตํด ์ฐ๊ตฌ์์ ์์ง๋์ด๋ ๋ก๋ด ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ํ์ตยท๊ฐ๋ฐยทํ ์คํธยท๊ฒ์ฆํ๊ณ , ํ๋กํ ํ์ ์ ์์ ํ๊ณ ๊ฐ์ํ๋ ๋ฐฉ์์ผ๋ก ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์๋ฎฌ๋ ์ด์ ์ ์ข ์ข ํ์ค๊ณผ ์์ ํ ์ผ์นํ์ง ์๋๋ฐ, ์ด๋ฅผ sim-to-real gap(์๋ฎฌ๋ ์ด์ โํ์ค ์ฐจ์ด)์ด๋ผ๊ณ ํฉ๋๋ค. ๋ก๋ณดํฑ์ค ๊ฐ๋ฐ์๋ค์ ๋ค์ํ ์๋ฒ๋ฅผ ์ง์ํ๋ ํตํฉ ๊ฐ๋ฅํ๊ณ , ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ, ์ปค์คํฐ๋ง์ด์ฆ ๊ฐ๋ฅํ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง ์๋ฃจ์ ์ ํ์๋ก ํฉ๋๋ค.
์ด ๊ธ์์๋ NVIDIA Isaac Lab ๋ด์์ Newton์ ์ฌ์ฉํด 4์กฑ๋ณดํ ๋ก๋ด์ ํ ์ง์ ์์ ๋ค๋ฅธ ์ง์ ์ผ๋ก ์ด๋์ํค๋ Locomotion ์ ์ฑ ์ ํ์ตํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฐ์ ์ฉ ๋งค๋ํฐ๋ ์ดํฐ(Franka)๋ก ์ฒ(Cloth)์ ์ ๋ ๋ฑ ๋ค์ค ๋ฌผ๋ฆฌ(multi-physics) ์๋ฎฌ๋ ์ด์ ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํฉ๋๋ค.
1 Newton์ด๋ ๋ฌด์์ธ๊ฐ?
Newton์ NVIDIA, Google DeepMind, Disney Research๊ฐ ๊ณต๋ ๊ฐ๋ฐํ๊ณ Linux Foundation์์ ๊ด๋ฆฌํ๋ ์คํ ์์ค, ํ์ฅ ๊ฐ๋ฅํ ๋ฌผ๋ฆฌ ์์ง์ผ๋ก ๋ก๋ด ํ์ต ๋ฐ ๊ฐ๋ฐ์ ์ง์ ์ํค๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค. Newton์ NVIDIA Warp ๋ฐ OpenUSD ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ, MuJoCo Playground๋ Isaac Lab ๊ฐ์ ๋ก๋ด ํ์ต ํ๋ ์์ํฌ์ ํธํ๋ฉ๋๋ค.
๋ดํด์ ํต์ฌ์๋ ์์น ์ ๋ถ๊ณผ ์ ์ฝ ์กฐ๊ฑด ํด๊ฒฐ์ ์ํ ์๋ฒ ๋ชจ๋์ด ์์ต๋๋ค. ์๋ฒ๋ ์ ์ฝ ์กฐ๊ฑด ๊ธฐ๋ฐ ๋๋ ํ ๊ธฐ๋ฐ(constraint- or force-based)์ผ ์ ์์ผ๋ฉฐ, ์ง์ ๋๋ ๋ฐ๋ณต ๋ฐฉ๋ฒ(direct or iterative methods)์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ต๋ ๋๋ ์ถ์๋ ์ขํ ํํ(maximal or reduced coordinate representations)์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ณตํต ์ธํฐํ์ด์ค์ ๊ณต์ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ์ฌ์ฉํ๋ฉด MuJoCo Warp, ๋์ฆ๋ ๋ฆฌ์์น Kamino ์๋ฒ, ์ปค์คํ ์๋ฒ๋ฅผ ์คํํ๋ ๋ดํด๊ณผ ์ผ๊ด๋๊ฒ ์ํธ ์์ฉํ ์ ์์ต๋๋ค. ๋ํ ์ด ๋ชจ๋์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ ์ถฉ๋ ์ฒ๋ฆฌ, ์ญ์ด๋ํ, ์ํ ๊ด๋ฆฌ, ํ์์คํ ๋ ผ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๋ จ์ ์ํด ๋ดํด์ ๋ฌผ๋ฆฌ ์ํ๋ฅผ PyTorch ๋ฐ NumPy ํธํ ๋ฐฐ์ด๋ก ๋ ธ์ถํ๋ ํ ์ ๊ธฐ๋ฐ API๋ฅผ ์ ๊ณตํ์ฌ Isaac Lab๊ณผ ๊ฐ์ ๋ก๋ด ํ์ต ํ๋ ์์ํฌ์ ํจ์จ์ ์ธ ๋ฐฐ์น ๋ฐ ์ํํ ํตํฉ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. Newton Selection API๋ฅผ ํตํด ํ๋ จ ์คํฌ๋ฆฝํธ๋ ๋จ์ผ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ณต๋ ์ํ๋ฅผ ์ฟผ๋ฆฌํ๊ณ , ๋์์ ์ ์ฉํ๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ ์ ๋ ฅํ ์ ์์ต๋๋ค.
๊ตฌ๊ธ ๋ฅ๋ง์ธ๋์์ ๊ฐ๋ฐํ MuJoCo Warp๋ ๋ดํด ์๋ฒ๋ก ์์ ํ ํตํฉ๋์ด ์์ผ๋ฉฐ, ๋ฅ๋ง์ธ๋ ์คํ์์ MJX์ Playground์๋ ๊ฐ๋ ฅํ ์ฑ๋ฅ์ ๋ถ์ฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ๊ณผ ๋ฒค์น๋งํฌ๋ฅผ ์ต์ํ์ ๋ง์ฐฐ๋ก Newton, IsaacLab, ๊ทธ๋ฆฌ๊ณ MuJoCo ํ๊ฒฝ ์ ๋ฐ์์ ์ํํ๊ฒ ์ด๋ํ ์ ์์ต๋๋ค.(Apache 2.0 ๋ผ์ด์ ์ค ํ์ ์ถ์๋์ด ์ปค๋ฎค๋ํฐ๊ฐ ์ฑํ, ํ์ฅ ๋ฐ ๊ธฐ์ฌํ ์ ์๋๋ก ๋ณด์ฅ)
2 Newton ๋ฒ ํ(ฮฒ) ๋ฆด๋ฆฌ์ค์ ํ์ด๋ผ์ดํธ
- MuJoCo Warp(์ฃผ์ Newton ์๋ฒ)๋ GeForce RTX 4090์์ ๋ณดํ(locomotion)์ ๋ํด ์ต๋ 152๋ฐฐ, ์กฐ์(manipulation)์ ๋ํด ์ต๋ 313๋ฐฐ ๋น ๋ฅธ ์ฑ๋ฅ (NVIDIA RTX PRO 6000 Blackwell Series๋ MuJoCo Warp์ ๋ํด ์ต๋ 44% ์ถ๊ฐ ์๋, MJX์ ๋ํด 75% ์ถ๊ฐ ์๋ ์ ๊ณต)
- Newton ๋ฒ ํ๋ ์ฐจ์ธ๋ Isaac Lab ๋ฐฑ์๋๋ก ์ฌ์ฉ๋ ๋, MuJoCo Warp ๋๋น PhysX๋ณด๋ค in-hand dexterous manipulation์์ ์ต๋ 65% ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ฌ์ฑ
- ์์ ๋ณํ์ฒด(์: ์๋ณต)์ฉ Vortex Block Descent(VBD) ์๋ฒ์, ์ ์ ๊ธฐ๋ฐ ์ฌ๋ฃ(์: ํยท์๊ฐ)์ฉ Implicit Material Point Method(MPM) ์๋ฒ์ ์ฑ๋ฅ ๋ฐ ์์ ์ฑ ํ์ฅ์ด ํฌํจ
3 Isaac Lab์์ Newton์ ์ฌ์ฉํด ์ฟผ๋๋ฌํ๋ ๋ณดํ ์ ์ฑ ์ ํ์ตํ๋ ๋ฐฉ๋ฒ(๊ฐ์)
Isaac Lab์ ํตํฉ๋ Newton ๋ฌผ๋ฆฌ ์์ง์ ๋ก๋ด ์ฐ๊ตฌ ๊ฐ๋ฐ์ ์ํ ๋ ๋น ๋ฅด๊ณ ๊ฐ๊ฑดํ ์ํฌํ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋๋ 4์กฑ๋ณดํ๋ก๋ด(ANYmal-D ๋ก๋ด ์ฌ์ฉ ์)์ ๋์์ผ๋ก ํ ์๋ ํฌ ์๋(train โ validate โ deploy) ์์์ ๋๋ค.
3.1 Step 1 โ Newton์ผ๋ก ๋ณดํ ์ ์ฑ ํ์ตํ๊ธฐ
- ๋ ํฌ์งํ ๋ฆฌ ์ค์ : Isaac Lab ์ ์ฅ์๋ฅผ ์ค์ ํฉ๋๋ค(๋ ํฌ์งํ ๋ฆฌ ์ ์ ๋งํฌ ์ฐธ์กฐ).
- ํ์ต ์คํฌ๋ฆฝํธ ์คํ: Isaac Lab์ RL ์คํฌ๋ฆฝํธ(์:
rsl_rl)๋ฅผ ์ฌ์ฉํด ANYmal-D๋ฅผ ํ์ง์์ ๊ฑท๋๋ก ํ์ตํฉ๋๋ค. GPU ๋ณ๋ ฌํ๋ฅผ ํตํด ์์ฒ ๊ฐ์ ๋ณ๋ ฌ ํ๊ฒฝ์์ ๋น ๋ฅด๊ฒ ์๋ ด์ํฌ ์ ์์ต๋๋ค. - headless ๋ชจ๋์์ ํ์ต(์ต๋ ์ฑ๋ฅ ๊ถ์ฅ) :
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py \
--task Isaac-Velocity-Flat-Anymal-D-v0 --num_envs 4096 --headless- Newton Visualizer(๊ฒฝ๋ ๋ชจ๋ํฐ๋ง ๋๊ตฌ): ๋ดํด ๋ฒ ํ ๋ฒ์ ์ ํตํด ์๋ก์ด ๊ฒฝ๋ ๋ดํด ๋น์ฃผ์ผ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ์ด๋๋ฒ์ค GUI์ ์ฑ๋ฅ ์ค๋ฒํค๋ ์์ด ํ๋ จ ์งํ ์ํฉ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
--newton_visualizerํ๋๊ทธ๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค:
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py \
--task Isaac-Velocity-Flat-Anymal-D-v0 --num_envs 4096 --headless \
--newton_visualizerํ์ต์ด ์๋ฃ๋๋ฉด .pt ํ์์ ์ ์ฑ
์ฒดํฌํฌ์ธํธ๊ฐ ์์ฑ๋ฉ๋๋ค.

Time-lapse of RL training visualized using the Newton Visualizer
3.2 Step 2 โ Validation with Sim2Sim(PhysX โ๏ธ Newton) transfer
- Sim2Sim ์ ์ด๋ ์ ์ฑ ์ด ํน์ ๋ฌผ๋ฆฌ ์์ง ํน์ฑ์ ๊ณผ์ ํฉ(overfit)๋์ง ์์๋์ง ํ์ธํ๋ ํ์ ๊ฒ์ฆ์ ๋๋ค. ์๋ก ๋ค๋ฅธ ์๋ฎฌ๋ ์ดํฐ(์: PhysX โ๏ธ Newton) ๊ฐ ์ ์ด๊ฐ ์ฑ๊ณตํ๋ฉด ์ค์ ๋ก๋ด์์๋ ๋์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
- ์๋ก ๋ค๋ฅธ ๋ฌผ๋ฆฌ ์์ง์ USD๋ฅผ ํ์ฑํ๋ ๋ฐฉ์์ด๋ ๊ด์ ์์๊ฐ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก, ๊ด์ฐฐ(observation)๊ณผ ํ๋(action)์ ์ฌ๋งคํํ๋ ๊ฐ๋จํ YAML ๋งคํ ํ์ผ๋ก ์ด๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- Newton์์ ํ์ตํ ์ ์ฑ ์ PhysX ๊ธฐ๋ฐ Isaac Lab์์ ์คํํ๋ ค๋ฉด ์ ๊ณต๋๋ ์ ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ธ์:
./isaaclab.sh -p scripts/newton_sim2sim/rsl_rl_transfer.py \
--task=Isaac-Velocity-Flat-Anymal-D-v0 \
--num_envs=32 \
--checkpoint <PATH_TO_POLICY_CHECKPOINT> \
--policy_transfer_file scripts/sim2sim_transfer/config/newton_to_physx_anymal_d.yamlํด๋น transfer ์คํฌ๋ฆฝํธ๋ Isaac Sim / IsaacLab GitHub ๋ ํฌ์งํ ๋ฆฌ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
An ANYmal-D policy trained with the Newton backend is successfully deployed in PhysX-based Isaac Lab, showing Sim2Sim transfer in action
3.3 Step 3 โ Prepare for Sim2Real
- ์๋ฎฌ๋ ์ด์ ์์ ํ์ตํ ์ ์ฑ ์ ์ค์ ๋ก๋ด์ผ๋ก ์ด์ ํ๋ ๋ง์ง๋ง ๋จ๊ณ์ ๋๋ค. ์ด ์์์์๋ ์ ์ฑ ํ์ต ์ IMU, ๊ด์ ์ธ์ฝ๋์ ๊ฐ์ ์ค์ ๋ก๋ด์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ด์ฐฐ๊ฐ๋ง ์ฌ์ฉํ๋๋ก ์ ํํ์ฌ ํน๊ถ ์ ๋ณด(privileged info)๋ฅผ ์ฌ์ฉํ์ง ์์์์ ๋ช ์ํฉ๋๋ค.
- ETH Zurich Robotic Systems Lab(RSL)์ ํ๋ ฅ์ผ๋ก ํด๋น ์ ์ฑ ์ ๋ฌผ๋ฆฌ์ ANYmal ๋ก๋ด์ ์ง์ ๋ฐฐํฌ๋์ด ๊ฑท๋ ๋์์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ์ต๋๋ค(ํ๋์จ์ด ํ ์คํธ ๋น๋์ค ์ฐธ์กฐ). ์ด๋ Isaac Lab์์์ ํ์ต์ด ์ค์ธ๊ณ ํ ์คํธ๋ก ์ด์ด์ง๋ ์ง์ ์ ์ธ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ค๋๋ค.
A physical ANYmal robot executing a walking gait commanded by a policy trained entirely in the experimental version of Isaac Lab with the Newton backend and transferred directly to hardware
์ฌ๊ธฐ๊น์ง ํ๋ จ, ๊ฒ์ฆ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ ๋ดํด์ด ์๋ฎฌ๋ ์ด์ ์์ ์ค์ ๋ก๋ด ๊ณตํ์์ ์ฌ์ฉ๋ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ณด์ฌ์ค๋๋ค.
4 Newton standalone ์์ง์ ์ด์ฉํ Multiphysics
Multiphysics ์๋ฎฌ๋ ์ด์ ์ ํ๋์ ํ๋ ์์ํฌ ๋ด์์ ๊ฐ์ฒด(์: ๋ก๋ด ์)์ ๋ณํ ๊ฐ๋ฅํ ๋ฌผ์ฒด(์: ์ฒ) ๊ฐ์ ๊ฒฐํฉ๋ ์ํธ์์ฉ์ ํฌ์ฐฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ก๋ด ์ค๊ณ, ์ ์ด ๋ฐ ์์ ์ฑ๋ฅ์ ๋ํ ๋ณด๋ค ํ์ค์ ์ธ ํ๊ฐ์ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์ต์ ํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค. Newton์ Isaac Lab๊ณผ ํจ๊ป ๋์ํ ๋ฟ ์๋๋ผ, ๋ ๋ฆฝ Python ๋ชจ๋๋ก๋ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋ฌผ๋ฆฌ ์์คํ ์ ์คํํ ์ ์์ต๋๋ค.
์๋ ์ํฌํ๋ก์ฐ์์๋ ๋ดํด์ ์ฃผ์ ํน์ง์ ์๊ฐํฉ๋๋ค: ๋ค์ํ ๋ฌผ๋ฆฌ์ ํน์ฑ์ ๊ฐ์ง ํผํฉ ์์คํ ์๋ฎฌ๋ ์ด์ . ๋ณํ ๊ฐ๋ฅํ ์ฒ์ ์กฐ์ํ๋ ๊ฐ์ฒด ๋ก๋ด ํ์ ์๋ฅผ ์ดํด๋ณด๊ณ , ๋ดํด API๋ฅผ ํตํด ์ฌ๋ฌ ๋ฌผ๋ฆฌํ ์๋ฒ๋ฅผ ํ๋์ ์ค์๊ฐ ์๋ฎฌ๋ ์ด์ ์ผ๋ก ์ฝ๊ฒ ๊ฒฐํฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ฐ์กฐํฉ๋๋ค.
4.1 Step 1: Franka ์(๋ก๋ด ํ) + Cloth(์ฒ) Interactive ๋ฐ๋ชจ ์คํ
- Newton ์ ์ฅ์ ๋ฃจํธ์์ ์คํํ๊ธฐ ์ฌ์ด ์์ ๋ชจ์์ ์ ๊ณตํฉ๋๋ค. Franka ๋ก๋ด ํ๊ณผ Cloth ๋ฐ๋ชจ๋ ๋ดํด ์ ์ฅ์์ ๋ฃจํธ์์ ํ ๋ฒ์ ๋ช ๋ น์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
- ํ๊ฒฝ ์ค์ :
- Franka Arm๊ณผ Cloth ๋ฐ๋ชจ ์คํ:
๋ฐ๋ชจ๋ ์ค์๊ฐ GPU ๊ฐ์ ์๋ฎฌ๋ ์ด์ ์ ๋ณด์ฌ์ฃผ๋ ์ธํฐ๋ํฐ๋ธ ๋ทฐ์ด๋ฅผ ์ด๋ฉฐ, Franka-cloth ๋ฐ๋ชจ๋ GPU ๊ธฐ๋ฐ VBD Cloth ์๋ฒ๋ฅผ ์ฌ์ฉํฉ๋๋ค. RTX 4090์์ ์ฝ 30 FPS๋ก ์คํ๋๋ฉฐ ์๋ฎฌ๋ ์ด์ ๋ด ์นจํฌ(penetration) ์๋ ์ ์ด์ ๋ณด์ฅํฉ๋๋ค. ๋ค๋ฅธ GPU ๊ธฐ๋ฐ ์นจํฌ-์ ๊ฑฐ ์๋ฎฌ๋ ์ดํฐ(์: GPU-IPC)์ ๋น๊ตํด 300๋ฐฐ ์ด์์ ์ฑ๋ฅ ์ฐ์๋ฅผ ๋ฌ์ฑํ๋ ๋ฑ, ํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์นจํฌ-ํ๋ฆฌ(fully penetration-free) ์ฒ ์กฐ์ ๋ฐ๋ชจ ์ค ๋งค์ฐ ๋น ๋ฅธ ํธ์ ๋๋ค.
The Newton standalone engine runs the cloth manipulation demo, combining rigid body and deformable physics. This visualization is rendered in NVIDIA Omniverse Kit
4.2 Step 2: ๋ฉํฐํผ์ง์ค ๊ฒฐํฉ(multiphysics coupling) ์ดํดํ๊ธฐ
- ์ด ๋ฐ๋ชจ๋ ์๋ก ๋ค๋ฅธ ๋์ญํ์ ๊ฑฐ๋์ ๊ฐ์ง ์์คํ
์ ๊ฒฐํฉํ๋ ๋ฉํฐํผ์ง์ค ์์์
๋๋ค. ๊ฐ ๊ตฌ์ฑ์์์ ํน์ ์๋ฒ๋ฅผ ํ ๋นํจ์ผ๋ก์จ ๊ตฌํ๋ฉ๋๋ค. ์์ ์คํฌ๋ฆฝํธ(
example_cloth_franka.py)์์ ์๋ฒ ์ด๊ธฐํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
# ๋ก๋ด์ฉ Featherstone ์๋ฒ ์ด๊ธฐํ
self.robot_solver = SolverFeatherstone(self.model, ...)
# ์ฒ์ฉ Vertex-Block Descent (VBD) ์๋ฒ ์ด๊ธฐํ
self.cloth_solver = SolverVBD(self.model, ...)- ๋ก๋ด ์๋ฒ๋ฅผ
SolverFeatherstone๋์SolverMuJoCo์ฒ๋ผ ๊ฐ์ฒด ์๋ฎฌ๋ ์ด์ ์ ์ง์ํ๋ ๋ค๋ฅธ ์๋ฒ๋ก ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์์ต๋๋ค. - ์์ ๋ ๋จ๋ฐฉํฅ(one-way) ๊ฒฐํฉ์ ์ฌ์ฉํฉ๋๋ค(๊ฐ์ฒด๊ฐ ๋ณํ์ฒด์ ์ํฅ์ ๋ฏธ์น์ง๋ง, ๋ฐ๋ ๋ฐฉํฅ ์ํฅ์ ๋ฌด์). ์ฒ ์กฐ์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ์ฒ์ด ๋ก๋ด ๋์ญํ์ ๋ฏธ์น๋ ์ํฅ์ด ๋ฌด์๋ ์ ์๋ ์กฐ๊ฑดํ์ ์ด๋ฌํ ๊ฒฐํฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ฎฌ๋ ์ด์
๋ฃจํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Update the cloth:
cloth_solver๋ ๋ก๋ด์ ์ถฉ๋์ ๋ฐ์ํ์ฌ ์ฒ์ ์์ง์์ ์๋ฎฌ๋ ์ด์ - Update the robot:
robot_solverํ๋์นด ํ์ ์ํ๋ฅผ ์งํํ๋ฉฐ, ํ์ ์ด๋ํ์ (kinematic) ๋ฌผ์ฒด์ฒ๋ผ ์์ง์ - Detect collisions: ์์ง์ ์๋ก ๋ฐฐ์น๋ ๋ก๋ด๊ณผ ์ฒ ์ ์ ์ฌ์ด์ ์ถฉ๋์ ํ์ธ
- Update the cloth:
def simulate(self):
for _step in range(self.sim_substeps):
# 1. ๋ก๋ด ์๋ฒ๋ฅผ ํ ์คํ
์งํ
self.robot_solver.step(self.state_0, self.state_1, ...)
# 2. ๋ก๋ด๊ณผ ์ฒ ์
์ ๊ฐ ์ถฉ๋ ์ฒดํฌ
self.contacts = self.model.collide(self.state_0, ...)
# 3. ๋ก๋ด์ ์ถฉ๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ์ฌ ์ฒ ์๋ฒ ํ ์คํ
์งํ
self.cloth_solver.step(self.state_0, self.state_1, ..., self.contacts, ...)- ์ด์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ ์ดํ๋ ๋ฃจํ๋ ์๋ก ๋ค๋ฅธ ๋ฌผ๋ฆฌ ์์คํ ์ด ์ด๋ป๊ฒ ๊ฒฐํฉ๋๋์ง๋ฅผ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๊ฒ ํด ์ค๋๋ค.
- ํฅํ ์๋ฐฉํฅ(two-way) ๊ฒฐํฉ(์: ํยท์งํ๊ณผ ๊ฐ์ ๋ณํ์ฑ ์ง๋ฉด ์์์์ ๋ณดํ ์ ์ง๋ฉด์ด ๊ฐ์ฒด์ ์ญ์ผ๋ก ํ์ ๊ฐํ๋ ๊ฒฝ์ฐ) ๋ฐ ์์คํ ๊ฐ ํ์ ๊ตํ์ ๋ณด๋ค ์๋์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ผ๋ถ ์๋ฒ ์กฐํฉ์ ๋ํ ์์์ (implicit) ๊ฒฐํฉ๋ ๊ตฌํํ ๊ณํ์ ๋๋ค.
5 Newton์ ์ํ๊ณ(์์ฝ์์คํ )์ด ์ด๋ป๊ฒ ์ฑํํ๊ณ ์๋?
Newton ์คํ ์ํ๊ณ๋ ๋น ๋ฅด๊ฒ ํ์ฅ ์ค์ด๋ฉฐ, ์ฌ๋ฌ ๋ํ ๋ฐ ๊ธฐ์ ๋ค์ด ํนํ๋ ์๋ฒ์ ์ํฌํ๋ก์ฐ๋ฅผ ํตํฉํ๊ณ ์์ต๋๋ค. ์ด๊ฐ ์ผ์ฑ(tactile sensing)์์ ์ฒ ์๋ฎฌ๋ ์ด์ , ์ฌ์ธํ ์กฐ์(dexterous manipulation)์์ ๊ฑฐ์น ์งํ(locomotion over rough terrain)์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ํ์ ์ด ์งํ๋๊ณ ์์ต๋๋ค.
์ฃผ์ ์ฌ๋ก:
- ETH Zurich Robotic Systems Lab (RSL): ๋ํ ์ฅ๋น ์๋ํ(earthmoving) ๊ด๋ จ ๋ฉํฐํผ์ง์ค ์๋ฎฌ๋ ์ด์ ์ Newton์ ์ ๊ทน ํ์ฉ. ์์์ Material Point Method (MPM) ์๋ฒ๋ฅผ ์ฌ์ฉํด ํ ์ยท์๊ฐยท๋ ๊ฐ์ ์ ์ ์ํธ์์ฉ์ ์บก์ฒ. ๋ํ Warp ๋ ๊ด๋ฒ์ํ๊ฒ ์ ์ฉํ์ฌ, ๋ฐฐํฌ ๊ฐ๋ฅํ locomotion ์ ์ด๋ฅผ ์ํ ๋ฏธ๋ถ ๊ฐ๋ฅํ ์๋ฎฌ๋ ์ด์ , ๊ฐ์ฐ์์ ์คํ๋ซ(FOCI)์ ์ฌ์ฉํ ๊ถค์ ์ต์ ํ, GarmenCodeData ๋ฐ์ดํฐ์ ์ ํตํ ๋๊ท๋ชจ 3D ์๋ฅ ๋ชจ๋ธ๋ง๋ฑ์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.
Newton is used to capture interaction of heavy machinery with a pile of granular material. Demo credit: Maximilian Krause, Lorenzo Terenzi and Lennart Werner from ETH Zurich
- Lightwheel: SimReady ์์ ๊ฐ๋ฐ ๋ฐ ๋ณํ์ฒด(soil, cables ๋ฑ) ์๋ฒ ์ต์ ํ์ ๊ธฐ์ฌ. ANYmal ์ฟผ๋๋ฌํ๋๊ฐ ๋ค์ค ์ฌ์ง๋ก ๊ตฌ์ฑ๋ ๋น๊ฐ์ฒด(non-rigid) ์งํ(๋ชจ๋ยท์๊ฐ ๋ฑ) ์๋ฅผ ์ด๋ํ๋ ๋ฐ MPM ์๋ฒ๋ฅผ ์ ์ฉํ๋ ๋ฐ๋ชจ๋ฅผ ์ ์.
The ANYmal quadruped interacts with non-rigid terrain composed of multiple materials such as sand and gravel
- Peking University (PKU): IPC ๊ธฐ๋ฐ ์๋ฒ(Taccel)๋ฅผ Newton์ ํตํฉํด ๋น์ ๊ธฐ๋ฐ ์ด๊ฐ ์ผ์ฑ ์๋ฎฌ๋ ์ด์ ์ ํ์ฅ. Newton์ GPU ๊ฐ์ยท๋ฏธ๋ถ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ํ์ฉํด ์ฌ์ธํ ์ ์ด ์ํธ์์ฉ์ ๋ชจ๋ธ๋ง.
Taccel simulation of Tac-Man manipulation closely aligns with real-world execution, with only a small sim-real gap
- Style3D: ์๋ฅยท์ฐ์ฑ์ฒด ์๋ฎฌ๋ ์ด์ ๊ธฐ์ ์ Newton์ผ๋ก ํตํฉ, ์๋ฐฑ๋ง ์ ์ ์์ค์ ๋๊ท๋ชจ ์๋ฎฌ๋ ์ด์ ์ ์ง์ํ๊ธฐ ์ํ API ๋ ธ์ถ ๊ณํ.
High-fidelity modeling of garments and deformable objects with complex interactions using Newton
- TUM (Technical University of Munich): AIDX Lab์์ ์ค์ ๋ก๋ด์์ ๊ฒ์ฆ๋ ์๋ จ๋ ์กฐ์ ์ ์ฑ ์ ์๋ฎฌ๋ ์ด์ ์์ ๋ค์ ์ฌ์(์๋ฎฌ๋ ์ด์ ๊ฒ์ฆ)ํ๋ ์์ ๋ฑ์ ์งํ ์ค์ด๋ฉฐ, MuJoCo Warp์์ 4,000 ๋ณ๋ ฌ ํ๊ฒฝ์ผ๋ก ํ์ตํ๋ ๊ฒ๋ ์ด๋ฏธ ๊ฐ๋ฅํ๋ค๊ณ ๋ณด๊ณ . ํฅํ ํ๋์จ์ด๋ก์ ์ ์ก ๋ฐ ๊ณต๊ฐ ๋ถํด ์ด๊ฐ(Spatially resolved tactile skin)์ ์ด์ฉํ ๋ฏธ์ธ ์กฐ์(fine manipulation)์ผ๋ก ํ์ฅ ์์ .
Newton is used to run trained dexterous manipulation policies validated on real robotsโback in simulation
Netwon Reference
- https://github.com/newton-physics/newton
- https://deepwiki.com/newton-physics/newton
- https://newton-physics.github.io/newton/guide/overview.html
Newton was initiated by Disney Research, Google DeepMind, and NVIDIA.
- Newton standalone Beta ์์: GitHub ๋ ํฌ์งํ ๋ฆฌ
newton-physics/newtonโ https://github.com/newton-physics/newton. - Isaac Lab์์ Newton ์ฌ์ฉํด๋ณด๊ธฐ: Isaac Lab GitHub โ https://github.com/isaac-sim/IsaacLab/tree/feature/newton.
- Newton Developer(์ถ๊ฐ ์๋ฃ): https://developer.nvidia.com/newton-physics
- ๋ณธ ๊ธ์ ์๊ฐ๋ ์ฐ๊ตฌ๋ 2025๋ 9์ 27์ผ~10์ 2์ผ ์์ธ์์ ์ด๋ฆฌ๋ CoRL ๋ฐ Humanoids์์ ์ ์๋์ต๋๋ค.
- ๋ํ 2025 BEHAVIOR Challenge(๊ฐ์ ์ฉ ์์ 50๊ฐ ๋ฐ 10,000๊ฐ ์๊ฒฉ์กฐ์ ๋ฐ๋ชจ ํฌํจ)์ ์ฐธ์ฌํด ๋ณผ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.