๐Ÿฆ†
Microduck RL Studio
POLLEN ROBOTICS โ€ข MUJOCO WARP โ€ข 14-DOF
๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ MuJoCo 3.12 Warp Kernel โ€ข 20ms Step
ํ™œ์„ฑ ์ •์ฑ… ๋ชจ๋ธ alpha_walking PPO Actor-Critic (ONNX)
์•ก์ถ”์—์ดํ„ฐ ํ”„๋กœํŒŒ์ผ BAM M6 Dynamixel XL330-M288
์ž…์ถœ๋ ฅ ์ฐจ์› 61D โ†’ 14D Observation โ†’ Joint Target
๐ŸŽฏ ์‹ค์‹œ๊ฐ„ ๋ฌผ๋ฆฌ ๋ Œ๋”๋ง (Offscreen Capture)
Microduck Simulation Running Animation
REC: 60 FPS TRACKING: TRUNK DIST: 0.75m
์‹ค์‹œ๊ฐ„ 50Hz ์ž์ด๋กœ/๊ฐ€์†๋„ ํŒŒํ˜•:
Sampling: 0.02s (MuJoCo Integration)
๐Ÿ•น๏ธ ํ‚ค๋ณด๋“œ ์ธํ„ฐ๋ž™์…˜ ์ปจํŠธ๋กค ๋ฐํฌ
KEYBOARD LISTENER ON

ํ‚ค๋ณด๋“œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณธ ์›น ๋Œ€์‹œ๋ณด๋“œ์™€ ๋กœ์ปฌ run_simulator.bat ์ œ์–ด ์ฝ˜์†”์ด ์ฆ‰๊ฐ ๋ฐ˜์‘ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ๋ณดํ–‰ ์†๋„ ๋ฒกํ„ฐ ์ œ์–ด
์ „์ง„ ๊ฐ€์† (+0.05 m/s) โ†‘ (Arrow Up)
๊ฐ์† / ํ›„์ง„ (-0.05 m/s) โ†“ (Arrow Down)
์ขŒ์ธก ๊ฒŒ๊ฑธ์Œ (Vy +0.05 m/s) โ† (Arrow Left)
์šฐ์ธก ๊ฒŒ๊ฑธ์Œ (Vy -0.05 m/s) โ†’ (Arrow Right)
์ขŒํšŒ์ „ ์š”(Yaw) ๊ฐ์†๋„ A
์šฐํšŒ์ „ ์š”(Yaw) ๊ฐ์†๋„ E
๊ธด๊ธ‰ ๊ธ‰์ •์ง€ (Stop) Space
๐Ÿฅ‹ ํŠน์ˆ˜ ํ–‰๋™ ๋ฐ ์ž์„ธ ํŠธ๋ฆฌ๊ฑฐ
๋ฌผ๊ฑด ์ค๊ธฐ (Pick Object) G
์•‰๊ธฐ โ†” ์ผ์–ด์„œ๊ธฐ (Sit/Stand) Y
์™ผ๋ฐœ ์ŠˆํŒ… ํ‚ฅ (Ball Kick) K
์•ž๊ตฌ๋ฅด๊ธฐ ๋‚™๋ฒ• (Roulade 360ยฐ) R
์™ธ๋ž€ ์ถฉ๊ฒฉ ๊ฐ€ํ•˜๊ธฐ (Perturbation) P
๐Ÿค—

Hugging Face Jobs ์›๊ฒฉ ๋Œ€๊ทœ๋ชจ ๊ฐ•ํ™”ํ•™์Šต

4,096๊ฐœ ๋ณ‘๋ ฌ MuJoCo Warp ํ™˜๊ฒฝ์„ ํ†ตํ•œ PPO ๋ถ„์‚ฐ ํ›ˆ๋ จ ํŒŒ์ดํ”„๋ผ์ธ

