ACT:低成本硬件实现精细双手操作学习

这篇论文解决了一个很实际的问题:能不能用便宜的机器人,学会像人一样做精细活(比如开透明调料杯、给遥控器插电池)?毕竟之前做这类任务的机器人,要么是几十万的工业臂,要么需要复杂的传感器,普通实验室根本玩不起。

这篇论文的核心思路是“硬件省钱,软件来补”——用低成本遥操作设备收集人类演示数据,再用一个叫“ACT”的智能模型学这些动作。接下来我们从“问题是什么→硬件怎么搭→模型怎么设计→效果好不好”四个部分,一步步把它讲透。

一、先搞懂:机器人做“精细活”难在哪?

我们先想两个生活场景:

  1. 你用手开一个透明的小调料杯:要先把杯子推倒,用另一只手接住,再用手指从下面撬开盖子——每一步差1毫米,杯子就会掉,或者盖子撬歪;
  2. 给遥控器插电池:要按住遥控器(不然弹簧会把它顶走),再把电池轻轻推到底——力气大了电池会卡住,力气小了推不进去。

对机器人来说,这两件事难在三个点:

  • 精度要求高:毫米级误差就会失败;
  • 力的控制巧:得知道“轻捏”还是“轻推”,不能用蛮力;
  • 视觉反馈快:要实时看杯子/电池的位置,随时调整动作。

过去的解决方案是什么?用高端机器人+精密传感器:比如用能精确控力的工业臂(像Franka Panda,单臂就要十几万),再配3D深度相机校准位置。但这就像“用跑车送外卖”——能做到,但成本太高,普通人用不起。

这篇论文的目标就是:用不到2万美元的硬件(相当于1个高端工业臂的价格),让机器人学会这些精细活

二、硬件方案:ALOHA遥操作系统——低成本收集“人类老师”的数据

要让机器人学动作,首先得有“老师”示范——这篇论文里的“老师”就是人类,通过一个叫“ALOHA”的遥操作设备,手把手教机器人干活。我们先看ALOHA怎么用低成本实现“精准传功”。

1. 核心设计:“leader-follower(领导者-跟随者)”双机械臂

ALOHA用了两套便宜的机械臂:

  • 领导者臂(WidowX):小一点,人直接用手推它的关节(比如转它的“胳膊”“手腕”),相当于人把动作“输入”给机器人;
  • 跟随者臂(ViperX):大一点,实时模仿领导者臂的动作——人动领导者的“手指”,跟随者的“手指”就同步动,直接在真实世界里完成操作(比如开杯子、插电池)。

这里有个关键选择:用“关节空间映射”,而不是“任务空间映射”

  • 任务空间映射:比如人用VR手柄控制机械臂“末端位置”(比如让爪子到杯子上方5cm),这需要复杂的“逆运动学计算”——但机器人关节少(6个自由度)时,很容易出现“奇异点”(比如胳膊拧不过来),导致动作卡住;
  • 关节空间映射:直接让领导者和跟随者的“关节角度”一一对应(人转领导者的关节1到30度,跟随者的关节1也转30度)——不用算逆运动学,不会卡壳,还能精准控制关节细节(比如手指捏的力度)。

2. 低成本优化:3D打印+普通摄像头

为了进一步压低成本,ALOHA做了两个关键改进:

  • 3D打印零件:比如“透明抓手”(能看到爪子和物体的接触,方便人调整)、“省力手柄”(人推领导者臂时不用花大力气)、“橡皮筋平衡机构”(抵消领导者臂的重力,人长时间操作不累);
  • 普通USB摄像头:用4个罗技C922x摄像头(每个几百块),分别拍“顶部”“正面”“两个机械臂的手腕”——这样能全方位看到操作细节(比如杯子有没有倒、电池有没有对准槽),不用昂贵的3D深度相机。

3. ALOHA的优势:便宜、好用、能干活

整套ALOHA成本不到2万美元,却能完成很多精细任务:

  • 穿扎带(孔只有3mm宽)、给电脑插内存条(288针,差一点就插不进去);
  • juggle乒乓球(动态任务,要实时调整力度);
  • 翻书、拧瓶盖(接触多,要控制力气)。

