Humanoid-Gym: 제로샷 Sim2Real 전이를 위한 휴머노이드 로봇 강화학습 프레임워크
요약
Humanoid-Gym은 Nvidia Isaac Gym을 기반으로 하는 휴머노이드 로봇 강화학습(RL) 프레임워크입니다. 이 프레임워크는 시뮬레이션에서 실제 환경으로의 제로샷 전이(zero-shot transfer)를 목표로 하며, 사용하기 쉬운 훈련 가이드와 스크립트를 제공합니다. 또한 Isaac Gym부터 Mujoco까지 Sim2Sim 파이프라인을 통합하여 정책의 견고성과 일반화 능력을 높였습니다.
핵심 포인트
- Isaac Gym 기반의 휴머노이드 로봇 RL 프레임워크입니다.
- 제로샷 Sim2Real 전이를 목표로 설계되었습니다.
- Mujoco 등 다양한 시뮬레이터 간 Sim2Sim 지원을 제공합니다.
- XBot-L 같은 실제 로봇에 적용하여 검증했습니다.
<a href="https://sites.google.com/view/humanoid-gym/">Humanoid-Gym: 제로샷 Sim2Real 전이를 위한 휴머노이드 로봇 강화학습</a>
<a href="https://sites.google.com/view/humanoid-gym/"><strong
angleProject Page</strong></a>
|
<a href="https://arxiv.org/abs/2404.05695"><strong
anglearXiv</strong></a>
|
<a href="https://twitter.com/roboterax/status/1765038672641175662"><strong
angleTwitter</strong></a>
<a href="https://github.com/zlw21gxy">Xinyang Gu*</a>,
<a href="https://wangyenjen.github.io/">Yen-Jen Wang*</a>,
<a href="http://people.iiis.tsinghua.edu.cn/~jychen/">Jianyu Chen†</strong>
*: 동등 기여. 프로젝트 공동 리드., †: 교신 저자.

