rex-gym

GitHub
1.1k 141 简单 1 次阅读 1周前Apache-2.0开发框架其他
AI 解读 由 AI 自动生成,仅供参考

rex-gym 是一套专为开源四足机器人 Rex(基于 SpotMicro 设计)打造的 OpenAI Gym 仿真环境工具包。它旨在解决强化学习算法从虚拟仿真到实体机器人部署的“鸿沟”难题,让用户能够在 PyBullet 物理引擎中训练机器人掌握行走、平衡等通用任务,并将学到的控制策略无缝迁移至真实的 3D 打印机器人上,无需繁琐的人工参数微调。

该项目非常适合机器人开发者、强化学习研究人员以及高校师生使用。无论是希望验证新算法的科研人员,还是想动手打造智能机器狗的硬件爱好者,都能通过 rex-gym 快速搭建实验场景。其技术亮点在于提供了完整的闭环工作流:不仅包含高精度的 URDF 机器人模型(支持基础版及搭载机械臂的扩展版),还内置了基于 PPO 算法的智能体实现与命令行训练工具。用户可灵活切换开环控制与逆运动学模式,轻松执行批量训练或回放预训练策略,极大地降低了四足机器人研发的技术门槛与试错成本。

使用场景

某高校机器人实验室的研究团队正致力于将强化学习算法从仿真环境迁移到自制的 3D 打印四足机器人(SpotMicro 架构)上,以实现复杂的步态控制。

没有 rex-gym 时

  • 环境搭建繁琐:研究人员需手动配置 PyBullet 物理引擎、编写 URDF 模型加载脚本并定义奖励函数,耗时数周且容易出错。
  • 虚实迁移困难:在仿真中训练好的控制策略往往因物理参数差异无法直接在真机上运行,需要大量人工微调电机参数。
  • 缺乏标准化接口:不同的实验尝试需要重复编写训练循环和数据记录代码,难以复用现有的 PPO 等主流强化学习算法。
  • 可视化调试缺失:缺少内置的渲染工具,开发者难以直观观察机器人在训练过程中的姿态变化,排查问题效率极低。

使用 rex-gym 后

  • 开箱即用环境:rex-gym 直接提供了预置的 OpenAI Gym 环境和 SpotMicro URDF 模型,团队仅需一行命令即可启动仿真训练会话。
  • 无缝虚实迁移:借助其内置的控制策略迁移机制,在仿真中学到的步态可直接部署到实体机器人,无需额外手动调参。
  • 集成化训练流程:通过简单的 CLI 命令(如 rex-gym train)即可调用 PPO 算法进行批量训练,并自动管理日志与模型保存。
  • 直观策略验证:利用 policy 命令可立即回放预训练代理的動作,或通过渲染模式实时观察单智能体训练效果,大幅加速迭代周期。

rex-gym 通过标准化的仿真环境与工具链,彻底打通了从算法训练到真机部署的最后一步,让开源四足机器人的强化学习开发变得高效且可靠。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该项目主要用于四足机器人强化学习训练,建议使用 Anaconda 创建 Python 3.7 虚拟环境。支持通过 CLI 进行批量训练或单步渲染训练。仿真基于 pyBullet,未明确提及 GPU 加速需求,可能主要依赖 CPU 运行。硬件部分涉及 3D 打印组件和特定伺服电机,若需部署到实体机器人需参考相关硬件 wiki。
python3.7
rex_gym
pyBullet
OpenAI Gym
Anaconda
rex-gym hero image

快速开始

Rex:一款开源四足机器人

本项目的目标是通过训练一款开源的3D打印四足机器人,探索强化学习和OpenAI Gym的应用。我们的愿景是让机器人在仿真环境中学习各种家庭及通用任务,并将所学的控制策略无缝迁移到真实机器人上,而无需任何额外的手动调优。

该项目主要受到波士顿动力公司卓越工作的启发。

相关仓库

rexctl - 一个命令行应用程序,用于启动并控制运行已训练控制策略的Rex机器人。

rex-models - 一个Web URDF可视化工具,包含多个Rex机器人的模型集。

Rex-gym:OpenAI Gym环境与工具

该仓库包含用于训练Rex机器人的OpenAI Gym环境集合、Rex的URDF模型、学习智能体的实现(PPO算法),以及一些用于启动训练会话和可视化已学习控制策略的脚本。此命令行应用支持批量训练、策略复现和单次渲染训练。

安装

创建一个Python 3.7虚拟环境,例如使用Anaconda

conda create -n rex python=3.7 anaconda
conda activate rex

