OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%相关的知识,希望对你有一定的参考价值。

技术分享10000da.cn
技术分享vboyule.cn
技术分享jiaeidaypt.cn 

技术分享

 

在过去一年的研究中,OpenAI团队开源一个使用 MuJoCoengine开发的用于机器人模拟的高性能Python库。雷锋网了解到, 该Python库是OpenAI团队深入学习机器人研究的核心工具之一,现在该团队发布的是作为MuJoCo的主要版本的mujoco-py(Python 3 的 MuJoCo 绑定)。 Mujoco-py 1.50.1.0带来了许多新的功能和显着的性能提升。雷锋网获悉,新功能包括以下几点:

  • 高效处理并行模拟

  • GPU 加速的自动 3D 渲染

  • 直接访问 MuJoCo 函数和数据结构

  • 支持所有的 MuJoCo 1.50 功能,比如改进的接触求解器

批量模拟

轨迹(trajectory)优化和强化学习中的许多方法(如LQR,PI2和TRPO)可以从并行运行多个模拟中受益。 mujoco-py通过OpenMP使用数据并行,并通过Cython和NumPy直接访问内存管理,从而使批量模拟更有效率。

新版本的MjSimPool接口的初步使用显示,速度超过旧版本的 400%,并且在一个已优化和受限的使用模式中(通过 Python 的多处理工具包获取相同水平的并行计算)仍然大约为旧版本的180%。提速的大部分原因在于MuJoCo各种数据结构的访问时间缩短。

可以以这个案例了解MjSimPool。https://github.com/openai/mujoco-py/blob/master/examples/simpool.py

 

技术分享

 

高性能纹理随机化

在OpenAI的许多项目中都使用域随机化技术。 最新版本的mujoco-py支持支持自动的(headless)GPU 渲染,与基于CPU的渲染相比,它的速度有40倍的提升,可以每秒产生数百帧的合成图像数据。 在上述(减速)动画中,OpenAI使用理随机化技术来改变一个机器人的纹理,帮助这个机器人辨识其身体(在将其从模拟器转移至现实时)。 请查看examples / disco_fetch.py以获取随机纹理生成的示例。

 

采用mujoco-py实现VR

由mujoco-py公开的API足以使虚拟现实交互而无需任何额外的C ++代码。 OpenAI使用mujoco-py将MuJoCo的C ++ VR示例移植到Python。 如果您有HTC Vive VR设置,您可以尝试使用这一示例(此支持被认为是实验性的,但是OpenAI已经在内部使用它了)。

 

API和用法

开始使用mujoco-py的最简单的方式是使用MjSim class。 它是围绕模拟模型和数据的包装(wrapper),可让您轻松地进行模拟并从相机传感器中渲染图像。 下面是一个简单的例子:

from mujoco_py import load_model_from_path, MjSim

model = load_model_from_path("xmls/tosser.xml")

sim = MjSim(model)

sim.step()

print(sim.data.qpos)

# => [ -1.074e-05 1.043e-04 -3.923e-05 0.000e+00 0.000e+00]

对于高阶用户,OpenAI 提供了大量的低水平接口以直接访问 MuJoCo C 结构体和内部函数



以上是关于OpenAI 开源机器人模拟 Python 库,并行模拟处理速度提升400%的主要内容,如果未能解决你的问题,请参考以下文章

支持Python 3.10,OpenAI强化学习工具包Gym迎来史上最大更新

“我永远都无法理解人类!” OpenAI “杀”死了那个成功模拟已故未婚妻的 GPT-3 机器人

爬虫界的福利--touchRobot,机器模拟触碰滑动库(已开源)

OpenAi[ChatGPT] 使用Python对接OpenAi APi 实现智能QQ机器人-学习详解篇

效率倍增,PyCaret:一个开源低代码的 Python 机器学习工具

OpenAI Gym 入门与提高 Gym环境构建与最简单的RL agent