PyRoki: A Modular Toolkit for Robot Kinematic Optimization
์ ์: Chung Min Kim, Brent Yi, Hongsuk Choi, Yi Ma, Ken Goldberg, Angjoo Kanazawa | ๋ ์ง: 2025-05-06 | URL: https://arxiv.org/abs/2505.03728 📄 PDF
Essence
Fig. 1: PyRoki is a modular, extensible, and cross-platform toolkit for kinematic optimization. We unify problems
PyRoki๋ ์ญ๊ธฐ๊ตฌํ, ๊ถค์ ์ต์ ํ, ๋ชจ์
๋ฆฌํ๊ฒํ
๋ฑ ๋ค์ํ ๋ก๋ด ์ด๋ํ ์ต์ ํ ๋ฌธ์ ๋ฅผ ํตํฉ์ ์ผ๋ก ํด๊ฒฐํ๋ ๋ชจ๋์, ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ CPU/GPU/TPU์์ ์คํ๋๋ ํฌ๋ก์ค ํ๋ซํผ ํดํท์ด๋ค.
Motivation
- Known: ๋ก๋ด ์ด๋ํ์์ ์์น ์ต์ ํ๋ ํ์ค์ ํด๊ฒฐ์ฑ
์ด๋ฉฐ, ์ญ๊ธฐ๊ตฌํ(IK), ๊ถค์ ์ต์ ํ(trajectory optimization), ๋ชจ์
๋ฆฌํ๊ฒํ
(motion retargeting) ๋ฑ ๋ค์ํ ์์
์ ์ฌ์ฉ๋์ด์๋ค. ํ์ง๋ง ๊ธฐ์กด ๋๊ตฌ๋ค์ TracIK, pink, TrajOpt, cuRobo ๋ฑ ์์
๋ณ๋ก ํนํ๋์ด ์๋ค.
- Gap: ๊ธฐ์กด ๋๊ตฌ๋ค์ ์์
๋ณ C++ ๋ฃจํด, CUDA ์ปค๋, ๋ถ์์ Jacobian์ ์์กดํ์ฌ ํํธํ๋์ด ์์ผ๋ฉฐ, ์๋ก์ด ๋ชฉ์ ํจ์ ์ถ๊ฐ๋ฅผ ์ด๋ ต๊ฒ ํ๊ณ CPU ๋๋ GPU ์ค ํ๋๋ง ์ง์ํ๋ค. ๋ค์ํ ๋ก๋ด๊ณผ ์์
์ ์์ฐ๋ฅด๋ฉด์๋ ํฌ๋ก์ค ํ๋ซํผ์ผ๋ก ์คํ๋๋ ํตํฉ ํ๋ ์์ํฌ๊ฐ ๋ถ์ฌํ๋ค.
- Why: ๋ก๋ด ์์ฉ์์ ๋ค์ํ ์ต์ ํ ๋ชฉํ(์์ธ ์ค๋ฅ, ์๋, ์ถฉ๋ ํํผ, ์ธ๊ฐ ์์ฐ ์ ์ฌ์ฑ)๋ฅผ ์ ์ฐํ๊ฒ ์ง์ํ๊ณ , PyTorch์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ฝ๊ฒ ์๋ก์ด ๋ชฉ์ ํจ์๋ฅผ ์ ์ํ๊ณ ์คํํ ์ ์๋ ํตํฉ ํ๋ ์์ํฌ๋ ์ฐ๊ตฌ์ ์ค์ ์ ์ฉ ๋ชจ๋๋ฅผ ๊ฐ์ํํ ์ ์๋ค.
- Approach: PyRoki๋ Levenberg-Marquardt ์ต์ ํ๊ธฐ, ๋ชจ๋์ ๋ณ์ ์ถ์ํ(joint configuration, SE(3), SO(3) Lie group), ์กฐํฉ ๊ฐ๋ฅํ ๋ชฉ์ ํจ์๋ฅผ ์ค๊ณํ์ฌ ๋์ผํ ์ต์ ํ ์ธํฐํ์ด์ค๋ก ๋ค์ํ ์์
์ ํตํฉํ๋ค. JAX ๊ธฐ๋ฐ์ผ๋ก CPU/GPU/TPU์์ ์๋ ๋ฏธ๋ถ๊ณผ ํจ์จ์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
Achievement
Fig. 2: Interactive Web-based Robot Viewer. Users can
๋ชจ๋์ ํดํท: ์ด๋ํ ๋ณ์์ ๋ชฉ์ ํจ์๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ญ๊ธฐ๊ตฌํ, ๊ถค์ ์ต์ ํ, ๋ชจ์
๋ฆฌํ๊ฒํ
์์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก ์ค๊ณํ๋ค. ํฌ๋ก์ค ํ๋ซํผ ์ง์: CPU, GPU, TPU์์ ๋ค์ดํฐ๋ธ ์คํ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ฐฐ์น ์ฒ๋ฆฌ ๋ณ๋ ฌํ๋ฅผ ์ง์ํ๋ค. ์ฑ๋ฅ: ๋ฐฐ์น ์ญ๊ธฐ๊ตฌํ์์ ๊ธฐ์กด GPU ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ cuRobo ๋๋น 1.4-1.7๋ฐฐ ๋น ๋ฅด๊ณ ๋ ๋ฎ์ ์ค๋ฅ๋ก ์๋ ดํ๋ค. ํ์ฅ์ฑ: ์๋ ๋ฏธ๋ถ์ ํตํ ์ฌ์ฉ์ ์ ์ ๋ชฉ์ ํจ์ ์ ์๋ฅผ ์ฝ๊ฒ ํ๋ฉด์ ๋ถ์์ Jacobian๋ ์ง์ํ๋ค. ์๊ฐํ: ์น ๊ธฐ๋ฐ ์ธํฐ๋ํฐ๋ธ ๋ทฐ์ด๋ก ๋น์ฉ ๊ฐ์ค์น๋ฅผ ์ค์๊ฐ ์กฐ์ ๊ฐ๋ฅํ๋ค.
How
Fig. 2: Interactive Web-based Robot Viewer. Users can
- Levenberg-Marquardt ์ต์ ํ๊ธฐ๋ฅผ JAX ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ์ฌ ์๋ ๋ฏธ๋ถ๊ณผ block-sparse Jacobian ๊ณ์ฐ ์ง์
- Joint configuration ๋ณ์ ์ถ์ํ๋ก ๊ณ ์ , ํ์ , ์ง๋ ๊ด์ ๋ฐ mimic joints ์ง์
- SE(3), SO(3) Lie group ๋ณ์๋ก ๊ธฐํํ์ ๊ตฌ์กฐ๋ฅผ ์ ์งํ๋ฉฐ ๋ณด๊ฐ, ํฉ์ฑ, ์์ธ ์ค๋ฅ ๊ณ์ฐ ์ํ
- ์ฌ์ ๊ตฌํ๋ ๋ชฉ์ ํจ์(joint pose cost, collision cost ๋ฑ) ์ ๊ณต ๋ฐ ์ฌ์ฉ์ ์ ์ ๋น์ฉํจ์ ์กฐํฉ ๊ฐ๋ฅ
- JAX์ ์๋ ๋ฏธ๋ถ์ผ๋ก Jacobian ์๋ ๊ณ์ฐํ๋ฉฐ ํ์์ ๋ถ์์ Jacobian ๊ต์ฒด ๊ฐ๋ฅ
- ์น ๊ธฐ๋ฐ ์๊ฐํ ๋๊ตฌ(viser ๊ธฐ๋ฐ)๋ก ๋น์ฉ ๊ฐ์ค์น ์ค์๊ฐ ์กฐ์ ๋ฐ ์กฐ์์ฑ ํ์์ฒด ํ์
Originality
- ์ญ๊ธฐ๊ตฌํ, ๊ถค์ ์ต์ ํ, ๋ชจ์
๋ฆฌํ๊ฒํ
์ ํตํฉ๋ ๋ชฉ์ ํจ์ ํ๋ ์์ํฌ๋ก ์ฌ์ ์ํ์ฌ ๋ฌธ์ ์ ๊ณตํต ๊ตฌ์กฐ๋ฅผ ๋๋ฌ๋
- PyTorch ์คํ์ผ์ ๋ชจ๋ํ API ์ค๊ณ๋ก ๋ก๋ด ์ด๋ํ ์ต์ ํ๋ฅผ ๋ฏผ์ฃผํํ๋ ์๋ก์ด ์ ๊ทผ
- Lie group ๋ณ์ ์ถ์ํ๋ก ๊ธฐํํ์ ๊ตฌ์กฐ๋ฅผ ์กด์คํ๋ฉด์๋ ์ฌ์ฉ ํธ์์ฑ ์ ๊ณต
- ๋จ์ผ ํ๋ ์์ํฌ์์ CPU/GPU/TPU ํฌ๋ก์ค ํ๋ซํผ ์ง์์ผ๋ก ๊ธฐ์กด ๋๊ตฌ๋ค์ ์ ์ฝ ๊ทน๋ณต
- ์ธํฐ๋ํฐ๋ธ ์น ๊ธฐ๋ฐ ์๊ฐํ๋ก cost weight tuning์ ์ง๊ด์ ์ผ๋ก ์ง์ํ๋ ๋
์ฐฝ์ ์ค๊ณ
Limitation & Further Study
- ํ๋ ์ ์ฝ(joint limits, ์ ์ด ํํผ)์ ์ง์ ์ฒ๋ฆฌํ์ง ์๊ณ ๋ฏธ๋ถ ๊ฐ๋ฅํ ํ๋ํฐ๋ก ํํํ๋ฏ๋ก ์๊ฒฉํ ์ ์ฝ์ด ํ์ํ ๊ฒฝ์ฐ ๋ถ์กฑํ ์ ์์
- Levenberg-Marquardt ์ต์ ํ๊ธฐ๋ง ์ง์ํ๋ฏ๋ก ๋ค๋ฅธ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ(BFGS, trust region ๋ฑ) ์ ํ ๋ถ๊ฐ
- ๋
ผ๋ฌธ์์ ๋ถ์์ Jacobian ์์ฑ์ ๋ณต์ก๋๋ ์๋ ๋ฏธ๋ถ ์ฑ๋ฅ ์ค๋ฒํค๋์ ๋ํ ์์ธํ ๋น๊ต ๋ถ์ ๋ถ์กฑ
- ์ค์ ๋ก๋ด ํ๋์จ์ด ์ ์ฝ(actuator limits, friction ๋ฑ)์ ๋ช
์์ ์ผ๋ก ๋ชจ๋ธ๋งํ๋ ๊ธฐ๋ฅ ์ ๋ณด ๋ถ์ฌ
- ํ์ ์ฐ๊ตฌ๋ก ๋ค์ํ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ ์ง์, ํ์ต ๊ธฐ๋ฐ ์ด๊ธฐ๊ฐ ์ ๊ณต, ์ค์๊ฐ ์ ์ฝ ์ฒ๋ฆฌ ๊ฐ์ ์ด ํ์ํจ
Evaluation
Novelty: 4/5 Technical Soundness: 3/5 Significance: 4/5 Clarity: 4/5 Overall: 4/5
์ดํ: PyRoki๋ ๋ก๋ด ์ด๋ํ ์ต์ ํ๋ฅผ ์ํ ํตํฉ๋ ๋ชจ๋์ ํ๋ ์์ํฌ๋ก์ ํํธํ๋ ๊ธฐ์กด ๋๊ตฌ๋ค์ ๋ฌธ์ ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๊ณ , CPU/GPU/TPU ํฌ๋ก์ค ํ๋ซํผ ์ง์๊ณผ cuRobo ๋๋น 1.4-1.7๋ฐฐ ์ฑ๋ฅ ํฅ์์ ๋ฌ์ฑํ์๋ค. ์ธํฐ๋ํฐ๋ธ ์๊ฐํ์ ์ฌ์ฉ ํธ์์ฑ์ ๊ฐ์ถ ์ค์ฉ์ ์ธ ์คํ์์ค ๋๊ตฌ๋ก์ ๋์ ์ฐ๊ตฌ ๋ฐ ์ฐ์
๊ฐ์น๊ฐ ์๋ค.
๐ง Audio Overview
์ด ๋
ผ๋ฌธ ๋ฆฌ๋ทฐ๋ฅผ ํ์บ์คํธํ ์ค๋์ค๋ก ์์ฑํฉ๋๋ค. (Gemini ยท ํค๋ ๋ธ๋ผ์ฐ์ ์๋ง ์ ์ฅ ยท ์์ฑ๋ณธ์ ์ด๋ฉ์ผ๋ก๋ ์ ์ก)
โธ ๊ณ ๊ธ: ๊ตฌ์ฑ ๋ฐฉํฅ(๋๋ณธ ์์ฑ ์ง์นจ) ์ง์ ์์