更重要的是:普通人2小时就能组装好,所有硬件都是现成的,软件开源——这就解决了“数据收集难”的问题:任何实验室都能搭一套,收集人类演示数据。

三、核心模型:ACT算法——让机器人“学会”人类的动作

有了人类演示数据(比如10分钟开杯子的动作+摄像头画面),接下来要解决的问题是:怎么让机器人从这些数据里学到“稳定可靠”的动作

传统的“模仿学习”(比如Behavioral Cloning,行为克隆)在这里会掉链子——为什么?举个例子:如果机器人学开杯子时,第一步“推倒杯子”差了2毫米,杯子没倒到指定位置;第二步“用另一只手接”就会完全偏离训练数据(因为训练数据里杯子是倒在A位置,现在到了B位置),后面的动作全错了——这就是“累积误差”,越学越偏。

这篇论文提出的“ACT(Action Chunking with Transformers)”算法,就是专门解决这个问题的。我们拆它的三个核心设计,每一步都对应一个痛点。

1. 痛点1:累积误差→解决方案:动作分块(Action Chunking)

传统模仿学习是“走一步看一步”:每次只预测“下一步动作”(比如π(aₜ | sₜ),sₜ是当前画面+关节位置)。就像你开车只看眼前1米,稍微偏一点,开100米就完全歪了。

ACT的做法是“一次看k步,走k步”:每次预测“接下来k个时间步的动作序列”(比如π(aₜ:ₜ₊ₖ | sₜ))。比如k=100,就是一次规划100步的动作——这相当于把任务的“有效时间范围”(horizon)缩小了100倍,误差累积的速度也慢了100倍。

举个例子:开杯子需要500步(按50Hz控制,就是10秒)。传统方法要做500次单步预测,误差会累积500次;ACT用k=100,只需要做5次预测,每次预测100步,误差累积次数少了,自然不容易偏。

这里的关键是:k值要选对。论文里试了k=1(无分块)、10、100、200、400,发现k=100时效果最好——k太小,累积误差还是大;k太大(比如400,接近“开环控制”,一次规划完所有动作),机器人没法根据实时画面调整,容易因为环境变化(比如杯子被碰了一下)出错。

2. 痛点2:动作卡顿→解决方案:时间集成(Temporal Ensembling)

如果只是“一次预测k步”,会有个新问题:每k步才更新一次观察(比如k=100,每100步才看一次摄像头画面),中间的动作是“盲走”,可能会卡顿(比如突然变向)。

ACT的解决办法是“每一步都查询模型,重叠分块再平均”:

  • 第t步时,模型预测aₜ:ₜ₊ₖ;
  • 第t+1步时,模型预测aₜ₊₁:ₜ₊ₖ₊₁;
  • 对于第t+50步的动作,会有两个预测(来自t步的a₅₀,和t+1步的a₄₉);
  • 用“指数加权平均”把这些预测合并:新的预测(t+1步的)权重大,旧的(t步的)权重小——这样动作会很平滑,不会有突然的跳变。

类比一下:你导航时,每100米更新一次路线,但导航软件会把“当前位置到100米后”和“10米后到110米后”的路线综合一下,让你转弯更顺滑,不会到了路口才突然变道。

3. 痛点3:人类演示有噪声→解决方案:CVAE+Transformer建模

人类演示数据有个特点:同一个任务,每次动作都不一样。比如开杯子,你每次推杯子的力度、撬盖子的角度可能都不同——这不是“错误”,而是人类动作的“多样性”。如果模型硬要学“一模一样”的动作,反而会不灵活(比如环境变一点就失败)。

ACT用“条件变分自编码器(CVAE)+Transformer”来建模这种多样性,同时保证动作的精准性。我们先看模型结构(不用怕,我们拆成“输入→处理→输出”三步):

(1)输入:观察数据是什么?

观察数据=4个摄像头的画面(480×640 RGB)+ 跟随者臂的关节位置(14个维度,每个臂7个关节)。

(2)处理:Transformer怎么“看懂”画面,“规划”动作?

