roboschool
开源机器人仿真工具包,Bullet Physics 驱动 12 种 Gym 兼容基准环境,已废弃但仍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
开源机器人仿真工具包,Bullet Physics 驱动 12 种 Gym 兼容基准环境,已废弃但仍
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:OpenAI 组织标志
2016年,张明(化名)正在用 MuJoCo 做双足机器人行走实验。他花了 2000 美元购买学术许可证,好不容易配置好环境,结果实验室服务器重装系统,所有依赖全部损坏,一切从头开始。这个故事在当时的强化学习社区中极为普遍——MuJoCo 的商业授权门槛挡住了大量个人研究者和小团队的脚步。
2017年,OpenAI 推出了 Roboschool,一个完全开源、免费的机器人仿真工具包,核心使命就是打破这个困局:让任何拥有普通 GPU 服务器的研究者,都能在家里训练四足、 bipedal、甚至 Atlas 这样的大型仿人机器人,而不必支付任何软件授权费用。
Roboschool 并非凭空诞生,而是 OpenAI Gym 生态系统的自然延伸。OpenAI 在 2016 年开源了 Gym,这是一个定义了「智能体-环境交互」标准接口的强化学习框架,涵盖 Atari 游戏、CartPole 倒立摆、MuJoCo 物理仿真等数百个基准任务。
Gym 的物理仿真层早期重度依赖 MuJoCo(一个付费的闭源物理引擎),Roboschool 的首要目标就是用开源的 Bullet Physics Engine 重新实现这些仿真环境。Bullet 是游戏和机器人领域最流行的开源物理引擎之一,由 Erwin Coumans 开发,彼时已被索尼、EA、Google 等公司广泛采用。
项目由 OpenAI 研究员 Oleg Klimov 主导,于 2017 年正式发布 v1.0,很快成为强化学习研究者替代 MuJoCo 的首选工具。整个项目使用 Python + C++ 混合架构:Python 端负责 Gym 环境接口、C++ 端通过 Boost.Python 绑定封装 Bullet 物理计算,保证仿真性能的同时保留 Python 的易用性。
Roboschool 提供了 12 个开箱即用的仿真环境,涵盖从简单到复杂的多个难度层次:
| 任务类型 | 环境名称 | 机器人形态 | 难度 |
|---|---|---|---|
| 倒立摆 | InvertedPendulum-v1 | 单杆摆动 | ⭐ 入门 |
| 双摆 | InvertedDoublePendulum-v1 | 双杆连摆 | ⭐⭐ |
| 机械臂 | Reacher-v1 | 2自由度机械臂 | ⭐⭐ |
| 单跳机器人 | Hopper-v1 | 单腿跳跃 | ⭐⭐⭐ |
| 双足行走 | Walker2d-v1 | 双腿跑步 | ⭐⭐⭐ |
| 猎豹型 | HalfCheetah-v1 | 猎豹结构 | ⭐⭐⭐ |
| 四足 | Ant-v1 | 四足蜘蛛型 | ⭐⭐⭐ |
| 仿人基础 | Humanoid-v1 | 双足人形 | ⭐⭐⭐⭐ |
| 仿人追踪 | HumanoidFlagrun-v1 | 人形+目标追踪 | ⭐⭐⭐⭐ |
| 仿人高难 | HumanoidFlagrunHarder-v1 | 更复杂步态 | ⭐⭐⭐⭐⭐ |
| 乒乓球 | Pong-v1 | 桌球对打 | ⭐⭐⭐⭐ |
每个环境都附带了预训练策略(ZOO policies),以 .weights 文件形式存储在 agent_zoo/ 目录中,用户无需从零训练即可观看机器人的表现。这些策略由 V-trace、PPO 等算法训练而来,是验证环境有效性的重要参考。
Roboschool 的架构分为三层:
Gym 接口层(gym_*.py):
Roboschool 完全遵循 Gym 的 Env 接口规范,所有环境均支持 reset()、step(action)、render() 三个核心方法。这意味着任何兼容 Gym 的强化学习算法(如 Stable-Baselines3、RLlib、tianshou)都可以直接控制 Roboschool 中的机器人,无需任何额外适配代码。
C++ 物理仿真层(cpp-household/ + Bullet Physics):
核心物理计算由 Bullet Physics 引擎完成,通过 Boost.Python 暴露为 C++ 扩展模块 cpp_household.so。setup.py 中的 CMake 构建系统会自动将 .so 文件及关联资源(URDF 模型、纹理、dae 动画文件)打包进 Python wheel,分发后用户可直接 import roboschool 使用,无需重新编译。
资产层(mujoco_assets/、models_robot/、models_outdoor/):
包含仿真所需的 3D 模型文件(.obj/.dae/.urdf)、纹理贴图和动画数据,按场景复杂度分层组织。random_stadium.py 提供了可随机的体育场地面纹理,模拟不同光照和环境背景。
Roboschool 的安装是它最大的痛点。项目提供了三种安装路径:
方式一:pip 一键安装(推荐指数:⭐⭐)
pip install roboschool
这是最简洁的方式,但成功率高度依赖系统依赖库完整性。官方明确要求 Ubuntu 16.04/Debian 或 macOS,Python 3.5/3.6。在较新的 Linux 发行版(如 Ubuntu 22.04)上,系统 Qt5 库路径和 pkg-config 查找规则可能不兼容,导致编译失败。
方式二:从源码编译(推荐指数:⭐⭐⭐)
git clone https://github.com/openai/roboschool
cd roboschool
bash ./install_boost.sh # 安装 Boost.Python
bash ./install_bullet.sh # 编译 Bullet Physics
pip install -e .
从源码安装可以控制编译参数,适合需要调优性能或在新系统上构建的用户。项目中提供了 osx_build_wheel.sh、docker_build_wheel.sh 等平台特定脚本。
方式三:Docker 部署(推荐指数:⭐⭐⭐⭐)
项目提供了 Dockerfile,基于 Ubuntu 16.04 镜像,内置了所有依赖:
FROM ubuntu:16.04
RUN apt-get install python3-dev python3-pip libgl1-mesa-dev qtbase5-dev ...
RUN bash install_boost.sh && install_bullet.sh && roboschool_compile_and_graft.sh
RUN pip install -e /code
使用 Docker 是最可靠的重现方式,能彻底规避系统库冲突问题。但镜像体积较大(预计 5-10GB),且不支持 GPU 加速(Bullet 仿真本身不需要 GPU,但若在此基础上做视觉强化学习则需要)。
2019年9月,OpenAI 正式宣布废弃 Roboschool,并在官方文档中明确推荐使用 PyBullet 作为替代方案。
废弃原因主要包括:
gym.envs.robotics),无需单独安装 Roboschool。对于新项目,强烈建议使用 PyBullet + Gym 的组合,而非 Roboschool。但 Roboschool 的代码和预训练策略对于学习强化学习物理仿真原理仍有很高的参考价值。
Roboschool 的历史价值远超其作为工具的实用价值。在 2017-2019 年间,它证明了开源社区有能力提供与商业付费工具(如 MuJoCo)功能对等的物理仿真平台。
从数据上看,Roboschool 在 GitHub 上获得了 2171 颗星, forks 数约 600+,被大量学术论文引用。这个规模在当时的开源强化学习项目中名列前茅,验证了「免费 + 开源」模式对科研社区的吸引力。
更重要的是,Roboschool 催生了后续一系列开源物理仿真项目(如 PyBullet 本身的持续迭代、Tianshou 等高性能 RL 库的发展),形成了以 Gym 为核心的开源强化学习生态。如今,任何人只需 pip install gymnasium[mujoco] 就能获得比当年 Roboschool 更稳定、功能更丰富的物理仿真体验——这正是 Roboschool 所开创道路的延续。
| 维度 | 评价 |
|---|---|
| 功能完整性 | ⭐⭐⭐⭐ 功能丰富,12 个基准环境覆盖主流任务 |
| 安装友好度 | ⭐⭐ 依赖复杂,源码编译门槛高 |
| 文档质量 | ⭐⭐⭐ 文档较简略,无详细 API 文档 |
| 维护状态 | ⭐ 已废弃,不再更新 |
| 推荐指数 | ⭐⭐ 仅推荐学习参考,新项目勿用 |
给研究者的建议:如果你正在从事机器人强化学习研究,直接使用 PyBullet(Gym 内置)或 Isaac Gym(NVIDIA)。Roboschool 的价值在于理解强化学习物理仿真的底层原理,以及参考其预训练策略的架构设计。