# ๐Ÿค– NEUROMOTION 3.0 // Humanoid-v5 Telemetry & RL [![Language: English](https://img.shields.io/badge/Language-English-blue)](README.md) [![Language: ํ•œ๊ตญ์–ด](https://img.shields.io/badge/Language-ํ•œ๊ตญ์–ด-green)](README_KR.md) [![Hugging Face Model Hub](https://img.shields.io/badge/๐Ÿค—%20Hugging%20Face-Model%20Hub-orange)](https://huggingface.co/hwihwalab/neuromotion-humanoid-v5-ppo) [![GitHub Repository](https://img.shields.io/badge/GitHub-Repository-181717?style=flat&logo=github)](https://github.com/Hwihwa-Lab/neuromotion-humanoid-v5-ppo) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/Hwihwa-Lab/neuromotion-humanoid-v5-ppo/blob/main/LICENSE) [![Gymnasium](https://img.shields.io/badge/Gymnasium-MuJoCo%20Humanoid--v5-0080FF)](https://gymnasium.farama.org/environments/mujoco/humanoid/) [![PyTorch](https://img.shields.io/badge/PyTorch-2.0+-EE4C2C?style=flat&logo=pytorch)](https://pytorch.org) [![Stable-Baselines3](https://img.shields.io/badge/Stable--Baselines3-PPO-brightgreen)](https://stable-baselines3.readthedocs.io) > **MuJoCo Humanoid-v5 PPO Continuous Control & Real-time Engineering Telemetry Dashboard** > *[ ๐ŸŒ English Documentation ](README.md) | [ ๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด ๋งค๋‰ด์–ผ ](README_KR.md)* ์ฒœ์žฌ๋””์ž์ธ์—์ด์ „ํŠธ ๋””์ž์ธ ์‹œ์Šคํ…œ๊ณผ **์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด(Dropdown Menu)**๊ฐ€ ์žฅ์ฐฉ๋œ **`NEUROMOTION 3.0`** ๊ณต์‹ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋งค๋‰ด์–ผ์ž…๋‹ˆ๋‹ค. --- ## ๐Ÿš€ Quick Start & Launch Modes (์‹คํ–‰ ๋ฐฉ๋ฒ•) ### 1. ๐Ÿ–ฅ๏ธ ๋ฉ”์ธ GUI ๋Œ€์‹œ๋ณด๋“œ ์‹คํ–‰ (์ถ”์ฒœ) Pygame ๊ธฐ๋ฐ˜ ์‹ค์‹œ๊ฐ„ ๋‹คํฌ ์‚ฌ์ด๋ฒ„ํŽ‘ํฌ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: ```powershell python run_gui.py ``` ### 2. ๐Ÿค— Hugging Face ๋ชจ๋ธ ํ—ˆ๋ธŒ ๋ฐฐํฌ (`deploy_to_hf.py`) ํ•™์Šต๋œ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜(`humanoid_ppo_model.zip`)์™€ ์‹คํ–‰ ์ฝ”๋“œ๋ฅผ Hugging Face์— ์›ํด๋ฆญ์œผ๋กœ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค: ```powershell # ์ „์ฒด ๋ชจ๋ธ ๋ฐ ์ฝ”๋“œ ์—…๋กœ๋“œ python deploy_to_hf.py # ํŒŒ์ผ ์—…๋กœ๋“œ ์—†์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(hwihwalab/neuromotion-humanoid-v5-ppo)๋งŒ ์ƒ์„ฑํ•  ๋•Œ python deploy_to_hf.py --create-only ``` > ๐Ÿ’ก **ํ–ฅํ›„ ๋ชจ๋ธ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•** > ์•ž์œผ๋กœ ์ถ”๊ฐ€ ํ•™์Šต์„ ์ง„ํ–‰ํ•œ ํ›„ ๊ฐ€์ค‘์น˜๋‚˜ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ฐฐํฌํ•˜๊ณ  ์‹ถ์œผ์‹ค ๋•Œ๋Š” ์–ธ์ œ๋“  ์•„๋ž˜ ๋ช…๋ น์–ด ํ•œ ์ค„๋งŒ ์‹คํ–‰ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค: > ```powershell > python deploy_to_hf.py > ``` ### 3. ๐Ÿ’ป ํ„ฐ๋ฏธ๋„ ๋‹ค์ค‘ ๋ชจ๋“œ ์‹คํ–‰๊ธฐ (`mujoko_humanoid.py`) ํ„ฐ๋ฏธ๋„ ๋Œ€ํ™”ํ˜• ๋ฉ”๋‰ด ๋˜๋Š” ๋ช…๋ น์ค„ ์˜ต์…˜์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ชฉ์ ๋ณ„ ํ•™์Šต/์‹œ์—ฐ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: ```powershell # ๋Œ€ํ™”ํ˜• ๋ฒˆํ˜ธ ์„ ํƒ ๋ฉ”๋‰ด ์‹คํ–‰ python mujoko_humanoid.py # ๋˜๋Š” ์›ํ•˜๋Š” ๋ชจ๋“œ๋ฅผ ์ง์ ‘ ์ง€์ •ํ•˜์—ฌ ์‹คํ–‰ python mujoko_humanoid.py --mode train_live # [๋ชจ๋“œ 1] ์‹ค์‹œ๊ฐ„ 3D ์‹œ๊ฐํ™” + ๊ฐ•ํ™”ํ•™์Šต python mujoko_humanoid.py --mode train_fast # [๋ชจ๋“œ 2] ๊ณ ์† ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ•™์Šต + ์ฃผ๊ธฐ์  3D ํ‰๊ฐ€ python mujoko_humanoid.py --mode play # [๋ชจ๋“œ 3] ํ•™์Šต๋œ ๋ชจ๋ธ(humanoid_ppo_model.zip) 3D ๋ณดํ–‰ ์‹œ์—ฐ python mujoko_humanoid.py --mode random # [๋ชจ๋“œ 4] ์ดˆ๊ธฐ ๋ฌด์ž‘์œ„(Random) ํ–‰๋™ ๊ด€์ฐฐ ``` --- ## ๐Ÿ–ฑ๏ธ Top Control Header (์ƒ๋‹จ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๋ฒ„ํŠผ & ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด) ์ƒ๋‹จ ๋ฒ„ํŠผ๋“ค์€ ๋งˆ์šฐ์Šค ํ˜ธ๋ฒ„ ์‹œ **์†๊ฐ€๋ฝ ๋ชจ์–‘ ์ปค์„œ(๐Ÿ‘†)**์™€ ์•ฐ๋น„์–ธํŠธ ํ•˜์ด๋ผ์ดํŠธ๊ฐ€ ์ ์šฉ๋˜๋ฉฐ, ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์˜ต์…˜์„ ์ฆ‰์‹œ ์ฝ• ์ฐ์–ด ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. | Button Name | Type | Options & Function Description | | :--- | :---: | :--- | | **`[ โ— PPO TRAINING ]` / `[ โธ PAUSED ]`** | **Action** | **Telemetry Pause / Resume**: AI ํ•™์Šต ๋ฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ผ์‹œ์ •์ง€ / ์žฌ๊ฐœ (๋‹จ์ถ•ํ‚ค: `Space`) | | **`[ SPEED: 1X โ–ผ ]`** | **Dropdown** | **ํด๋ฆญ ์‹œ ๋ฐฐ์† ์„ ํƒ ๋ฉ”๋‰ด ํŒ์—…**:
โ€ข `1X Normal (1x)` : ๊ธฐ๋ณธ ์„ธ๋ฐ€ ๊ด€์ฐฐ ์†๋„
โ€ข `2X Fast (2x)` : 2๋ฐฐ์† ํ•™์Šต
โ€ข `4X Hyper (4x)` : 4๋ฐฐ์† ๊ณ ์† ํ•™์Šต
โ€ข `8X Ultra (8x)` : 8๋ฐฐ์† ์ดˆ๊ณ ์† ์ง‘์ค‘ ํ•™์Šต (๋‹จ์ถ•ํ‚ค: `F` ๋กœ ๋น ๋ฅธ ์ˆœํ™˜ ๊ฐ€๋Šฅ) | | **`[ PUSH FORCE โ–ผ ]`** | **Dropdown** | **ํด๋ฆญ ์‹œ ์™ธ๋ž€ ์ถฉ๊ฒฉ ์„ธ๊ธฐ ์„ ํƒ ํŒ์—…**:
โ€ข `Light Push (15 N)` : ๊ฐ€๋ฒผ์šด ํˆญ ๋ฐ€๊ธฐ
โ€ข `Medium Push (30 N)` : ์ค‘๊ฐ„ ๊ท ํ˜• ํ”๋“ค๋ฆผ (๊ธฐ๋ณธ ์™ธ๋ž€)
โ€ข `Heavy Force (50 N)` : ๊ฐ•ํ•œ ์ถฉ๊ฒฉํŒŒ ํ…Œ์ŠคํŠธ (๋‹จ์ถ•ํ‚ค: `P` ๋กœ ๊ธฐ๋ณธ 30N ์ธ๊ฐ€) | | **`[ SAVE MODEL ]`** | **Action** | **Save Checkpoint Weights**: ํ˜„์žฌ ํ•™์Šต๋œ ์‹ ๊ฒฝ๋ง ๊ฐ€์ค‘์น˜๋ฅผ `humanoid_ppo_model.zip`์œผ๋กœ ์ €์žฅ (๋‹จ์ถ•ํ‚ค: `S`) | | **`[ LOAD MODEL ]`** | **Action** | **Load Checkpoint Weights**: ์ €์žฅ๋œ ๋ชจ๋ธ ๊ฐ€์ค‘์น˜ ์ฆ‰์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ (๋‹จ์ถ•ํ‚ค: `L`) | --- ## ๐Ÿ–ฅ๏ธ Telemetry Layout & Panels (7๋Œ€ ํ•ต์‹ฌ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ํŒจ๋„) 1. **MAIN 3D SIMULATION VIEW**: * MuJoCo Humanoid-v5 ์‹ค์‹œ๊ฐ„ 3D ๋ฌผ๋ฆฌ ๋ Œ๋”๋ง ํ™”๋ฉด * ์ƒ๋‹จ ์ธํฌ๋ฐ”: `EPISODE` // `ALIVE STEPS` // `NOISE SCALE (ฯƒ)` 2. **TOP BENTO STATS CARDS**: * `EPISODE REWARD`: ์ด๋ฒˆ ์—ํ”ผ์†Œ๋“œ ์‹ค์‹œ๊ฐ„ ๋ˆ„์  ๋ณด์ƒ * `PEAK REWARD`: ์—ญ๋Œ€ ์ตœ๊ณ  ๊ธฐ๋ก ๋ณด์ƒ ์ ์ˆ˜ * `20-EP MOVING AVG`: ์ตœ๊ทผ 20 ์—ํ”ผ์†Œ๋“œ ์ด๋™ ํ‰๊ท ์„  * `TOTAL TIMESTEPS`: ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ ๋ˆ„์  ์Šคํ…์ˆ˜ 3. **LEARNING DIAGNOSTICS**: * `Policy Gradient Loss`: ์ •์ฑ… ์‹ ๊ฒฝ๋ง ์†์‹ค ์ง€ํ‘œ * `Value Function Loss`: ๊ฐ€์น˜ ํ‰๊ฐ€ ์‹ ๊ฒฝ๋ง ์†์‹ค ์ง€ํ‘œ * `Entropy`: ํƒ์ƒ‰ ๋ฌด์ž‘์œ„์„ฑ ์ฒ™๋„ ๋ฐ ํ•™์Šต ์—…๋ฐ์ดํŠธ ํšŸ์ˆ˜ 4. **ACTUATOR TORQUES (17 DOF)**: * 17๊ฐœ ๊ด€์ ˆ ๋ชจํ„ฐ(๋ณต๋ถ€, ๊ณ ๊ด€์ ˆ, ๋ฌด๋ฆŽ, ์–ด๊นจ, ํŒ”๊ฟˆ์น˜ ๋“ฑ)์˜ ์‹ค์‹œ๊ฐ„ ํž˜ ๋ฐฉํ–ฅ ๋ฐ ์„ธ๊ธฐ ๋“€์–ผํ†ค ๊ฒŒ์ด์ง€ 5. **REWARD TELEMETRY CURVE**: * ์ตœ๊ทผ 100๊ฐœ ์—ํ”ผ์†Œ๋“œ ๋ณด์ƒ ๊บพ์€์„  ์ฐจํŠธ (ํ•˜๋‹จ ์—์–ด๋ฆฌ์–ด ํ•„ & ๋™์  ์Šค์ผ€์ผ๋ง) 6. **SYSTEM CONSOLE LOG**: * ์—ํ”ผ์†Œ๋“œ ์™„๋ฃŒ ๋ฐ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ์ด๋ฒคํŠธ ์‹ค์‹œ๊ฐ„ ๋ชจ๋…ธ์ŠคํŽ˜์ด์Šค ๋กœ๊ทธ (100% ๋ฐ•์Šค ๋‚ด๋ถ€ ํด๋ฆฌํ•‘) 7. **FOOTER SHORTCUTS**: * ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค ๊ฐ€์ด๋“œ ๋ฐ” (`[Space]` `[T]` `[F]` `[P]` `[S]` `[L]` `[R/E]`) --- ## โŒจ๏ธ Keyboard Shortcuts Reference | Key | Action | Description | | :---: | :--- | :--- | | **`Space`** | **Pause / Resume** | ํ•™์Šต ๋ฐ 3D ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ •์ง€/์žฌ๊ฐœ | | **`F`** | **Cycle Speed** | 1X โžก๏ธ 2X โžก๏ธ 4X โžก๏ธ 8X ๋ฐฐ์† ์ˆœํ™˜ | | **`P`** | **Push Robot** | ๋กœ๋ด‡์—๊ฒŒ ์™ธ๋ž€ ์ถฉ๊ฒฉ(30.0 N) ์ธ๊ฐ€ | | **`S`** | **Save Model** | ์ตœ์‹  ๊ฐ€์ค‘์น˜๋ฅผ `humanoid_ppo_model.zip`์œผ๋กœ ์ €์žฅ | | **`L`** | **Load Model** | ์ €์žฅ๋œ ๊ฐ€์ค‘์น˜ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ | | **`T`** | **Toggle 3D View** | 3D ๋ Œ๋”๋ง ON / OFF | | **`R` / `E`** | **Reset Episode** | ํ™˜๊ฒฝ ์ฆ‰์‹œ ์ดˆ๊ธฐํ™” | --- ## ๐Ÿ“Š Model Evaluation & Benchmarks 100,000 ์Šคํ… ์ถ”๊ฐ€ ํ›ˆ๋ จ ํ›„ 10๊ฐœ ์—ํ”ผ์†Œ๋“œ ์ •๋ฐ€ ํ‰๊ฐ€ ๊ฒฐ๊ณผ: * **ํ‰๊ท  ์ƒ์กด ์Šคํ…**: `88.5 steps` (์ตœ๊ณ : `109 steps`) * **ํ‰๊ท  ๋ˆ„์  ๋ณด์ƒ**: `455.52` (์ตœ๊ณ : `549.18`)