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 儲存庫中找到。
共有 11 個 MuJoCo 環境(大致按複雜性遞增排序)
Robot (機器人) |
簡短描述 |
---|---|
CartPoles (倒單擺組) |
|
InvertedPendulum (倒立擺錘) |
CartPole (倒單擺) 環境的 MuJoCo 版本(具有連續動作) |
InvertedDoublePendulum (倒立雙擺錘) |
CartPole (倒單擺) 環境的雙桿變體 |
Arms (手臂) |
|
Reacher (抓取者) |
目標是抓取物體的 2D 手臂 |
Pusher (推動者) |
目標是將物體推到目標位置的 3D 手臂 |
2D Runners (2D 跑步者) |
|
HalfCheetah (獵豹) |
目標是跑步的 2D 四足動物 |
Hopper (跳跳者) |
目標是跳躍的 2D 單足動物 |
Walker2d (二維步行者) |
目標是步行的 2D 雙足動物 |
Swimmers (游泳者) |
|
Swimmer (游泳者) |
目標是游泳的 3D 機器人 |
Quarduped (四足動物) |
|
Ant (螞蟻) |
目標是跑步的 3D 四足動物 |
Humanoid Bipeds (人形雙足動物) |
|
Humanoid (人形) |
目標是跑步的 3D 人形 |
HumanoidStandup (人形站立) |
目標是站立的 3D 人形 |
所有這些環境在本質上都是隨機的,在其初始狀態中添加了高斯雜訊到固定的初始狀態,以增加隨機性。Gymnasium 中 MuJoCo 環境的狀態空間由兩個部分組成,這兩個部分被展平並串連在一起:身體部位和關節的位置 (mujoco.MjData.qpos
) 及其對應的速度 (mujoco.MjData.qvel
)(更多資訊請參閱 MuJoCo 物理狀態文件)。
在 Gymnasium 環境中,這組環境可以被認為是更難以透過策略解決的。
可以透過變更 xml_file
參數和/或調整其類別的參數來配置環境。
版本¶
Gymnasium 包含以下環境版本
版本 |
Simulator (模擬器) |
Notes (注意事項) |
---|---|---|
|
|
建議使用(功能最多,錯誤最少) |
|
|
為了可重現性而維護 |
|
|
已棄用,為了可重現性而保留(有限支援) |
|
|
已棄用,為了可重現性而保留(有限支援) |
如需更多資訊,請參閱每個環境的「版本歷史記錄」章節。
v1
和更舊版本不再包含在 Gymnasium 中。
跨版本比較訓練效能¶
假設使用相同/預設參數,v2
和 v3
的訓練效能是相同的。
由於變更為較新的模擬器,v2
/v3
和 v4
的訓練效能不具直接可比性,但 Ant 和 Humanoids 以外的結果是可比較的(更多資訊請參閱 GitHub 評論 #1 和 GitHub 評論 #2)。
v4
和 v5
的訓練效能有所不同,因為環境中有很多變更,但 Half Cheetah 和 Swimmer 表現出相同的行為,Pusher 和 Swimmer 則很接近(更多資訊請參閱 GitHub Issue)。
精確的可重現性¶
注意:由於浮點運算順序,MuJoCo 模擬器的確切行為在 mujoco
版本之間略有變化(更多資訊請參閱他們的 文件),如果除了使用實驗的 seed
之外還需要精確的可重現性,則應使用相同的模擬器版本。
Rendering Arguments (渲染參數)¶
除了通用的 Gymnasium 參數和環境特定的參數外,所有 MuJoCo 環境也採用以下參數來配置渲染器
env = gymnasium.make("Ant-v5", render_mode="rgb_array", width=1280, height=720)
Parameter (參數) |
Type (類型) |
Default (預設值) |
Description (描述) |
---|---|---|---|
|
str |
|
渲染結果的模態。必須是 |
|
int |
|
渲染視窗的寬度 |
|
int |
|
渲染視窗的高度 |
|
int | None |
|
用於渲染視窗的相機 ID |
|
str | None |
|
用於渲染視窗的相機名稱(與 |
|
dict[str, float | int] | None |
|
mjvCamera 屬性 |
|
int |
|
要渲染的最大幾何物件數量(適用於第三方環境) |
|
Dict[int, bool] |
|
具有 mjVisual 標誌和值組的字典,例如 |
Rendering Backend (渲染後端)¶
MuJoCo 模擬器使用 OpenGL 渲染圖像,並且可以使用 3 個不同的後端 “glfw”(預設)、“egl”、“omesa”,可以透過設定環境變數來選擇。
Backend (後端) |
Environment Variable (環境變數) |
Description (描述) |
---|---|---|
|
|
使用 GPU 上的視窗系統渲染 |
|
|
在 GPU 上無頭渲染 |
|
|
在 CPU 上無頭渲染 |
有關 MuJoCo/OpenGL 文件的更多資訊。