PyPI包

安装公开的rex-gym包:

pip install rex_gym

从源码安装

克隆本仓库并在项目根目录下运行:

pip install .

CLI使用

运行rex-gym --help以显示可用命令,运行rex-gym COMMAND_NAME --help以查看特定命令的帮助信息。

使用--arg标志可设置仿真参数。完整列表请参阅环境参数

要切换开环贝塞尔控制器(逆运动学)模式,只需添加--open-loop--inverse-kinematics标志。

rex-gym COMMAND_NAME -ik
rex-gym COMMAND_NAME -ol

有关模式的更多信息,请参阅学习方法

策略播放器:运行预训练智能体

要启动一个预训练智能体(播放已学习的控制策略):

rex-gym policy --env ENV_NAME

训练:运行单次训练仿真

要启动一次单智能体渲染会话(agents=1, render=True):

rex-gym train --playground True --env ENV_NAME --log-dir LOG_DIR_PATH

训练:开始新的批量训练仿真

要开始一个新的批量训练会话:

rex-gym train --env ENV_NAME --log-dir LOG_DIR_PATH

机器人平台

Mark 1

本版本使用的机器人是Spotmicro,由Deok-yeon Kim设计制作。

我使用Creality Ender3 3D打印机,分别用PLA和TPU+材料打印了各个部件。

所使用的硬件列于本wiki中。

未来计划为机器人增加机械臂等组件,并在机架顶部安装激光雷达传感器;同时解决现有设计问题,以实现更简便可靠的校准和更稳定的伺服电机。

仿真模型

基础模型

Rex是一款12关节机器人,每条腿配备3个电机(肩部、腿部和足部)。

机器人基础模型通过URDF文件导入到pyBullet中。

伺服电机在model/motor.py类中建模。

rex bullet

机械臂

机械臂模型采用了开源的6自由度机械臂Poppy Ergo Jr,安装在机架顶部。

rex arm

要切换基础模型和机械臂模型,使用--mark标志。

学习方法

本库采用近端策略优化(PPO)算法,其混合策略定义为:

a(t, o) = a(t) + π(o)

该策略可在完全由用户指定与完全从零开始学习之间连续调整。若希望使用用户指定策略,可将π(o)的上下限均设为零。若希望策略完全从零开始学习,则可将a(t) = 0,并为反馈组件π(o)设定较大的输出范围。

通过调整开环信号和反馈组件的输出范围,可以决定系统中用户控制的程度。

Rex的Gym环境采用双重方法实现:贝塞尔控制器开环

贝塞尔控制器实现了完全由用户指定的策略。该控制器利用逆运动学模型(见model/kinematics.py)生成步态。

开环模式在某些情况下会让系统完全从零开始学习(即设置开环组件a(t) = 0),而在另一些情况下则仅提供简单的轨迹参考(如a(t) = sin(t))。

其目的是比较这两种不同方法下学习到的策略及其表现。

任务

本实验旨在覆盖以下任务:

  1. 基本控制:
    1. 静态姿态 - 在原地保持固定姿势。
    • 贝塞尔控制器
    • 开环信号
    1. 小跑
      • 前进
      • 贝塞尔控制器
      • 开环信号
      • 后退
      • 贝塞尔控制器
      • 开环信号
    2. 行走
      • 前进
      • 贝塞尔控制器
      • 开环信号
      • 后退
      • 贝塞尔控制器
      • 开环信号
    3. 原地转向
    • 贝塞尔控制器
    • 开环信号
    1. 从地面站起
    • 贝塞尔控制器
    • 开环信号
  2. 在不平坦地形上导航:
    • 随机高度场、山丘、山脉
    • 迷宫
    • 楼梯
  3. 开门
  4. 抓取物体
  5. 跌倒恢复
  6. 到达地图上的特定点
  7. 绘制开放空间地图

地形

要设置特定地形,使用--terrain标志。默认地形为标准平面。此功能有助于测试策略的鲁棒性。

随机高度场

使用--terrain random标志生成随机高度场图案。该图案会在每次“重置”时更新。

hf

山丘

使用--terrain hills标志生成不平坦地形。

hills

山脉

使用--terrain mounts标志生成此类场景。

mounts

迷宫

使用--terrain maze标志生成此类场景。

maze

环境

基本控制:静态姿态

目标:使Rex机器人基础部分在原地保持静态姿态。

逆运动学

