赞
踩
今天只是一个平常的日子,不过看到了两篇文章
于是便有了本文,且为了让大家最快的理解HumanPlus,我在HumanPlus论文的基础上,做了大量重新表述、精简干练,且补充说明了大量的背景知识(比如HumanPlus论文提到的Diffusion policy、PPO、人体姿态估计Wham、人体手势估计HaMeR等等),以及为方便大家一目了然而对相关图表的解读说明
更多,请见:大模型机器人(具身智能)线下营 [实操20万的实体机器人]
6月中旬,之前斯坦福Moblie aloha的团队(Zipeng Fu、Tony Z. Zhao、Chelsea Finn)中一作Zipeng Fu和三作Chelsea Finn,以及三位新的作者Qingqing Zhao、Qi Wu、Gordon Wetzstein,共同推出了HumanPlus 机器人,其项目地址为:https://humanoid-ai.githubio、GitHub链接为:https://github.com/MarkFzp/humanplus、数据集为:public datasets
本文的主要贡献是一个名为HumanPlus的全栈人形系统,用于从人类数据中学习复杂的自主技能。该系统的核心包括:
且影子系统和模仿学习算法之间的协同作用允许全身操作的学习,以及在现实世界中直接进行运动技能,例如穿鞋站立和行走(仅需40次演示,成功率为60-100%)
最终使得该人形机器人能够从人类数据中学习动作和自主技能,具体而言
对于数据层面而言,使用离线人类数据来学习低级全身策略以实现实时影子跟踪,并通过影子跟踪使用在线人类数据使人形机器人模仿人类技能,从而实现自主的人形机器人技能(we use both offline human data for learning a low-level whole body policy for real-time shadowing, and online human data through shadowing for humanoids to imitate human skills, enabling autonomous humanoid skills)
在实践中,人形机器人从人类数据中学习仍然具有挑战性,人形机器人的复杂动态和高维状态及动作空间在感知和控制方面都带来了困难
HumanPlus团队提出了一个完整的系统,使人形机器人能够从人类数据中学习动作和自主技能
为了解决人形机器人控制的复杂性,我们借鉴了最近在腿部机器人领域使用大规模强化学习进行仿真和sim-to-real transfer的成功经验 [ 41, 51],以训练用于全身控制的low-level策略(To tackle the control complexity of humanoids, we follow the recent success in legged robotics using large-scale reinforcement learning in simulation and sim-to-real transfer [ 41, 51 ] to train a low-level policy for whole-body control)
然,基于学习的低级策略由于耗时的奖励工程 [即learning-based low-level policies are designed to be task-specific due to time-consuming reward engineering,其实就是奖励函数并没有那么好设计,详见Sim-to-real learning for humanoid box locomanipulation、Humanoid locomotion as next token prediction],被设计为特定任务,使得人形机器人硬件一次只能展示一种技能,例如行走,但这种限制限制了人形机器人平台能够执行的任务的多样性
好在,有一个40小时的基于光学标记的人体运动公共数据集AMASS [49],涵盖了广泛的技能
通过首先将人类姿势重新定向为人形机器人姿势,然后训练一个与任务无关的low-level策略(称为Humanoid Shadowing Transformer,其基于重新定向的人形机器人姿势进行条件训练)
We leverage this dataset by first retargeting human poses to humanoid poses and then training a task-agnostic low-level policy called Humanoid Shadowing Transformer condition-ing on the retargeted humanoid poses
如HumanPlus论文所说,We use a public optical marker-based human motion dataset, AMASS [AMASS: Archive of motion capture as surface shapes]to train our low-level Humanoid Shadowing Transformer,最终使得姿态条件低级策略(pose-conditioned low-level policy)可以零样本转移到现实世界
- AMASS 数据集汇集了多个人体运动数据集的数据,包含40小时的多种任务的人体运动数据,并由超过11,000个独特的运动序列组成
为了确保运动数据的质量,应用了一种基于[Perpetual humanoid control for real-time simulated avatars]中概述的方法的过滤过程,人体和手部运动使用SMPL-X [57]模型进行参数化表示:人体关节(22个,每个关节是3自由度的球面关节)、手部关节(总计30个,每个关节是3自由度的球形关节)、3维身体全局平移变换、3维身体全局旋转变换- 人体运动数据到机器人关节的重定向
人形机器人身体相当于是SMPL-X身体自由度的一个子集,仅包含19个旋转关节(Our humanoid body has a subset of the degrees of freedom of SMPL-X body, consist-ing of only 19 revolute joints)为了重新定位身体姿势,HumanPlus将对应的欧拉角从SMPL-X复制到HumanPlus的人形模型(To retarget the body poses, we copy the corresponding Euler angles from SMPL-X to our humanoid model),即髋部、膝盖、脚踝、躯干、肩膀和肘部
由于每个人形的髋关节和肩关节由3个正交的旋转关节组成,因此可以看作一个球形关节(Each of the humanoid hip and shoulder joints consists of 3 orthogonal revolute joints, so can be viewed as one spherical joints)HumanPlus的人形手有6个自由度:每个食指、中指、无名指、小指各1个自由度,但拇指有2个自由度,为了重新定位手部姿势,HumanPlus使用中间关节的旋转来映射每个手指的相应欧拉角(To retarget hand poses, we map the corresponding Eulerangle of each finger using the rotation of the middle joint)
为了计算1自由度的手腕角度,HumanPlus使用前臂和手的全局方向之间的相对旋转(To compute the 1-DoF wrist angle, we use the relative rotation between the forearm and hand global orientations)
貌似上面论文中的一堆描述不太直白哈?其实,简言之对于身体关节:直接将SMPL-X相应关节的旋转角度复制到机器人关节,机器人的髋部和肩部关节都视为3自由度球面关节
对于手部关节:机器人每根手指仅有1个自由度,取SMPL-X中对应手指中间关节的旋转角度即可
机器人手腕有1个自由度,通过前臂和手部的相对旋转计算得到
- 实时身体姿态估计和重新定位(在NVIDIA RTX4090 GPU上以25帧每秒的速度运行)
为了在现实世界中估计人类运动以进行影子跟踪,HumanPlus使用WHAM[Wham: Reconstructing world-grounded humans with accurate 3d motion],通过单个RGB摄像头实时联合估计人体姿势和全局变换WHAM,使用SMPL-X进行人体姿态参数化
如下图所示,HumanPlus使用WHAM方法进行实时人类到人形机器人的身体重新定位
- 实时手势估计和重定向(在NVIDIA RTX4090 GPU上以10 fps运行)
具体使用HaMeR [HaMeR: Reconstructing Hands in 3D with Transformers],一种基于transformer的手部使用单个RGB相机的姿态估计器,用于实时手势估计。 HaMeR使用MANO [72]手模型预测手势、相机参数和形状参数
我们使用上述方法进行实时人类到人形机器人的手部重定向
将训练好的Humanoid Shadowing Transformer部署到真实机器人上,就可以实现运动模仿功能了,具体步骤如下(基本就是拍摄-估计-重定位-给HST-运动/控制):
在训练完成且部署了控制人形机器人目标姿态的低级策略后,便可以使用单个RGB摄像头实时影像人类动作到我们定制的33自由度、180cm的人形机器人上(After deploying the low-level policy that controls the humanoid given target poses, we can shadow human motion to our customized 33-DoF 180cm humanoid in real time using a single RGB camera)
如何理解这个实时?说白了,人在前面或旁边领舞,然后架个RGB相机对着人类实时抓取各类动作,最后机器人在旁边跟着学(RGB相机实时抓取到人类动作,系统先是通过Wham/HaMeR算法对人类动作做估计,然后把估计好的人类动作重定向到机器人动作上,作为机器人的目标动作,最后机器人结合它自己的当下状态,通过HST做出模仿动作)
再之后,通过影子技术(shadowing)收集的数据,我们执行监督行为克隆来训练基于视觉的技能策略
技能策略以人形双目自我中心的RGB视觉作为输入「头部安装了两个自我中心的RGB摄像头,拥有两个6-DoF的手、两个1-DoF的手腕和一个19-DoF的身体(每条腿5个DoF,每个手臂4个DoF,至于腰1个DoF),从而总计有33个自由度」,并预测所需的人形身体和手部姿势
顺带把硬件相关的情况也详细说明下,如下图所示,该系统基于来自宇树科技的Unitree H1机器人构建
- 机器人头部安装了两个Razer Kiyo Pro的RGB 网络摄像头(640x480分辨率),可以向下倾斜50度,瞳距为160mm
- 每个手臂集成了一个 Inspire-Robots RH56DFX手,通过定制的手腕连接
- 每个手腕都有一个 Dynamixel 伺服电机和两个推力轴承。手和手腕都通过串行通信控制
- 手指可以施加高达10N 的力,而手臂可以举起高达7.5kg的物品
- 腿部的电机在操作期间可以产生高达360Nm的瞬时扭矩
那,怎么具体预测机器人所需的动作呢?可基于人类提供的示范模仿学习的最新成功案例:UMI所用的Diffusion Policy
当然也可以用Moblie Aloha用过的ACT (Action Chunking Transformer,详见:Mobile ALOHA——斯坦福炒虾机器人的关键技术:动作分块算法ACT的原理解析)
通过对图像特征进行前向动力学预测,并通过在图像特征空间上进行正则化,防止基于视觉的技能策略忽略图像特征并过拟合到本体感知,从而显示出性能的提升
从而使得最终通过多达40次演示,该人形机器人可以自主完成诸如穿鞋站立和行走、从仓库货架上卸载物品、折叠运动衫、重新排列物品、打字以及与另一台机器人打招呼等任务,成功率为60-100%
将low-level policy所需要用的Humanoid Shadowing Transformer,弄为仅解码器的transformer即可(We formulate our low-level policy, Humanoid Shadowing Transformer, as a decoder-only transformer),如下图左侧所示
在每个时间步
策略(即low-level控制策略)的输入是人形机器人的本体感知和人形机器人的目标姿态(the input to the policy is humanoid proprioception and a humanoid target pose)
策略的输出是19维的关节位置设定点,用于人形机器人身体关节,随后使用一个1000Hz的PD控制器,目标手关节角度直接传递给PD 控制器,且低级策略以50Hz运行,具有8的上下文长度,因此可以根据观察历史适应不同的环境[67]
The output of the policy is 19-dimensional joint position setpoints for humanoid body joints,which are subsequently converted to torques using a 1000Hz PD controller. The target hand joint an-
gles are directly passed to the PD controller. Our low-level policy operates at 50Hz and has a context length of 8, so it can adapt to different environment given the observation history [67]
过程中,我们使用PPO [74]在模拟中训练我们的类人影子transformer(其Transformer层数:3、其隐藏层维度:512、注意力头数:4、学习率:5e-5、PPO训练epoch数:3),通过最大化期望回报
其中是时间步长
的奖励,
是最大episode长度,
是折扣因子。 奖励
是鼓励匹配的项的总和(关于RL和PPO相关的概念,如果不熟悉,请参见此文:强化学习极简入门:通俗理解MDP、DP MC TC和Q学习、策略梯度、PPO)
总之,需要在节省能量和避免脚滑的同时,达到目标姿势
在模拟中训练人形机器人影子变换器后,便可将其零样本部署到现实世界中的人形机器人上 进行实时影子操作
通过本博客内之前的文章可知,模仿学习在给定广泛任务演示的情况下,已经在学习自主机器人技能方面取得了巨大成功,比如
而通过影子学习收集的现实世界数据,HumanPlus将相同(即模仿学习)的方法应用于人形机器人以训练技能策略, HumanPlus进行了几项修改,以便在有限的车载计算资源下实现更快的推理,并在双目感知和高自由度控制的情况下实现高效的模仿学习,当然,修改了动作分块算法
具体修改了什么呢?简言之,把ACT原本的transformer编码器-解码器架构改成了transformer仅解码器架构
详见此文的第二部分:Mobile ALOHA——斯坦福炒虾机器人的关键技术:动作分块算法ACT的原理解析
为更形象的说明,再次贴下这个模型架构图
对于上图右下角的仅解码器的人形模仿Transformer(HIT,其Transformer层数:12、隐藏层维度:1024、注意力头数:16、学习率:1e-4、训练样本:40个演示),其用于技能策略,具体而言
最终,这种方法使HIT能够有效地将目标姿态预测与前向动力学预测相结合,通过对图像特征进行前向动力学预测,通过规范图像特征空间来增强性能,防止基于视觉的技能策略忽略图像特征并过度拟合到本体感受
在部署期间,HIT以25Hz的频率在板载运行,异步地将预测的目标位置发送到低级人形阴影transformer,同时丢弃预测的未来图像特征tokens
接下来,咱们对比下HumanPlus和其他三个系统:Kinesthetic Teaching、ALOHA [104]、Meta Quest之间的差异
总的而言
如下表所示,我们对6名参与者进行了用户研究,以比较HumanPlus的影子系统与三个基线在远程操作效率方面的表现
上面对比了HumanPlus的影子跟随系统与其他相关系统在遥控机器人上的效果,接下来,咱们再来对比下HumanPlus的模仿学习算法与其他相关算法的效果
可以看到,HumanPlus的HIT算法是唯一解决穿鞋和走路任务的方法,在40次演示中成功率达到60%,而所有其他方法都失败了
总体而言, HumanPlus的表现优于其他三个基线方法
Part | Quantity | Link | Price (per unit) |
第一部分 Robots | |||
宇树科技:Unitree H1 humanoid | 1 | Unitree H1 - Unitree's first universal humanoid robot - Unitree | $89,900.00 |
因时机器人的灵巧手:Inspire-Robots RH56DFX hand | 2 | $8,519.00 | |
第二部分 Wrists | |||
2 | $289.90 | ||
U2D2 | 1 | $32.10 | |
U2D2 Power Hub Board Set | 1 | $19.00 | |
M2.5*8 HEX | 32 | $0.11 | |
M3*10 HEX | 36 | $0.08 | |
M3*20 HEX | 6 | $0.10 | |
M2*6 HEX | 8 | $0.07 | |
M3 square nuts | 30 | $0.04 | |
第三部分 Camera setup | |||
Razer Kiyo Pro Webcam | 3 (1 for real-time shadowing; 2 for onboard vision) | $92.66 | |
Camera Tripod | 1 | $29.99 | |
M4 x 35 HEX | 4 | $0.16 | |
M4 square nuts | 4 | $0.07 | |
第四部分 Common equipments | |||
USB A Hub | 2 | $9.99 | |
USB C Hub | 2 | $18.84 | |
Total | $107,945.41 |
得,光上面这些便得10万美刀了..
硬件代码库基于unitre_ros2,需要经过以下一系列安装
- <span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>conda create -n lowlevel python=3.8
- conda activate lowlevel
- </code></span></span></span></span>
- <span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default, var(--color-fg-default))"><span style="background-color:var(--bgColor-muted, var(--color-canvas-subtle))"><code>conda activate lowlevel
- cd hardware-script
- python hardware_whole_body.py --task_name stand</code></span></span></span></span>
详见:https://drive.google.com/drive/folders/1MtxHqR0SmulucMMbZhxnf_uUJ0qQ9Qe8?usp=sharing
// 待更
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。