mujoco_py中文文档

该文章已生成可运行项目,

MuJoCo 是一个物理引擎,用于使用contacts进行详细、高效的刚体模拟。
mujoco-py 允许使用 Python 3 中的 MuJoCo。

该库已更新为与 2021 年 10 月 18 日发布的 MuJoCo 2.1 版兼容。

概要

要求

目前支持以下平台:

  • Linux with Python 3.6+. See the Dockerfile for the canonical list of system dependencies.
  • OS X with Python 3.6+.

以下平台已弃用且不受支持:

  • Windows 支持已在 2.0.2.0 中被弃用和删除。 一个已知的良好过去版本是 1.50.1.68
  • Python 2 已在 1.50.1.0 中被弃用和删除。 Python 2 用户可以留在 0.5 分支。 最新版本是 0.5.7,可以使用 pip install mujoco-py==0.5.7 安装。

安装MuJoCo

  1. Download the MuJoCo version 2.1 binaries for
    Linux orOSX.
  2. Extract the downloaded mujoco210 directory into ~/.mujoco/mujoco210.

If you want to specify a nonstandard location for the package,
use the env variable MUJOCO_PY_MUJOCO_PATH.

安装和使用mujoco-py

要将 mujoco-py 包含在您自己的包中,请将其添加到您的要求中,如下所示:

mujoco-py<2.2,>=2.1

要以交互方式使用“mujoco-py”,请执行以下步骤:

$ pip3 install -U 'mujoco-py<2.2,>=2.1'
$ python3
import mujoco_py
import os
mj_path = mujoco_py.utils.discover_mujoco()
xml_path = os.path.join(mj_path, 'model', 'humanoid.xml')
model = mujoco_py.load_model_from_path(xml_path)
sim = mujoco_py.MjSim(model)

print(sim.data.qpos)
# [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]

sim.step()
print(sim.data.qpos)
# [-2.09531783e-19  2.72130735e-05  6.14480786e-22 -3.45474715e-06
#   7.42993721e-06 -1.40711141e-04 -3.04253586e-04 -2.07559344e-04
#   8.50646247e-05 -3.45474715e-06  7.42993721e-06 -1.40711141e-04
#  -3.04253586e-04 -2.07559344e-04 -8.50646247e-05  1.11317030e-04
#  -7.03465386e-05 -2.22862221e-05 -1.11317030e-04  7.03465386e-05
#  -2.22862221e-05]

有关高级用法,请参阅 完整文档

缺少 GLFW

安装时的常见错误是:

raise ImportError("Failed to load GLFW3 shared library.")

glfw python 包无法找到 GLFW 动态库时会发生这种情况。

MuJoCo 附带了它自己的这个库的副本,可以在安装过程中使用。

将 mujoco bin 目录的路径添加到动态加载器:

LD_LIBRARY_PATH=$HOME/.mujoco/mujoco210/bin pip install mujoco-py

这在没有 GLFW 包的 Ubuntu 14.04 上特别有用。

Ubuntu安装疑难解答

因为 mujoco_py 已经编译了需要链接到提供的 MuJoCo 二进制文件的本机代码,所以它正在安装
在 linux 上可能比纯 Python 源代码包更具挑战性。

要在 Ubuntu 上安装 mujoco-py,请确保已安装以下库:

sudo apt install libosmesa6-dev libgl1-mesa-glx libglfw3

如果您安装了上述库,但仍然看到找不到 -lGL 的错误,很可能您需要直接创建符号链接:

sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so

Development

要运行提供的单元和集成测试:

make test

要测试 GPU 支持的渲染,请运行:

make test_gpu

目前这在一定程度上取决于内部 OpenAI 基础设施,但如果您为自己的设置更改“Makefile”参数,它应该会运行。




接口参考

