灵巧手——faive_gym
Getting the Ball Rolling: Learning a Dexterous Policy for a Biomimetic Tendon-Driven Hand with Rolling Contact Joints
- 论文
- 一、研究背景与动机
- 二、Faive Hand 硬件设计
- 三、仿真与训练框架
- 四、实验结果
- 五、局限性与未来工作
- 六、总结
- 代码
- 安装
- Training the policy
- Relevant repositories
- Software structure of IsaacGymEnvs
- isaac-gym 和 IsaacGymEnvs
- 1. Isaac Gym
- 2. IsaacGymEnvs
- 关键对比
- 选择建议
- 协同使用
- 总结
for a Biomimetic Tendon-Driven Hand with Rolling Contact Joints)
project
github
paper(2024)
论文
这篇题为《Getting the Ball Rolling: Learning a Dexterous Policy for a Biomimetic Tendon-Driven Hand with Rolling Contact Joints》的论文,由苏黎世联邦理工学院(ETH Zurich)等机构的研究者合作完成,主要介绍了一种名为“Faive Hand”的仿生灵巧手机器人平台,并展示了如何通过强化学习(RL)训练控制策略,实现零样本(zero-shot)从仿真到实物的技能迁移。以下是主要内容总结:
一、研究背景与动机
- 目标:开发能够执行人类水平灵巧操作任务的通用机器人手平台。
- 现状:传统模型控制方法难以处理多指协调和复杂接触状态,而基于强化学习的方法(如OpenAI的Shadow Hand实验)虽取得突破,但训练成本高、硬件平台昂贵(如Shadow Hand售价约11万英镑),限制了研究的普及。
- 本文贡献:提出低成本、易制造的Faive Hand,结合GPU并行仿真(IsaacGym)训练控制策略,实现实物上的灵巧操作任务(如球体旋转)。
二、Faive Hand 硬件设计
-
仿生结构:采用肌腱驱动和滚动接触关节(rolling contact joints),模拟人类手指的解剖结构(如DIP、PIP、MCP关节)。
- 关节由两个弧形接触面和交叉韧带构成(类似“Jacob’s ladder”玩具),具有抗冲击、低摩擦、大运动范围等优点。
- 所有关节(除拇指CMC关节外)均采用滚动接触设计,通过3D打印制造,总重仅1.1kg,却能承受10kg负载(见图3)。
-
驱动与传感:
- 使用16个Dynamixel伺服电机控制肌腱,远端关节(DIP/PIP)通过耦合肌腱联动,近端关节(MCP)采用拮抗驱动。
- 关键挑战:滚动关节无固定旋转轴,无法直接使用编码器。通过几何模型计算肌腱长度与关节角度的映射函数 l=f(q),并采用扩展卡尔曼滤波(EKF) 从电机角度估计关节状态。
三、仿真与训练框架
-
仿真建模:在IsaacGym中构建Faive Hand模型,将滚动关节模拟为两个虚拟铰链关节的耦合运动(通过MuJoCo的肌腱约束实现)。
-
训练流程:
- 并行仿真:在单块NVIDIA A10G GPU上并行运行4096个环境,训练时间约1小时。
- 算法:使用PPO(近端策略优化)和A2C(优势演员-评论家)框架,演员与评论家网络采用不对称观测(演员仅使用本体感知数据,评论家使用特权信息)。
- 任务设定:训练策略使手部旋转球体,目标为绕y轴达到特定角速度(-3至-1 rad/s或反向)。
-
观测与动作空间:
- 演员观测:仅包含关节位置历史(隐式包含速度),无需物体位姿信息,降低sim2real难度。
- 动作:输出关节角度的增量指令,通过低层控制器转换为电机指令。
-
域随机化(DR):对物理参数(如肌腱刚度、摩擦、物体质量等)进行随机化,提升策略的鲁棒性。
四、实验结果
- 仿真训练:策略在10分钟内快速提升性能,30分钟后趋于稳定(见图5)。无DR的策略在仿真中表现更优,但有DR的策略在实物转移中更鲁棒。
- 实物验证:
- 策略选择:不同随机种子的策略性能差异显著,需筛选最佳策略。
- 改进措施:将关节观测值缩放0.5以补偿肌腱形变带来的估计误差。
- 性能评估:通过内置IMU的球体测量旋转角速度,结果显示:
- 无DR的策略在实物上仅能轻微晃动球体;
- 有DR的策略能稳定实现目标旋转速度(见图6),反向旋转任务同样成功。
五、局限性与未来工作
- 当前局限:
- 仅能实现单轴球体旋转,更复杂的任务(如立方体重定向)因关节传感精度不足、sim2real差距而失败。
- 手指缺乏外展/内收关节,限制多轴旋转能力。
- 未来方向:
- 增加关节传感器(如角度编码器)提升状态估计精度;
- 改进系统辨识以缩小仿真与实物差距;
- 扩展任务类型与硬件功能。
六、总结
本研究通过仿生硬件设计(Faive Hand)、滚动关节的仿真建模、以及高效的RL训练框架,实现了灵巧操作任务的零样本实物迁移,为低成本、高性能的仿人手机器人研究提供了可行路径。
代码
安装
Training the policy
import subprocess
# the command that will be kept the same for all runs
base_command = "python train.py task=FaiveHandP0_sphere wandb_activate=True wandb_entity=your_entity_name wandb_project=your_project_name capture_video=True force_render=False"
# create a for loop iterating through each condition you want to compare
# for example, try comparing relative control and absolute control
for rel_ctrl in [True, False]:# some name to distinguish runs in W&Bwandb_name = f"relctrl_{rel_ctrl}"command = f"{base_command} task.env.use_relative_control={rel_ctrl} wandb_name={wandb_name}" print(command)subprocess.run(command, shell=True)# get the saved policy with the latest timestamplatest_file = subprocess.check_output(["ls", "-t", "runs/FaiveHand/nn/"]).decode("utf-8").split('\n')[0]# save the final trained weights so that it can be tested latersubprocess.run(f"cp runs/FaiveHand/nn/{latest_file} {wandb_name}.pth", shell=True)
Relevant repositories
-
faive_gym_oss
RL environment for Faive Hand -
faive-integration
- Closed source SRL repo for low level control of the hand
- Low-level controller for the hand
- Dynamixel servo controller
- Joint-level controller
- etc
- Simple controller for the hand
- Teleoperation with Leap Motion
- GUI for joint angle control
- etc
- MuJoCo model
-
isaac-gym
- GPU-based physics simulation environment
- Closed-source, must register to download the library (or download here isaacgym.zip )
- Just for simulation, does NOT do reinforcement learning
- The documentation is not online, but included in the downloaded files in docs/index.html
- If there are issues, searching / asking in forum may be helpful: Latest Isaac Gym topics - NVIDIA Developer Forums
-
IsaacGymEnvs
- RL environments for Isaac Gym, depends on isaac-gym being installed
- The RL algorithm itself depends on rl_games
- If there are issues, searching / asking in Issues may be helpful: Issues · NVIDIA-Omniverse/IsaacGymEnvs · GitHub
-
rl_games
- “High performance RL library”
- IsaacGymEnvs uses this for the RL algorithm (uses PPO), is pip installed during IsaacGymEnv installation
- Quite messy to read through- at SRL we made a pared down version of it that still works for the base FaiveHandP0 example- https://github.com/srl-ethz/srl_games/
- Has fun little comments like #TODO: Refactor this ugliest code of they year
Software structure of IsaacGymEnvs