ID: 6a9e6a53e686246ca69a7783
์‹คํ–‰ ์ƒํƒœ
๐ŸŸข RUNNING
ํ• ๋‹น ์ธํ”„๋ผ
NVIDIA L4 (24GB)
๋ณ‘๋ ฌ ํ™˜๊ฒฝ ์ˆ˜
4,096 Envs
๊ณ„์ • & ๋„ค์ž„์ŠคํŽ˜์ด์Šค
jongchullee
W&B ๋กœ๊น… ๋ชจ๋“œ
Disabled (ํŒจ์น˜์™„๋ฃŒ)
์ฒดํฌํฌ์ธํŠธ ์ €์žฅ์†Œ
mjlab-velocity-flat-microduck
๐ŸŒ Hugging Face Jobs ์‹ค์‹œ๊ฐ„ ์›น ๋Œ€์‹œ๋ณด๋“œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ“ฆ ์ƒ์„ฑ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํŠธ Hub ํ™•์ธ
๐Ÿ“‹ ํ›ˆ๋ จ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ ์š”์•ฝ
mjlab-microduck / rsl_rl
โš™๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜PPO (Proximal Policy Optimization)
๋ฐฐ์น˜ ํฌ๊ธฐ4,096 envs ร— 24 steps = 98,304
๋””์Šค์นด์šดํŠธ ํŒฉํ„ฐ (ฮณ)0.99
ํด๋ฆฝ ํŒŒ๋ผ๋ฏธํ„ฐ (ฮต)0.2
ํ•™์Šต๋ฅ  (Learning Rate)1e-3 (Adaptive)
๐ŸŽฏ ๋„๋ฉ”์ธ ๋žœ๋คํ™” (Domain Randomization)
๋ฐ”๋‹ฅ ๋งˆ์ฐฐ๊ณ„์ˆ˜0.4 ~ 1.25 Uniform
๋ชธ์ฒด ๋ฌด๊ฒŒ ์„ญ๋™ยฑ15% (ยฑ120g)
์•ก์ถ”์—์ดํ„ฐ ์ „์•• ๊ฐ•ํ•˜BAM M6 ์ €ํ•ญ ๋ชจ์‚ฌ (11.1V ~ 12.6V)
์™ธ๋ž€ ์ถฉ๊ฒฉ ์ฃผ๊ธฐ8์ดˆ๋งˆ๋‹ค 2.0 N ์™ธ๋ž€
โš™๏ธ 14๊ฐœ ๊ด€์ ˆ ์‹ค์‹œ๊ฐ„ ๊ฐ๋„ ๋ฐ BAM M6 ์•ก์ถ”์—์ดํ„ฐ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ
ROBOTIS DYNAMIXEL XL330-M288-T

ํ”„๋ž‘์Šค Pollen Robotics์˜ BAM M6 ๋ชจ๋ธ์€ ์ „์•• ์†์‹ค, ๋‚ด๋ถ€ ๊ธฐ์–ด ๋งˆ์ฐฐ ๋ฐ ๋ฐฑ๋ž˜์‹œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์‹ค์ œ ๋กœ๋ด‡์˜ ํ•˜๋“œ์›จ์–ด ํŠน์„ฑ์„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์— ์™„๋ฒฝํ•˜๊ฒŒ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.