Transformer的优势是“处理序列数据”——不管是图像序列(多个摄像头的画面),还是动作序列(k步动作),它都能很好地融合信息。ACT的模型分两部分:编码器(Encoder)和解码器(Decoder),本质是个CVAE(条件变分自编码器)。

  • 编码器(训练时用,测试时扔了)
    输入“人类演示的动作序列(aₜ:ₜ₊ₖ)+ 关节位置”,输出一个“风格变量z”(比如32维向量)。这个z的作用是“捕捉人类动作的多样性”——比如同样是开杯子,z1对应“用力推杯子”,z2对应“轻轻推杯子”。
    为什么训练时才用?因为训练时要学“不同风格的动作”,测试时我们要机器人做“稳定的动作”,所以直接把z设为0(高斯分布的均值),不用编码器。
  • 解码器(核心,测试时用)
    输入“当前观察(摄像头画面+关节位置)+ z(测试时为0)”,输出“接下来k步的动作序列”。
    这里有两个关键细节:
    ① 图像怎么处理?用ResNet18提取每个摄像头画面的特征,再加上“2D位置嵌入”(告诉模型“画面左上角的像素对应真实世界的哪个位置”),避免丢失空间信息;
    ② 多信息怎么融合?用Transformer编码器把“4个摄像头的特征+关节位置特征+z”融合到一起(比如“顶部摄像头看到杯子倒了,手腕摄像头看到爪子对准了盖子”),再用Transformer解码器生成k步动作序列(比如“下一步爪子向下1mm,再下一步向左5mm”)。

(3)训练目标:怎么让模型学对动作?

训练时用两个损失函数:

  • 重建损失(L_reconst):模型预测的动作序列,要和人类演示的动作序列尽量像(用L1损失,比L2损失更能抗噪声);
  • 正则化损失(L_reg):让编码器输出的z尽量接近标准高斯分布(避免z“记太死”,保留动作多样性)。
    总损失=重建损失 + β×正则化损失(β是超参数,控制多样性和精准性的平衡)。

四、实验结果:ACT到底行不行?

讲了这么多设计,最终要看效果——论文做了两类实验:真实世界任务消融实验(验证每个设计的作用)。

1. 真实世界任务:6个精细活,成功率80-90%

论文选了6个超难的任务,比如:

  • 开透明调料杯(成功率84%);
  • 给遥控器插电池(成功率96%);
  • 穿扎带(成功率20%,虽然低,但其他方法全失败了,主要因为扎带是黑色的,摄像头难识别)。

关键是:只用10分钟的人类演示数据(50个演示视频),成功率就达到80-90%——对比其他方法(比如BC、BeT、RT-1),要么完全做不了(比如插电池成功率0%),要么成功率不到30%。

2. 消融实验:验证每个设计的必要性

消融实验就是“去掉某个设计,看效果会不会变差”,用来证明“不是随便加的功能,每个都有用”:

  • 去掉“动作分块”(k=1):成功率从90%掉到1%——证明分块确实能解决累积误差;
  • 去掉“CVAE”(不用z):用人类数据训练时,成功率从35.3%掉到2%——证明CVAE能处理人类演示的噪声;
  • 去掉“时间集成”:动作卡顿,成功率下降3.3%——证明集成能让动作更平滑。

还有一个有趣的用户研究:控制频率对遥操作的影响。把ALOHA的控制频率从50Hz降到5Hz(和一些高端模型的频率一样),人类操作穿扎带的时间从20秒变成33秒,慢了62%——说明“高频反馈”很重要,就像玩游戏用高帧率显示器,操作更跟手。

五、总结:这篇论文的价值和局限

1. 价值:让精细机器人操作“平民化”

  • 硬件层面:开源了ALOHA的所有设计(3D打印文件、软件代码),2万美元就能搭一套,解决了“没钱做不了精细操作”的问题;
  • 算法层面:ACT的“动作分块+CVAE+Transformer”思路,解决了模仿学习的“累积误差”和“人类演示噪声”问题,对其他机器人任务(比如装配、护理)有很大启发。

2. 局限:还有哪些做不到?

  • 硬件力不足:低成本电机力气小,没法拧紧瓶盖、提重物;
  • 感知难度大:对透明/黑色物体(比如透明胶带、黑色扎带)识别差,导致穿扎带成功率低;
  • 复杂任务不行:比如扣衬衫扣子、拆糖果包装——这些任务需要更精细的手指动作(ALOHA是爪子,不是人手),且感知难度极高(糖果包装的接缝难识别)。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注