isaac-gym 和 IsaacGymEnvs
Isaac Gym 和 IsaacGymEnvs 是 NVIDIA 提供的两个相关但不同的工具,用于机器人强化学习(RL)和物理仿真。以下是它们的对比分析:
1. Isaac Gym
- 定位
- 核心功能:基于 GPU 的高性能物理仿真引擎,专为并行 RL 训练优化。
- 底层技术:基于 PhysX,支持大规模并行仿真(数千环境同步运行)。
- 主要用户:需要自定义环境或底层控制的研究者/开发者。
- 特点
- 低层级 API:
- 直接控制仿真参数(刚体、关节、传感器等)。
- 需手动实现 RL 环境逻辑(如观测、奖励、重置)。
- 高性能:
- 支持在单 GPU 上运行数万环境实例。
- 仿真速度远超传统 CPU 仿真器(如 PyBullet、MuJoCo)。
- 灵活性:
- 可自由定义机器人、物体和任务。
- 支持自定义观测空间和奖励函数。
- 低层级 API:
- 典型用例
- 开发全新的机器人任务(如自定义抓取、行走)。
- 需要极致性能的大规模并行训练。
- 研究底层物理交互(如接触力学、摩擦模型)。
2. IsaacGymEnvs
- 定位
- 核心功能:基于 Isaac Gym 的预构建 RL 环境库,开箱即用。
- 设计目标:简化 RL 训练流程,提供标准化基准任务。
- 主要用户:希望快速实验 RL 算法的研究者。
- 特点
- 高层级 API:
- 封装了常见任务(如四足行走、机械臂操作)。
- 提供标准化的观测空间、动作空间和奖励函数。
- 集成工具:
- 内置 PPO 等算法实现(通过 RSLRL 库)。
- 支持自动域随机化(ADR)和课程学习。
- 易用性:
- 无需手动实现物理仿真逻辑。
- 配置文件驱动(YAML),参数可灵活调整。
- 高层级 API:
- 典型用例
- 快速测试 RL 算法在机器人任务上的性能。
- 复现论文结果(如 DeXtreme 灵巧操作实验)。
- 教学或原型开发。
关键对比
| 维度 | Isaac Gym | IsaacGymEnvs |
|---|---|---|
| | ||
| 抽象层级 | 底层(物理引擎接口) | 高层(预构建 RL 环境) |
| 使用难度 | 高(需编码实现环境逻辑) | 低(配置 YAML 文件即可运行) |
| 灵活性 | 极高(完全自定义) | 中等(限于预定义任务) |
| 性能 | 极致优化(原生 GPU 并行) | 同 Isaac Gym,但额外有环境封装开销 |
| 适用场景 | 研究新任务/机器人 | 算法对比、基准测试 |
| 是否依赖第三方 RL 库 | 否(可搭配任何 RL 库) | 内置 RSLRL(基于 PyTorch) |
选择建议
- 选 Isaac Gym 如果:
- 需要实现非标准任务(如新型机器人或复杂奖励函数)。
- 希望完全控制仿真细节(如传感器噪声、随机化策略)。
- 追求最大性能(直接操作底层 API 减少开销)。
- 选 IsaacGymEnvs 如果:
- 想快速验证算法在标准任务(如四足行走、手部操作)上的表现。
- 不关心底层物理实现,专注 RL 算法开发。
- 需要开箱即用的 ADR 或课程学习支持。
协同使用
- 混合模式:用 IsaacGymEnvs 的环境作为起点,通过继承修改观测/奖励(如 AllegroHandDextreme任务)。
- 扩展性:在 IsaacGymEnvs 中添加自定义任务时,仍需依赖 Isaac Gym 的底层 API(如创建新刚体或关节)。
总结
- Isaac Gym 是“引擎”,提供物理仿真和并行化能力。
- IsaacGymEnvs 是“工具包”,提供现成环境和算法实现。
- 两者互补:IsaacGymEnvs 简化了 Isaac Gym 的使用,但后者仍是自定义需求的终极解决方案。