๐Ÿฅ‹ ๊ณต์‹ ์‚ฌ์ „ํ•™์Šต ์ •์ฑ… ๋ชจ๋ธ (9 ONNX Models)
microduck/policies/*.onnx
๐Ÿšถ alpha_walking.onnx Default

์ „์ง„, ํ›„์ง„, ์ขŒ์šฐ ๊ฒŒ๊ฑธ์Œ ๋ณดํ–‰ ๋ฐ ์š” ํšŒ์ „์„ ํ†ตํ•ฉ ์ง€์›ํ•˜๋Š” ๋ฒ”์šฉ ์ด์กฑ๋ณดํ–‰ ์ œ์–ด๊ธฐ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D โ€ข PPO
๐Ÿง alpha_stand.onnx B / H

์•ˆ์ •์ ์ธ ์ œ์ž๋ฆฌ ์ง๋ฆฝ ๊ธฐ๋ฆฝ ์ƒํƒœ์—์„œ ๋ชธ์ฒด์˜ 3์ถ•(๋†’์ด, ํ”ผ์น˜, ๋กค) ์ž์„ธ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐Ÿช‘ alpha_sitstand.onnx Y

์„œ ์žˆ๋Š” ์ž์„ธ์—์„œ ๋ฐ”๋‹ฅ์œผ๋กœ ์•ˆ์ •์ ์œผ๋กœ ์ชผ๊ทธ๋ ค ์•‰๊ณ  ๋‹ค์‹œ ์™„์ „ํžˆ ์ผ์–ด์„œ๋Š” ๋™์  ๋ชจ์…˜์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐Ÿ” alpha_ground_pick.onnx G

์ƒ์ฒด๋ฅผ ๊นŠ์ด ์ˆ™์—ฌ ๋ถ€๋ฆฌ๋กœ ๋ฐ”๋‹ฅ์— ๋–จ์–ด์ง„ ๋ฌผ๊ฑด์„ ์ •ํ™•ํ•˜๊ฒŒ ์ง‘์–ด ์˜ฌ๋ฆฌ๋Š” ์ •๋ฐ€ ์ˆ™์ž„ ๋ชจ์…˜์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
โšฝ ball_kick_left.onnx K

70mm ์ง๊ฒฝ์˜ ์ถ•๊ตฌ๊ณต์„ ํ–ฅํ•ด ๋ฌด๊ฒŒ์ค‘์‹ฌ์„ ์˜ค๋ฅธ๋ฐœ๋กœ ์˜ฎ๊ธด ํ›„ ์™ผ๋ฐœ๋กœ ๊ฐ•ํ•˜๊ฒŒ ์ „๋ฐฉ ์ŠˆํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
โšฝ ball_kick_right.onnx Shift + K

์™ผ๋ฐœ๋กœ ์ง€ํƒฑํ•˜๋ฉฐ ์˜ค๋ฅธ๋ฐœ๋กœ ์ „๋ฐฉ ๋ชฉํ‘œ๋ฌผ์„ ํ–ฅํ•ด ํ‚ฅ์„ ๋‚ ๋ฆฌ๋Š” ๋Œ€์นญํ˜• ์ŠˆํŒ… ๋ชจ์…˜์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐Ÿคธ roulade.onnx R

์ „๋ฐฉ์œผ๋กœ 360๋„ ๊ณต์ค‘์ œ๋น„ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ๋„˜์–ด์ง€์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ๋‘ ๋ฐœ๋กœ ์ฐฉ์ง€ํ•˜๋Š” ๋‚™๋ฒ• ๋ชจ์…˜์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐Ÿ›ผ roller.onnx Mode 2

๋ฐœ๋ฐ”๋‹ฅ์— ๋กค๋Ÿฌ์Šค์ผ€์ดํŠธ๋ฅผ ์žฅ์ฐฉํ•œ ํŠน์ˆ˜ ์ƒํƒœ์—์„œ ๊ณ ์†์œผ๋กœ ๋ฏธ๋„๋Ÿฌ์ง€๋“ฏ ์ฃผํ–‰ํ•˜๋Š” ๋ฐ”ํ€ด ์ œ์–ด ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐ŸŽ๏ธ roller_crouch.onnx Mode 3

๋กค๋Ÿฌ์Šค์ผ€์ดํŠธ ์ฃผํ–‰ ์ค‘ ๋ฌด๊ฒŒ์ค‘์‹ฌ์„ ์ตœ๋Œ€ํ•œ ๋‚ฎ์ถฐ ๊ณต๊ธฐ์ €ํ•ญ๊ณผ ์ „๋ณต ์œ„ํ—˜์„ ์ค„์ด๋Š” ์›…ํฌ๋ฆฌ๊ธฐ ์ž์„ธ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ: 61D โ€ข ์ถœ๋ ฅ: 14D
๐Ÿ“Š PPO 61์ฐจ์› ๊ด€์ธก ๋ฒกํ„ฐ (Observation Space Breakdown)
Total Dim: 61
๋ชธ์ฒด ๊ฐ์†๋„ (Base Ang Vel) 3D (0..2)

IMU ์ž์ด๋กœ์„ผ์„œ์—์„œ ์ธก์ •๋œ ๋ชธ์ฒด ์ค‘์‹ฌ์ถ• ๊ฐ์†๋„ [ฯ‰x, ฯ‰y, ฯ‰z]

ํˆฌ์˜ ์ค‘๋ ฅ ๋ฒกํ„ฐ (Projected Gravity) 3D (3..5)

๋กœ๋ด‡ ๊ธฐ์ค€ ์ขŒํ‘œ๊ณ„๋กœ ํšŒ์ „ ๋ณ€ํ™˜๋œ 3์ฐจ์› ์ง€๊ตฌ ์ค‘๋ ฅ ๋ฐฉํ–ฅ [gx, gy, gz]

๋ช…๋ น ์†๋„ ๋ฐ ์ง€๋ น (Commands) 13D (6..18)

๋ชฉํ‘œ ๋ณดํ–‰ ์†๋„ [Vx, Vy, Vyaw] ๋ฐ ์ž์„ธ ๋†’์ด, ํ”ผ์น˜, ๋กค ๋ชฉํ‘œ๊ฐ’

๊ด€์ ˆ ์œ„์น˜ ์˜คํ”„์…‹ (Joint Positions) 14D (19..32)

14๊ฐœ ๊ด€์ ˆ์˜ ๊ธฐ๋ณธ ๊ธฐ๋ฆฝ ์œ„์น˜(Default Pose) ๋Œ€๋น„ ์ƒ๋Œ€ ํšŒ์ „๊ฐ

๊ด€์ ˆ ํšŒ์ „ ๊ฐ์†๋„ (Joint Velocities) 14D (33..46)

14๊ฐœ ์„œ๋ณด๋ชจํ„ฐ ์—”์ฝ”๋”์—์„œ 50Hz ๋‹จ์œ„๋กœ ๊ณ„์ธก๋œ ์ˆœ๊ฐ„ ํšŒ์ „์†๋„

์ด์ „ ์Šคํ… ํ–‰๋™ ์ถœ๋ ฅ (Previous Actions) 14D (47..60)

t-1 ์‹œ์ ์— ์‹ ๊ฒฝ๋ง์ด ์ถœ๋ ฅํ•œ ๊ด€์ ˆ ์œ„์น˜ ์˜คํ”„์…‹ ํƒ€๊นƒ (์ œ์–ด ์—ฐ์†์„ฑ ํ™•๋ณด)

๐Ÿ’ป ๋กœ์ปฌ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ ์›ํด๋ฆญ ์‹คํ–‰ ์•ˆ๋‚ด
Windows Batch & PowerShell
๐Ÿš€ ์›ํด๋ฆญ ๋Ÿฐ์ฒ˜

Windows ๋ฐ”ํƒ•ํ™”๋ฉด์ด๋‚˜ ํƒ์ƒ‰๊ธฐ์—์„œ run_simulator.bat๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜๋ฉด 3D MuJoCo OpenGL ๋ทฐ์–ด ์ฐฝ์ด ๋œน๋‹ˆ๋‹ค.

.\run_simulator.bat
๐Ÿค— Hugging Face ํ•™์Šต ์ƒํƒœ ํ™•์ธ

ํด๋ผ์šฐ๋“œ GPU ํ•™์Šต ์ž‘์—…์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ํ„ฐ๋ฏธ๋„์—์„œ ์ฆ‰์‹œ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

.\check_training_job.bat
์›๊ฒฉ ๊ฐ€์šฉ ์ฒดํฌํฌ์ธํŠธ -- Hugging Face Hub ์‹ค์‹œ๊ฐ„ ์—ฐ๋™
์ตœ์‹  ํ›ˆ๋ จ Iteration -- 50,000 Iter ๋ชฉํ‘œ ๋Œ€๋น„ ์ง„ํ–‰๋ฅ 
ํด๋ผ์šฐ๋“œ ํ›ˆ๋ จ ์‹œ๊ฐ„ -- NVIDIA L4 24GB GPU
๋กœ์ปฌ ๋ณด๊ด€ ๋ชจ๋ธ ์ˆ˜ -- checkpoints/ ํด๋” ์ €์žฅ
โšก

์ตœ์‹  ์ฒดํฌํฌ์ธํŠธ ์›ํด๋ฆญ ๋™๊ธฐํ™” (Quick Download)

ํด๋ผ์šฐ๋“œ GPU์—์„œ ๋ฐฉ๊ธˆ ์ƒ์„ฑ๋œ ์ตœ์‹  ๊ฐ€์ค‘์น˜ ๋ชจ๋ธ์„ ํด๋ฆญ ํ•œ ๋ฒˆ์œผ๋กœ ๋‚ด PC(๋กœ์ปฌ)๋กœ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

โ˜๏ธ Hugging Face Hub ์›๊ฒฉ ์ฒดํฌํฌ์ธํŠธ
๋ฐ˜๋ณต (Iter) ํŒŒ์ผ๋ช… ๋‹ค์šด๋กœ๋“œ
์›๊ฒฉ ๋ชฉ๋ก ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘...
๐Ÿ’พ ๋กœ์ปฌ ๋‹ค์šด๋กœ๋“œ ๋ณด๊ด€ํ•จ (`checkpoints/`)
๋™๊ธฐํ™” ์™„๋ฃŒ
๋กœ์ปฌ ํŒŒ์ผ ํ™•์ธ ์ค‘...
๐ŸŽฎ ๋‹ค์šด๋กœ๋“œํ•œ ๋ชจ๋ธ๋กœ ๋กœ์ปฌ 3D ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰ํ•˜๊ธฐ

๋กœ์ปฌ์— ๋ณด๊ด€๋œ ๋ชจ๋ธ์„ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์—์„œ ์‹คํ–‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค:

.\duckenv\Scripts\python.exe microduck_rl\scripts\infer_policy.py --policy microduck\policies\alpha_walking.onnx