MuJoCo¶
MuJoCo는 Multi-Joint dynamics with Contact의 약자입니다. 로봇 공학, 생체 역학, 그래픽 및 애니메이션, 그리고 빠르고 정확한 시뮬레이션이 필요한 기타 분야의 연구 및 개발을 촉진하는 물리 엔진입니다. 로봇과 환경 사이에 물리적 접촉이 있으며, MuJoCo는 물리적 정확성과 계산 효율성을 목표로 가능한 물리적 접촉 역학에 대한 사실적인 물리 시뮬레이션을 얻으려고 시도합니다.
이 환경 세트의 MuJoCo 시뮬레이터를 포함한 고유 종속성은 다음을 통해 설치할 수 있습니다.
pip install gymnasium[mujoco]
2021년 10월 기준으로 DeepMind가 MuJoCo를 인수했으며 2022년에 오픈 소스로 공개하여 누구나 무료로 사용할 수 있게 되었습니다.
Gymnasium에서 MuJoCo를 사용하려면 프레임워크 mujoco
가 설치되어 있어야 합니다(이 종속성은 위 명령으로 설치됩니다).
MuJoCo 엔진 설치 방법은 웹사이트 및 GitHub 저장소에서 확인할 수 있습니다.
MuJoCo v3
및 이전 버전 환경의 경우 mujoco-py
프레임워크가 필요합니다(pip install gymnasium[mujoco-py]
). 이는 GitHub 저장소에서 찾을 수 있습니다.
MuJoCo 환경은 11가지가 있습니다(대략 복잡성이 증가하는 순서):
로봇 |
짧은 설명 |
---|---|
카트폴(CartPoles) |
|
InvertedPendulum |
카트폴 환경의 MuJoCo 버전 (연속 행동) |
InvertedDoublePendulum |
카트폴 환경의 2개 폴 변형 |
팔(Arms) |
|
Reacher |
물체에 도달하는 것을 목표로 하는 2D 팔 |
Pusher |
물체를 목표 위치로 미는 것을 목표로 하는 3D 팔 |
2D 러너(Runners) |
|
HalfCheetah |
달리는 것을 목표로 하는 2D 네발로 걷는 동물 |
Hopper |
홉핑하는 것을 목표로 하는 2D 외발 |
Walker2d |
걷는 것을 목표로 하는 2D 두발로 걷는 동물 |
수영 로봇(Swimmers) |
|
Swimmer |
수영하는 것을 목표로 하는 3D 로봇 |
네발로 걷는 동물(Quadruped) |
|
Ant |
달리는 것을 목표로 하는 3D 네발로 걷는 동물 |
휴머노이드 두발 로봇(Humanoid Bipeds) |
|
Humanoid |
달리는 것을 목표로 하는 3D 휴머노이드 |
HumanoidStandup |
일어서는 것을 목표로 하는 3D 휴머노이드 |
이 모든 환경은 초기 상태 면에서 확률적이며, 확률성을 추가하기 위해 고정된 초기 상태에 가우시안 노이즈가 추가됩니다.
Gymnasium의 MuJoCo 환경에 대한 상태 공간은 평탄화되어 연결된 두 부분으로 구성됩니다. 즉, 신체 부위와 관절의 위치(mujoco.MjData.qpos
)와 해당 속도(mujoco.MjData.qvel
)입니다 (MuJoCo 물리 상태 문서에서 자세한 정보 확인 가능).
Gymnasium 환경 중에서 이 환경 세트는 정책으로 해결하기 더 어려운 것으로 간주될 수 있습니다.
환경은 xml_file
인수를 변경하거나 클래스의 매개변수를 조정하여 구성할 수 있습니다.
버전¶
Gymnasium에는 다음 버전의 환경이 포함됩니다.
버전 |
시뮬레이터 |
비고 |
---|---|---|
|
|
권장 (가장 많은 기능, 가장 적은 버그) |
|
|
재현성을 위해 유지됨 |
|
|
사용 중단됨, 재현성을 위해 유지됨 (제한적 지원) |
|
|
사용 중단됨, 재현성을 위해 유지됨 (제한적 지원) |
자세한 내용은 각 환경의 “버전 기록” 섹션을 참조하십시오.
v1
및 이전 버전은 더 이상 Gymnasium에 포함되지 않습니다.
버전별 학습 성능 비교¶
동일/기본 인수가 사용되었다고 가정할 때 v2
와 v3
의 학습 성능은 동일합니다.
새로운 시뮬레이터로 변경되었기 때문에 v2
/v3
와 v4
의 학습 성능은 직접 비교할 수 없지만, Ant 및 Humanoids가 아닌 환경의 결과는 비교 가능합니다 (GitHub Comment #1 및 GitHub Comment #2에서 자세한 정보 확인 가능).
환경의 많은 변경 사항으로 인해 v4
와 v5
의 학습 성능은 다르지만, Half Cheetah 및 Swimmer는 동일한 동작을 보이며, Pusher 및 Swimmer는 비슷합니다 (GitHub 이슈에서 자세한 정보 확인 가능).
정확한 재현성¶
참고: 부동 소수점 연산 순서 때문에 mujoco
버전 간에 MuJoCo 시뮬레이터의 정확한 동작이 약간 변경됩니다 (문서에서 자세한 정보 확인 가능). 실험에 seed
를 사용하는 것 외에 정확한 재현성이 필요한 경우 동일한 시뮬레이터 버전을 사용해야 합니다.
렌더링 인수¶
일반적인 Gymnasium 인수 및 환경별 인수 외에도 모든 MuJoCo 환경은 렌더러를 구성하기 위해 다음 인수를 사용합니다.
env = gymnasium.make("Ant-v5", render_mode="rgb_array", width=1280, height=720)
매개변수 |
유형 |
기본값 |
설명 |
---|---|---|---|
|
str |
|
렌더링 결과의 양식. |
|
int |
|
렌더링 창의 너비 |
|
int |
|
렌더링 창의 높이 |
|
int | None |
|
렌더링 창에 사용되는 카메라 ID |
|
str | None |
|
렌더링 창에 사용되는 카메라의 이름 ( |
|
dict[str, float | int] | None |
|
mjvCamera 속성 |
|
int |
|
렌더링할 수 있는 최대 기하학적 객체 수 (써드 파티 환경에 유용) |
|
Dict[int, bool] |
|
mjVisual 플래그 및 값 쌍으로 구성된 딕셔너리, 예: |
렌더링 백엔드¶
MuJoCo 시뮬레이터는 OpenGL로 이미지를 렌더링하며, “glfw”(기본값), “egl”, “omesa”의 3가지 다른 백엔드를 사용할 수 있습니다. 이는 환경 변수를 설정하여 선택할 수 있습니다.
백엔드 |
환경 변수 |
설명 |
---|---|---|
|
|
GPU에서 Window System으로 렌더링 |
|
|
GPU에서 헤드리스로 렌더링 |
|
|
CPU에서 헤드리스로 렌더링 |
MuJoCo/OpenGL 문서에서 자세한 정보를 확인할 수 있습니다.