该 Gym 环境用于学习如何优雅地摆出姿势,同时避免动作过于迅速。它使用一维的动作空间,并包含一个反馈组件 π(o),其取值范围为 [-0.1, 0.1]。反馈信号会应用到 Sigmoid 函数上,以协调机器人的运动。当使用 --playground 标志时,可以通过 pyBullet 的用户界面手动设置特定的机器人姿态,调整机器人基座的位置(x、y、z)和方向(roll、pitch、yaw)。

基本控制:疾驰

目标:直线疾驰并在指定位置停止。

为了使学习过程更加稳健,在每次重置步骤中,Rex 的目标位置都会随机选择。

贝塞尔控制器

该 Gym 环境用于学习如何优雅地启动步态,并在到达目标位置(x 轴方向)后平稳停止。它采用二维动作空间,包含一个反馈组件 π(o),其取值范围为 [-0.3, 0.3]。反馈组件会作用于两个斜坡函数,用于协调步态。正确的起始动作有助于消除由步态在最终学习策略中产生的漂移效应。

开环信号

该 Gym 环境用于让系统从零开始学习步态。动作空间有 4 个维度,其中两个分别控制前腿和脚部,另外两个控制后腿和脚部,反馈组件的输出范围为 [-0.3, 0.3]。

基本控制:行走

目标:直线行走并在指定位置停止。

为了使学习过程更加稳健,在每次重置步骤中,Rex 的目标位置都会随机选择。

贝塞尔控制器

该 Gym 环境用于学习如何优雅地启动步态,并在到达目标位置(x 轴方向)后平稳停止。它采用二维动作空间,包含一个反馈组件 π(o),其取值范围为 [-0.4, 0.4]。反馈组件会作用于两个斜坡函数,用于协调步态。正确的起始动作有助于消除由步态在最终学习策略中产生的漂移效应。

前进

后退

开环信号

该 Gym 环境使用正弦轨迹参考来交替控制 Rex 的腿部运动。

leg(t) = 0.1 cos(2π/T*t)
foot(t) = 0.2 cos(2π/T*t)

反馈组件的取值范围非常小:[-0.01, 0.01]。通过使用斜坡函数,可以实现步态的平滑启动和停止。

基本控制:原地转向

目标:在原地转向至目标方向。

为了使学习过程更加稳健,在每次重置步骤中,Rex 的初始方向和目标方向都会随机选择。

贝塞尔控制器

该 Gym 环境用于优化 GaitPlanner 使用的 step_length 和 step_rotation 参数,以实现“转向”步态。它采用二维动作空间,包含一个反馈组件 π(o),其取值范围为 [-0.05, 0.05]。

开环

该环境用于学习一种“原地转向”步态,使 Rex 能够朝向特定方向移动。它采用二维动作空间,包含一个小的反馈组件 π(o),其取值范围为 [-0.05, 0.05],用于优化步态中的肩部和脚部角度。

基本控制:站立

目标:从待机状态站立起来。 该环境引入了 rest_position,即 Rex 处于待机状态时的理想姿势。

开环

动作空间为 1 维,包含一个反馈组件 π(o),其取值范围为 [-0.1, 0.1],用于优化信号的时间序列。信号函数会施加“制动”,迫使 Rex 在完成动作之前先停在中间位置。

环境参数

环境 env 标志 arg 标志
疾驰 gallop target_position
行走 walk target_position
原地转向 turn init_orient, target_orient
站立 standup
arg 描述
init_orient 初始方向(弧度)
target_orient 目标方向(弧度)
target_position 目标位置(x 轴)
标志 描述
log-dir 日志目录将被创建的路径。(必填)
playground 是否启动单次渲染训练会话的布尔值
agents-number 设置并行智能体的数量

PPO 智能体配置

您可能需要修改 PPO 智能体的默认配置,尤其是模拟过程中启动的并行智能体数量。

使用 --agents-number 标志,例如 --agents-number 10。

此配置将并行启动 10 个智能体(线程)来训练您的模型。

默认值已在 agents/scripts/configs.py 脚本中设定:

def default():
    """PPO 的默认配置"""
    # 通用
    ...
    num_agents = 20

致谢

论文

Sim-to-Real: 四足机器人敏捷运动的学习 及相关论文。Google Brain、Google X、Google DeepMind - Minitaur Ghost Robotics。

四足机器人的逆运动学分析

高速小跑步态下四足机器人的腿部轨迹规划

机器人平台 v1

Deok-yeon Kim 是 SpotMini 的创作者。

出色的 Poppy 项目

SpotMicro CAD 文件:SpotMicroAI 社区。

灵感来源

该运动学模型受到 Miguel Ayuso 的杰出工作的启发。

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

158.1k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|6天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架