ManiSkill 机器人仿真环境完整安装指南:一条命令跑起 GPU 并行仿真
【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
ManiSkill 是一个开源机器人操作仿真与训练框架,基于 SAPIEN 物理引擎,支持 GPU 并行仿真与并行渲染。本文带你从环境自查、安装、理解核心能力,到写出第一个可运行示例,并附上常见问题的排查方法。
能不能跑:环境自查
结论:Linux + NVIDIA GPU 支持最完整,Windows 与 MacOS 只支持 CPU 仿真和渲染,GPU 并行仿真目前仅 Linux 可用。
ManiSkill 的官方支持矩阵如下,安装前可先对照确认你的硬件:
| 系统 / GPU | CPU 仿真 | GPU 仿真 | 渲染 |
|---|---|---|---|
| Linux / NVIDIA GPU | ✅ | ✅ | ✅ |
| Windows / NVIDIA GPU | ✅ | ❌ | ✅ |
| Windows / AMD GPU | ✅ | ❌ | ✅ |
| WSL / 任意 | ✅ | ❌ | ❌ |
| MacOS / 任意 | ✅ | ❌ | ✅ |
两个关键前提:
- 渲染依赖 Vulkan 驱动。没有 Vulkan,状态类仿真仍可用,但相机图像等视觉数据无法生成。
- GPU 仿真依赖 NVIDIA 显卡。若只跑 CPU 仿真,可跳过 Vulkan 配置。
怎么最快跑起来:最小安装路径
结论:核心包只需一条 pip 命令装好,再用一条命令行验证即可。
# 安装 ManiSkill 主包与兼容版本的 PyTorch pip install --upgrade mani_skill torch需要更新特性时,可改用每日构建版本:
# 安装每日更新的 nightly 版本 pip install mani_skill-nightly torch安装后运行一条随机动作演示来验证环境是否可用:
# 用随机动作跑 PickCube 任务,验证安装 python -m mani_skill.examples.demo_random_action -e PickCube-v1能看到任务在随机策略下正常推进、不报错,就说明基础环境已就绪。更完整的选项(源码安装、Docker、故障排查)见安装文档。
它里面有什么:核心能力全景
结论:ManiSkill 提供 GPU 并行仿真、GPU 并行渲染、大量内置机器人和任务,并通过 Gymnasium 标准接口接入现有训练流程。
核心能力一览:
- GPU 并行仿真:单张 4090 上可达 20 万+ FPS 的状态仿真。
- GPU 并行渲染:同卡可达 3 万+ FPS 的 RGBD + 分割数据采集。
- 异构并行:每个并行环境可以放完全不同的场景与物体。
- 标准接口:基于 Gymnasium,便于接入强化学习与模仿学习。
- 内置资产:覆盖人形(Unitree H1、G1)、四足(ANYmal-C)、灵巧手(Allegro、Inspire)等机器人模型,以及桌面抓取、绘图、灵巧操作等任务。
内置任务按类别组织在源码目录下,可用gym.make加载,例如PickCube-v1、PushCube-v1、PegInsertionSide-v1等。
实际怎么用:完整实战示例
结论:用gym.make指定任务与并行数,再循环采样动作即可,所有返回数据都是批量化的 torch 张量。
import gymnasium as gym import mani_skill.envs env = gym.make( "PickCube-v1", num_envs=16, # 大于 1 自动启用 GPU 并行 obs_mode="state", # 也可 "rgbd" 获取视觉数据 control_mode="pd_ee_delta_pose", ) obs, _ = env.reset(seed=0) done = False while not done: action = env.action_space.sample() obs, reward, terminated, truncated, info = env.step(action) done = terminated or truncated env.close()逐步说明:
num_envs=16表示并行 16 个环境,数值大于 1 时自动切换到 GPU 仿真模式。obs_mode决定你拿到什么观测:state是状态,rgbd是图像加深度。env.reset接受seed以保证结果可复现;env.step返回的观测、奖励、终止标志都是批量张量。- 需要单环境、非批量的 numpy 数据时,可套一层
CPUGymWrapper。
命令行同样可以演示,例如加--render-mode="human"打开交互窗口,或--shader="rt-fast"开启光线追踪。
怎么更快更稳:进阶调优
结论:三个最关键的调优点是多卡指定、并行渲染与自定义资产目录。
- 指定 GPU 设备:多卡服务器上通过环境变量选择用哪块卡,例如
export CUDA_VISIBLE_DEVICES=1后再运行代码,即可让程序使用物理编号 1 的显卡(进程内仍显示为cuda:0,可用nvidia-smi核实)。 - 并行渲染单场景:把
parallel_in_single_scene=True传入gym.make,可在一个 GUI 里同时查看所有并行环境,并开启rt-fast获得更逼真的演示视频。
- 自定义资产存储路径:ManiSkill 会下载任务资产,默认存放在
~/.maniskill/data。可用环境变量改到自定义目录,或跳过下载提示:
# 设置资产保存目录,并跳过缺失资产的下载提示 export MS_ASSET_DIR=/your/custom/path export MS_SKIP_ASSET_DOWNLOAD_PROMPT=1出问题怎么办:避坑速查
结论:多数安装问题集中在 Vulkan 驱动与缺失的驱动配置文件,按下表对照排查。
| 错误现象 | 原因 | 解决方案 |
|---|---|---|
RuntimeError: vk::Instance::enumeratePhysicalDevices: ErrorInitializationFailed | Vulkan 驱动损坏或未正确安装 | 按官方步骤重装 Vulkan,检查驱动配置文件 |
Some required Vulkan extension is not present... | 缺少 Vulkan 扩展 | 重装 Vulkan 与 NVIDIA 驱动 |
Segmentation fault (core dumped) | Vulkan 驱动异常 | 重装 Vulkan 与驱动 |
找不到libGLX_nvidia | 安装了错误的 NVIDIA 驱动 | 改装nvidia-driver-xxx(避免带 server 的包) |
Ubuntu 下安装与验证 Vulkan:
# 安装 Vulkan 运行时 sudo apt-get install libvulkan1 # 安装并运行检测工具 sudo apt-get install vulkan-tools && vulkaninfo若vulkaninfo无输出,检查以下配置文件是否存在(缺失时可手动创建):
/usr/share/vulkan/icd.d/nvidia_icd.json/usr/share/glvnd/egl_vendor.d/10_nvidia.json/etc/vulkan/implicit_layer.d/nvidia_layers.json(部分 GPU 如 A100 必需)
如需卸载,运行pip uninstall mani-skill,并手动清理~/.maniskill目录下的缓存与数据。
下一步
建议接着阅读快速上手文档与强化学习配置指南,并在示例代码目录中按需运行演示脚本。
【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考