MjSim:基本模拟

  • mujoco_py.load_model_from_path(路径)

    ​ 从路径加载模型。

  • mujoco_py.load_model_from_xml(xml_string)

    ​ 从包含 XML 标记的字符串加载并返回 PyMjModel 模型。将用于在模型中创建返回的模型的 XML 字符串.xml。

  • mujoco_py.load_model_from_mjb(路径)

    ​ 从编码的 MJB 字节加载并返回 PyMjModel 模型。MJB是一种MuJoCo自定义格式,包括网格/纹理等资源。

  • mujoco_py.MjSim(modeldata=Nonensubsteps=1udd_callback=None)

    MjSim 表示一个正在运行的模拟,包括其状态。

    与 Gym的 MujocoEnv 类似,它在内部包装了一个PyMjModel 和一个 PyMjData

    参数型号PyMjModel

    ​ 要模拟的模型。

    数据PyMjData

    ​ 模拟状态的可选容器。如果出现以下情况,将创建

    ​ .None

    nsubsteps : int

    ​ 每次调用 step() 时要运行的 MuJoCo 步骤的可选数量。缓冲区每步只能交换一次。

    udd_callback : fn(MjSim) -> dict

    ​ 用户定义动态的可选回调。 在每次调用 step() 时,它都会在 sim.udd_state 中接收一个包含当 前用户定义的动态状态的 MjSim 对象 sim,并在应用用户定义的动态后返回下一个 udd_state。 这很有用,例如 对于在历史状态函数上运行的奖励函数。

    属性

    方法

    get_state()

    ​ 返回模拟器状态的副本。

    render()

    ​ 从摄像机渲染视图,并将图像作为 numpy.ndarray 返回。

    ​ Args: - width (int): 所需的图像宽度。- 高度(整型):所需的图像高度。- camera_name(str):模型中相机的名称。如果无,则免费将使用相机。

    ​ 深度(布尔):如果为 True,则返回深度缓冲区返回:- rgb(uint8 数组):来自相机的图像缓冲区 - 深度(浮点数组):来自相机的深度缓冲区(仅返回)如果深度 = 真)

    reset()

    ​ 重置仿真数据并清除缓冲区。

    save()

    ​ 将模拟器模型和状态作为 MuJoCo XML 或 MJB 文件保存到文件中。当前状态将另存为模型文件中的关键帧。这对于使用 MuJoCo 的模拟实用程序进行调试非常有用。

    ​ 请注意,这不会保存作为 MjSimState 一部分的 UDD 状态,因为 MuJoCo 本身不支持该状态。如果要将模型与UDD状态一起保存,则应在MjModel上使用get_xml或get_mjb方法以及MjSim.get_state,并使用例如pickle保存它们。

    ​ 参数:- 文件(IO 流):要将模型写入的流。- 格式:要使用的格式(“xml”或“mjb”) - keep_inertials(bool):如果为False,则删除所有<惯性>由 MuJoco 自动派生的 geoms 属性。请注意,这也会删除用户提供的那些。

    set_state()

    ​ 从 MjSimState 设置状态。如果 MjSimState 以前是从 numpy 数组中解压的,请考虑set_state_from_flattened,因为防御性副本是内部循环中的大量开销。

    ​ Args: - value (MjSimState): 所需的状态。- call_forward:可选择调用 sim.forward()。在以下情况下默认调用:

    ​ 设置udd_callback。

    set_state_from_flattened()

    ​ 此帮助器方法从数组设置状态,而无需防御性副本。

    step()

    ​ 通过调用mj_step来推进模拟。

    ​ 如果 qposqvel 被直接修改,则如果用户udd_callback需要访问在转发动态期间设置的 MuJoCo 状态,则需要在 step() 之前调用 forward()。

  • mujoco_py.MjSimState

    ​ 表示模拟器状态的快照。

    ​ 这包括时间,qpos,qvel,act和udd_state。

    属性

    方法

  • mujoco_py.ignore_mujoco_warnings()[来源]

    ​ 用于在某个范围内关闭 mujoco 警告异常的类。适用于大型矢量化部署。

PyMjData:瞬态数据

PyMjData相关类是从 MuJoCo C 头文件自动生成的。有关此过程的详细信息,请参阅自动生成的包装器。因此,它们的结构直接遵循MuJoCo结构。

  • mujoco_py.PyMjData

    属性act act_dot active_contacts_efc_pos actuator_force actuator_length actuator_moment actuator_velocity body_jacp body_jacr body_xmat body_xpos body_xquat body_xvelp body_xvelr cacc cam_xmat cam_xpos cdof cdof_dot cfrc_ext cfrc_int cinert contact crb ctrl cvel efc_AR efc_AR_colind efc_AR_rowadr efc_AR_rownnz efc_D efc_J efc_JT efc_JT_colind efc_JT_rowadr efc_JT_rownnz efc_J_colind efc_J_rowadr efc_J_rownnz efc_R efc_aref efc_b efc_diagApprox efc_force efc_frictionloss efc_id efc_margin efc_solimp efc_solref efc_state efc_type efc_vel energy geom_jacp geom_jacr geom_xmat geom_xpos geom_xvelp geom_xvelr light_xdir light_xpos maxuse_con maxuse_efc maxuse_stack mocap_pos mocap_quat nbuffer ncon ne nefc nf nstack pstack qLD qLDiagInv qLDiagSqrtInv qM qacc qacc_unc qacc_warmstart qfrc_actuator qfrc_applied qfrc_bias qfrc_constraint qfrc_inverse qfrc_passive qfrc_unc qpos qvel sensordata set_joint_qpos set_joint_qvel set_mocap_pos set_mocap_quat site_jacp site_jacr site_xma

本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值