Humanoid-Gym은 Nvidia Isaac Gym을 기반으로 하며, 휴머노이드 로봇의 이동(locomotion) 기술 훈련에 사용되는 사용하기 쉬운 강화학습 (RL) 프레임워크입니다. 이 프레임워크는 시뮬레이션에서 실제 환경으로의 제로샷 전이(zero-shot transfer)를 강조합니다. Humanoid-Gym은 또한 Isaac Gym에서 Mujoco까지의 sim-to-sim 프레임워크를 통합하여, 사용자가 훈련된 정책을 다양한 물리 시뮬레이션에서 검증할 수 있게 함으로써 정책의 견고성(robustness)과 일반화(generalization)를 보장합니다.
이 코드베이스는 RobotEra의 XBot-S (1.2미터 높이 휴머노이드 로봇)와 XBot-L (1.65미터 높이 휴머노이드 로봇)을 사용하여 실제 환경에서 제로샷 sim-to-real 전이로 검증되었습니다.
기능 (Features)
1. 휴머노이드 로봇 훈련 (Humanoid Robot Training)
이 저장소는 휴머노이드 로봇 훈련에 대한 포괄적인 가이드와 스크립트를 제공합니다. Humanoid-Gym은 휴머노이드 로봇을 위한 특수 보상(specialized rewards) 기능을 갖추고 있어 sim-to-real 전이의 난이도를 단순화합니다. 이 저장소에서는 RobotEra의 XBot-L을 주요 예시로 사용합니다. 최소한의 조정만으로 다른 로봇에도 사용할 수 있습니다. 저희 리소스는 설정, 구성 및 실행을 다룹니다. 우리의 목표는 심층적인 훈련과 최적화를 제공하여 로봇이 실제 환경에서 이동할 수 있도록 완전히 준비시키는 것입니다.
- 종합적인 훈련 가이드라인: 훈련 과정의 각 단계에 대한 상세한 안내를 제공합니다.
- 단계별 설정 지침: 저희의 가이드는 명확하고 간결하여 효율적인 설정 과정을 보장합니다.
- 쉬운 배포를 위한 실행 스크립트: 사전 준비된 스크립트를 활용하여 훈련 워크플로우를 간소화하세요.
2. Sim2Sim 지원
저희는 또한 sim2sim 파이프라인을 공유하는데, 이를 통해 학습된 정책을 고도로 정확하고 세심하게 설계된 시뮬레이션 환경으로 전이할 수 있습니다. 로봇을 확보한 후에는 실제 환경에서도 RL로 학습된 정책을 자신 있게 배포할 수 있습니다.
저희의 시뮬레이터 설정, 특히 Mujoco를 사용한 설정은 실제 시나리오를 면밀히 모방하도록 미세 조정되었습니다. 이러한 세심한 보정(calibration)은 시뮬레이션 환경과 실제 환경에서의 성능이 밀접하게 일치하도록 보장합니다. 이 개선을 통해 저희의 시뮬레이션은 더 신뢰성을 갖게 되며, 실제 시나리오에 적용할 수 있다는 자신감을 높여줍니다.
3. Denoising World Model Learning (노이즈 제거 월드 모델 학습)
Robotics: Science and Systems (RSS), 2024 (최우수 논문상 후보)
<a href="https://enriquecoronadozu.github.io/rssproceedings2024/rss20/p058.pdf"><strong class="text-decoration-none">논문</strong></a>
|
<a href="https://x.com/wangyenjen/status/1792741940087394540"><strong class="text-decoration-none">트위터</strong></a>
<a href="https://github.com/zlw21gxy">Xinyang Gu*</a>,
<a href="https://wangyenjen.github.io/">Yen-Jen Wang*</a>,
Xiang Zhu*,
Chengming Shi*,
Yanjiang Guo,
Yichen Liu,
<a href="http://people.iiis.tsinghua.edu.cn/~jychen/">Jianyu Chen†</a>
*: 공동 기여. 프로젝트 공동 리드., †: 교신 저자.
Denoising World Model Learning (DWL)은 상태 추정(state estimation)과 시스템 식별(system identification)을 통합하는 고급 sim-to-real 프레임워크를 제시합니다. 이 이중 방법론적 접근 방식은 로봇의 학습 및 적응이 실제 환경 맥락에서 모두 실용적이고 효과적이도록 보장합니다.
- 향상된 Sim-to-real 적응성: 로봇이 시뮬레이션 환경에서 실제 환경으로 전환하는 것을 최적화하는 기술들.
- 개선된 상태 추정 능력: 정확하고 신뢰할 수 있는 상태 분석을 위한 고급 도구들.
휴머노이드 로봇을 위한 지각 기반 이동 학습 (Coming Soon!)
<a href="https://x.com/roboterax/status/1798694054374564010"><strong class="text-blue-600">Twitter</strong></a>
정교한 손 조작 (Coming Soon!)
<a href="https://x.com/roboterax/status/1791349763448938924"><strong class="text-blue-600">Twitter</strong></a>
설치(Installation)
conda create -n myenv python=3.8을 사용하여 Python 3.8로 새로운 Python 가상 환경을 생성합니다.- 최고의 성능을 위해 NVIDIA 드라이버 버전 525 사용을 권장합니다 (
sudo apt install nvidia-driver-525). 지원되는 최소 드라이버 버전은 515입니다. 만약 525 버전을 설치할 수 없다면, 기본적인 기능을 유지하기 위해 시스템에 최소한 515 버전이 있는지 확인하십시오. - PyTorch 1.13을 Cuda-11.7과 함께 설치합니다:
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
conda install numpy=1.23으로 numpy-1.23을 설치합니다.- Isaac Gym 설치:
- https://developer.nvidia.com/isaac-gym에서 Isaac Gym Preview 4를 다운로드하여 설치합니다.
cd isaacgym/python && pip install -e .cd examples && python 1080_balls_of_solitude.py로 예제를 실행합니다.- 문제 해결은
isaacgym/docs/index.html을 참조하십시오.
- humanoid-gym 설치:
- 이 저장소를 클론(Clone)합니다.
cd humanoid-gym && pip install -e .
사용 가이드(Usage Guide)
예제(Examples)
# humanoid-gym/humanoid 디렉토리에서 실행
# 'v1'에 대한 4096 환경 전반의 PPO 정책 학습 시작
# 이 명령어는 휴머노이드 태스크를 위한 PPO 알고리즘 기반 학습을 시작합니다.
...
1. 기본 태스크(Default Tasks)
-
humanoid_ppo
- 목적 (Purpose): Baseline, PPO 정책, 다중 프레임 저수준 제어(Multi-frame low-level control)
- 관측 공간 (Observation Space): 가변 $(47 imes H)$ 차원, 여기서 $H$는 프레임 수입니다.
- $[O_{t-H} ... O_t]$
- 특권 정보 (Privileged Information): 73차원
-
humanoid_dwl (출시 예정)
2. PPO 정책 (PPO Policy)
- 학습 명령어 (Training Command): PPO 정책을 학습하려면 다음 명령어를 실행하세요:
python humanoid/scripts/train.py --task=humanoid_ppo --load_run log_file_path --name run_name
- **학습된 정책 구동 (Running a Trained Policy)**: 학습된 PPO 정책을 배포하려면 다음 명령어를 사용하세요:
python humanoid/scripts/play.py --task=humanoid_ppo --load_run log_file_path --name run_name
- 기본적으로 실험 폴더의 마지막 실행에서 가장 최신 모델이 로드됩니다. 하지만, 학습 설정(training config)에서 `load_run`과 `checkpoint`를 조정하여 다른 실행 반복/모델을 선택할 수 있습니다.
#### 3. Sim-to-sim (시뮬레이션 간 전이)
- **참고:** sim-to-sim 프로세스를 시작하기 전에, 반드시 `play.py`를 실행하여 JIT 정책(JIT policy)을 내보내야 합니다.
- **Mujoco 기반 Sim2Sim 배포**: 아래 명령어를 사용하여 Mujoco로 시뮬레이션 간 전이(simulation-to-simulation, sim2sim) 배포를 수행하세요:
python scripts/sim2sim.py --load_model /path/to/export/model.pt
#### 4. 매개변수 (Parameters)
- **CPU 및 GPU 사용**: CPU에서 시뮬레이션을 실행하려면 `--sim_device=cpu`와 `--rl_device=cpu`를 모두 설정하세요. GPU 작업을 위해서는 각각 `--sim_device=cuda:{0,1,2...}`와 `--rl_device={0,1,2...}`를 지정하세요. `CUDA_VISIBLE_DEVICES`는 적용되지 않으며, `--sim_device`와 `--rl_device` 설정을 일치시키는 것이 필수적입니다.
- **헤드리스 작동 (Headless Operation)**: 렌더링이 필요 없는 작업에는 `--headless`를 포함시키세요.
- **렌더링 제어 (Rendering Control)**: 학습 중 렌더링을 토글하려면 'v' 키를 누르세요.
- **정책 위치 (Policy Location)**: 학습된 정책은 `humanoid/logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt`에 저장됩니다.
#### 5. 커맨드 라인 인자(Command-Line Arguments)
강화학습(RL) 훈련의 경우, `humanoid/utils/helpers.py#L161`을 참조하십시오.
시뮬레이션 간 전이(sim-to-sim process)의 경우, `humanoid/scripts/sim2sim.py#L169`를 참조하십시오.
## 코드 구조(Code Structure)
1. 모든 환경은 `env` 파일(`legged_robot.py`)과 `configuration` 파일(`legged_robot_config.py`)에 의존합니다. 후자는 두 개의 클래스를 포함합니다: `LeggedRobotCfg`(모든 환경 매개변수를 포괄)와 `LeggedRobotCfgPPO`(모든 훈련 매개변수를 나타냄).
2. `env`와 `config` 클래스 모두 상속(inheritance)을 사용합니다.
3. `cfg`에 지정된 0이 아닌 보상 스케일은 해당 이름에 대한 함수를 총합 보상에 기여하게 합니다.
4. 태스크는 반드시 `task_registry.register(name, EnvClass, EnvConfig, TrainConfig)`로 등록되어야 합니다. 등록은 `envs/__init__.py` 내부 또는 이 저장소 외부에서 발생할 수 있습니다.
## 새로운 환경 추가하기 (Add a new environment)
기본 환경인 `legged_robot`은 거친 지형에서의 이동(locomotion) 태스크를 구성합니다. 이에 대응하는 설정 파일은 로봇 에셋(URDF/MJCF)이나 보상 스케일을 지정하지 않습니다.
1. 새로운 환경을 추가하려면 `envs/` 디렉터리에 `<your_env>_config.py`라는 이름의 새 폴더를 생성하십시오. 이 새 설정은 기존 환경 설정을 상속받아야 합니다.
2. 새로운 로봇을 제안하는 경우:
- 해당 에셋(assets)을 `resources/` 폴더에 삽입합니다.
- `cfg` 파일에서 에셋 경로를 설정하고, 바디 이름(body names), 기본 관절 위치(default_joint_positions), 그리고 PD 게인(PD gains)을 정의합니다. 원하는 `train_cfg`와 환경의 이름(python class)을 명시합니다.
- `train_cfg`에서 `experiment_name`과 `run_name`을 설정합니다.
3. 필요한 경우, `<your_env>.py`에 환경을 생성하십시오. 기존 환경을 상속받고, 원하는 함수를 재정의하거나/또는 보상 함수(reward functions)를 추가합니다.
4. 환경을 `humanoid/envs/__init__.py`에 등록합니다.
5. 필요에 따라 `cfg` 또는 `cfg_train`에서 다른 매개변수를 수정하거나 조정합니다. 보상을 제거하려면 그 스케일(scale)을 0으로 설정하십시오. 다른 환경의 매개변수는 수정하지 않도록 주의하십시오!
6. 새로운 로봇/환경이 sim2sim을 수행하도록 하려면, `humanoid/scripts/sim2sim.py`를 수정해야 할 수 있습니다:
- MJCF와 URDF 간의 로봇 관절 매핑(joint mapping)을 확인합니다.
- 훈련된 정책에 따라 로봇의 초기 관절 위치를 변경합니다.
## 문제 해결 (Troubleshooting)
다음 사례들을 관찰하십시오:
```bash
# error
ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
...
인용 (Citation)
이 코드를 사용하거나 일부를 사용할 경우 다음을 인용하십시오:
@article{gu2024humanoid,
title={Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer},
author={Gu, Xinyang and Wang, Yen-Jen and Chen, Jianyu},
...
감사의 글 (Acknowledgment)
Humanoid-Gym의 구현은 Robotic Systems Lab에서 만든 legged_gym 및 rsl_rl 프로젝트의 리소스를 활용합니다. 저희는 코드를 개선하기 위해 그들의 연구에서 나온 LeggedRobot 구현을 특별히 사용했습니다.
질문이 있으신가요?
추가 질문이 있으시면 [email protected]으로 연락하거나 이 저장소에 이슈를 생성해 주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기