TacForcing:机器人边执行边读触觉,但最新触觉只喂下一段动作

动作做到一半手感变了,谁来告诉机器人?

机器人捏着滴管往试管里挤液体,动作正执行到一半,手上的感觉变了:胶头已经压到该松的程度,液体已经漫到瓶口边缘。谁来告诉机器人?TacForcing 的答案只有一句:执行中途新读到的触觉,只影响接下来那一小段动作的生成,更远的动作块一概不碰,论文标题里藏着的就是这个分寸。TacForcing 的名字借 teacher forcing 的构词与思路:用外部信号顶替模型自身输出。teacher forcing 是 NLP 训练序列模型时的经典技巧,用标准答案顶替模型自己的上一步输出,防止错误一路滚下去;TacForcing 把"标准答案"换成了机械手指尖传感器实时读到的触觉 token,手感一变,这份新手感立刻参与下一段动作的生成。整篇论文的承诺,从头到尾就这一条。TacForcing

先看需求,为什么答案必须长成"只影响下一块"。握滴管的这场操作,成败全在指尖:胶头压到什么程度、有没有挤偏、该不该松一点。此刻机器人眼前的画面几乎纹丝不动,可它手上的感觉每一毫秒都在变。视觉记的是场景,接触的状态只有指尖知道。触觉的保质期因此极短,这一帧手感只对正在发生的动作有描述力,等更远的动作块轮到自己上场,这份手感早已过期。所以正确的问题从一开始就不是"要不要在执行期读触觉",而是"这份新手感该喂给哪一块",唯一还新鲜的接收者,偏偏只有下一个将要执行的块。

旧系统为什么给不出这个答案?主流视觉语言动作模型(VLA)是一条循环:每遇到一帧新观测,VLM 把图像和语言指令编码成任务上下文,动作专家一次吐出未来 H 步的整段动作,执行完再重新规划。循环本身是闭环的,漏洞在块内部:这段动作一旦吐出去,执行期间读到的任何新信息都改不了它,块内是开环。视觉还好,画面变化慢,下个循环重规划一次就补上;触觉不行,接触状态的改变以毫秒计,等整块执行完再反应,早就晚了。旧系统连"执行中途读触觉"这一步都没有,自然谈不上只喂给哪一块。要落实这个答案,得先让生成与执行在时间上重叠,再把重叠期间读到的新鲜触觉定向送给下一块。

TacForcing 把这两件事拆成两个部件。Streaming Action Expert 把整段动作拆成小块,生成与执行重叠进行,让"执行中途"第一次成为触觉可以进来的时间窗口;EATA 掩码决定最新触觉正对着哪一块放行,把"只影响下一块"从一句口号落实成一行掩码。这套主张落到框架图上,长这样。

TacForcing 全链路拓扑

图注:TacForcing 整体框架。视觉观察与语言指令由 VLM 只编码一次,任务上下文在整段流式生成期间复用;Streaming Action Expert 按各块自己的 block flow time 逐块精修动作,块按序就绪并依次执行;每执行完一块,触觉反馈经 f_tac 编码,由 EATA 掩码限定只条件化下一个即将执行的块。TacForcing

图里三个角色此前都不存在于主流 VLA 里,而它们合起来回答的正是同一个问题:Streaming Action Expert 提供"执行中途"这个时间窗口,EATA 保证窗口里新读到的触觉只条件化下一个即将执行的块,两者拼起来,让机器人在动作块执行中途读手感、改动作,且只改下一块。注意框架图的一个细节:VLM 只编码一次任务上下文,之后整个流式生成期间反复复用,不需要每执行一块就重新跑一遍大模型,这是它能实时运转的前提。

最后是结果这份证据。仿真基准 UniVTAC 六任务平均成功率 65%,真实机器人三任务平均 69%,都把最强的触觉基线再甩开一截。这些数字要读成对上面那条承诺的验证,得先回答一个更基本的问题:为什么非要执行期触觉不可,视觉不是一直盯着任务吗?下一章的对比数字,给出最直接的答案。

视觉几乎没变,触觉却已飘远:开环动作块为什么摸不到东西

先对齐两个概念。动作块(action chunking)指策略一次输出的一串连续动作,比如一次推理吐出未来 50 步的关节指令。开环指"先算完、再执行",执行中途不看任何新传感器读数;闭环则相反,边执行边按传感器反馈修正。

主流 chunk-based VLA,也就是一次性生成整段动作块的视觉语言动作模型,都是开环执行动作块的,触觉信号只在动手前进入一次。这个假设在视觉主导的任务里一直勉强成立:抓取、放置这类任务,画面里的变化慢,物体位置基本静止,动手前看一眼往往够用。可一旦进入接触密集的任务,比如挤压、插入、倾倒,假设就松动了。接触一旦发生,手指上的形变图以毫秒为单位变化,而动作块通常要执行几十步,两个时间尺度差出好几个量级,动手前的那一帧触觉很快就成了历史。

论文用一个挤滴管的实验把这个松动拆穿。它记录了一条 40 步的动作轨迹,每 5 步采样一次视觉与触觉表征,计算它们与动作开始时初始表征的 cosine 距离。

视觉与触觉的动态漂移

图注:dropper squeezing 期间视觉与触觉的动态。(a) 动作范围起始与结束时刻的视觉观测;(b) 拇指与食指的形变图,每 5 个动作采样一次;(c) 视觉与触觉表征相对初始表征的 cosine 距离曲线,小图为放大的视觉尺度;视觉曲线几乎贴地,触觉在第 35 步附近升到约 0.55。TacForcing

反常的地方正在这条曲线里。第 35 步,也就是动作开始约 1.17 秒后,视觉表征只漂移了约 0.005,触觉表征却漂了约 0.55。同一双手、同一个动作,两个模态对"世界变没变"的回答差了约 100 倍。原因也好理解:视觉记录的是场景,滴管位置没动,画面自然纹丝不动;触觉记录的是接触,胶头在指尖的形变每压一下都在变,这是只有"感觉到了"才知道的信息。这是一条传感器平均后的单 episode 证据,不构成对所有接触任务的统计结论,但它的含义足够明确:视觉稳定绝不等于触觉稳定。把整段动作块条件化在一帧动手前读到的旧触觉上,等你执行到后段,这帧触觉早就过期了。

触觉读得太晚,此前的主流应对大致有两条路,各付代价。

第一条是隐式折中。动作块概念的奠基论文 ACT 用 temporal ensembling,把同一时间步在多次推理里被预测的不同动作做指数加权平均,换来输出平滑。这个思路把"多次规划"变成了某种逼近闭环的手段,但它本质是消抖,不是真读传感器,弹性接触带来的实时反馈依旧进不来。ACT。Diffusion Policy 用的是另一招:receding horizon,把执行窗口不停往后滑、频繁重规划,让策略对意外观测有一定响应能力。可窗口内部仍是开环,重规划的周期再短,也不等于块执行中途能读到触觉。Diffusion Policy

第二条是干脆加一个专门处理触觉的第二个网络,这条路线近年更流行。Reactive Diffusion Policy(RDP)就是这么做的:一个 1 到 2 Hz 的慢策略负责出高级动作块,另一个 24 FPS 的快策略用高频触觉信号逐帧微调这个块。它在接触密集任务上效果好,代价是要训练、部署两个网络,还要处理两个网络之间的频率衔接,架构复杂度和训练管线都明显变贵。RDP

两条路的共同点,是都不打算动"动作块生成"这件事本身:要么在块外面做文章,要么在块旁边加网络。所以问题很清楚:能不能不加第二个网络,也不牺牲块的生成能力,就让执行期触觉实时回流进动作生成?TacForcing 的回答是能,前提是先把一个更基本的机制问题解决掉:动作生成,能不能和动作执行在时间上重叠。

把整块去噪拆成按块推进:动作怎么做到边生成边执行

主流的 flow matching(流匹配)动作专家,比如 π0.5 里那个,给整段动作块共享同一个 flow time,也就是所有动作沿着同一条去噪路线,一起去噪、一起完成。想要第 1 步的动作,也得等最后一步一起算完。触觉信号于是只能在动手前进入一次,执行中再无回注的机会。这不是工程师偷懒,而是生成式动作模型的默认形态:一条轨迹本来就是一个整体。

TacForcing 的关键改动,是把这个整体拆开,让生成和执行重叠起来。它把长度为 H 的动作块切成 K 个小块,每块 B 步,要求 H=K·B;采样总步数 N 也切成 K 段,每段 S 步。每个块 k 拥有自己的 block flow time:

$$\lambda_k^{(n)} = \min\left(\frac{n}{n_k},, 1\right), \quad n_k = k\cdot S$$

白话翻译:采样步数 n 越走越满,第 k 块走到自己的第 n_k 步时达成 λ=1,也就是精修完成、可以派出执行。由于 n_1 < n_2 < … < n_K,块会按顺序一个个就绪,形成流式节奏。执行完一块,未完成块的中间状态被原样保留,生成从断点继续,已经执行过的位置不再重算。

图注:Block-wise flow scheduling 示意(由论文公式与正文描述整理)。三个动作块沿流式时间轴错开推进,近端块先达成自己的 block flow time 并派出执行,远端块保留中间状态继续精修。

"保留中间状态继续精修"值得展开一句。普通去噪是从整段噪声里重新生成一遍;TacForcing 的每轮推理,是从上一轮留下的中间状态继续往下走,不是从头再来。所以各块的产出连续一致,不会出现块与块之间拼接的跳变。这也是它和"分块重规划"的本质区别:它切的是生成过程本身,切块是训练时和推理时都存在的结构,而不是执行完再重新规划的补救。

这个拆块的直觉,跟厨房出菜很像。以前的策略是整桌菜全部做好再一起上,客人要等 50 步才吃到第一口;TacForcing 改成做好一盘上一盘,后厨继续做后面的菜,上过的菜不再重做,没做完的菜保留半成品继续加工,客人的反馈还能让后厨调整还没出锅的下一盘。生成与执行的重叠,就是这么来的。

具体到配置:仿真里 K=10、每块 B=5、总长 H=50;真实实验中 K=8、B=5、H=40。想象执行第 2 块的那 5 步时间里,第 3 到第 10 块都带着各自未完成的中间状态在后台继续精修,第 2 块一执行完,第 3 块恰好 ready,几乎不用等待。还有一个值得注意的结构性质:采样总步数 N=K·S 意味着第 k 块要经历 k·S 步精修,块越靠后、精修得越久。这正好对应需求:远端块有更多时间去等触觉信息陆续到位。

"异步推进"这个直觉不是 TacForcing 首创。近邻方法 Streaming Diffusion Policy(SDP)走的是另一条轴:它维护一个持久的动作 buffer,近端的动作已经去噪干净、远端的动作还带着噪声,每个观测到来只做少量去噪,就把近端第一段发出去执行,末尾再追加一段新噪声。它在真实 Push-T 任务上拿到 0.85,对比 Diffusion Policy 的 0.50,靠的正是跨观测复用同一个 buffer 的一致性。SDP

SDP 的动作 buffer 可视化

图注:SDP 的 action buffer 可视化。动作轨迹的每个位置按自己的扩散步分配噪声级别,近端浅色代表干净、可直接执行,远端深色代表仍带噪声,配合"执行第一段、末尾追加噪声段"的循环,每轮只消少量去噪步。SDP

SDP 在噪声轴上让近端干净、远端带噪;TacForcing 在时间轴上让近块先完成。两条轴不可混为一谈:SDP 优化的是推理延迟和响应速度,它关心"生成够不够快";TacForcing 优化的是触觉反馈的时机,它关心"接触信号来得及来不及"。而时机这件事,恰是整个框架里最微妙的一环:块是流式推进了,可每次执行完新读到的触觉,到底该喂给哪一块?喂给所有未完成的块吗?

最新触觉只喂给下一块:时机凭什么比新鲜更重要

最直觉的做法,是把最新读到的触觉广播给所有还没完成的块。反正信号是新的,给所有块都有用,多喂总比少喂强。论文旗帜鲜明地否定它。回看第 2 章那条曲线,触觉在一段动作范围内能漂移 0.55:远端块真正被执行是若干块之后的事,到那时这帧触觉又是一帧旧数据。把"此刻的路况"广播给十分钟后才出发的队伍,等他们上路,路况早变了。信息的新鲜度不是绝对的,是相对于接收者的执行时刻而言的。过期的手感不帮忙,反而污染未来动作的生成。

设想倒液体的场景:机器人在第 2 块结束时刚感觉到瓶口碰到了容器边缘,这份触觉对第 3 块至关重要,因为第 3 块马上要执行倾斜动作。可它如果同时流进第 7 块,等第 7 块真正执行时,瓶口早已换了接触状态,那帧触觉就成了噪音。所以关键在于:同一帧触觉,对不同块的新鲜程度完全不同,喂给谁,比新不新鲜更重要。

EATA(Execution-Aware Tactile Attention,执行感知触觉注意力)用一层加性掩码解决时机。最新触觉 token 与所有未完成块的 attention 分数上叠加一个偏置:当动作位置 i 属于即将执行的块 k 时,掩码取 0、正常放行;否则取负无穷、完全挡住。物理含义是一句大白话:最新触觉只喂给下一个要执行的块。等这块执行完、下一块轮到时,模型才接收新的一帧触觉。

图注:EATA 掩码放行示意(由论文公式与正文描述整理)。同一帧最新触觉 token 对下一个即将执行的块掩码为 0、正常 attend;对其余未完成块掩码为负无穷、禁止 attend。训练与推理使用同一个掩码。

掩码在 attention 内部是怎么运作的?读者熟悉 attention 的机制:token 之间的分数经过 softmax 变成权重。加性掩码就是在"最新触觉 token 对某个未完成块的动作位置"这个分数上直接加一个极大的负数,softmax 之后那个位置的权重趋近于零,等于这帧触觉完全没有参与该块这次迭代的生成。反过来,对下一执行块的分数加 0、不做任何改变,触觉照常流入。整个机制不需要改动网络结构,一行偏置就实现了"只喂下一块"的语义。

为什么训练和推理必须用同一个掩码?因为流式推理时的行为,必须与训练时模型见过的条件分布一致。如果训练时触觉乱喂、推理时才讲究时机,模型在推理阶段会面对从未见过的"只喂下一块"分布,时序行为就会失配,测试时掉链子。把这一条与 SDP 对比就清楚了:SDP 处理了"生成如何与执行重叠",但没有处理"重叠期间,新观测该影响哪一段动作"。时机对齐,是 TacForcing 相对所有近邻方法新增的那一块,而且它不是推理时的临时技巧,是训练时就刻进模型的条件结构。TacForcing

有了流式调度和时机掩码两件套,最后一个问题是工程问题:这套机制能装进什么样的模型?

不改基座只换动作专家:这套机制怎么装进现成 VLA

为什么偏偏是这个时间点?两件事刚好都准备好了。VLA 基座模型那边,π0.5 和 GR00T N1 都把"大 VLM 加独立动作专家"做成了可复用的架构,动作专家是可以整个拔下来换掉的独立模块;触觉那边,FTP-1 刚把形形色色的触觉传感器统一成一套跨 21 种传感器的通用 token。缺的恰好是"执行期间触觉如何流回生成"这一环,而这一环的工程形态,TacForcing 选择了"插拔件":复用现成的 VLM 基座与 FTP-1 预训练触觉编码器权重,只需替换动作专家。

答案建立在现代 VLA 的共同结构上:一个大 VLM 负责看和想,一个独立的动作专家负责生成动作。TacForcing 只换后者。仿真实验从 π0.5 起步,π0.5 是 PaliGemma 的 VLM 加一个 300M 参数的 flow matching 动作专家。π0.5 的特别之处在于它有两阶段训练:先用离散动作 token 做大规模预训练,后训练阶段再挂上这个 flow matching 动作专家做连续动作。正因为动作专家是训练后期才挂上的独立模块,拔掉它换一个新的,VLM 基座和预训练能力原封不动保留。π0.5

真实实验则从 GR00T N1.7 起步。GR00T N1 是双系统结构:System 2 是 Eagle-2 VLM,负责把图像和指令变成 token、做场景理解;System 1 是 Diffusion Transformer,用 flow matching 把理解变成电机动作。分工很清楚,理解和执行各管一段。TacForcing 替换的正是 System 1 这个动作生成头,System 2 的 VLM 保持不动。GR00T N1。触觉属于"手的感觉",归 System 1 管,所以在 System 1 里做流式改造,逻辑上正好顺路。

GR00T N1 双系统总览

图注:GR00T N1 双系统总览。图像与语言指令输入 VLM(System 2),VLM 输出与机器人状态、带噪动作一起送入 Diffusion Transformer(System 1)生成电机动作;下游是双臂人形操作场景。GR00T N1

触觉信号以什么形式进网络?答案来自 FTP-1,一个用约 3000 小时异构数据、跨 21 种传感器预训练的通用触觉策略。它面对的核心问题是触觉的异质性:形变图、阵列读数、六轴力,都在编码"触感",格式却完全不同,过去每个策略都得绑定一种传感器。FTP-1 的解法是把它们都译成同一种语言:三类信号分别交给 ViT、CNN、MLP 编码,汇成统一的触觉 token,这个接口叫 MTTS(Morphology-Aware Tactile Token Space,形态感知触觉 token 空间),再叠加功能区嵌入,交给一个共享触觉专家处理。这样设计的好处是,传感器特有的部分留在前端编码器,可迁移的触觉知识集中在共享专家里。TacForcing 的 f_tac 直接取这套预训练权重,触觉侧完全不用从零学。FTP-1

训练目标也顺着流式逻辑改了。flow matching 的训练通常是对整段轨迹预测 velocity,TacForcing 把损失改成了只统计还没完成的动作位置,也就是 λ<1 的位置:已执行完的位置不再参与计算,与推理时"已完成块不重算"的行为一致。配置上块长 B=5 固定,仿真每任务 100 次 rollout,真实每任务 16 次 trial。

整个改动收敛成一句话:基座是现成的,触觉表征是现成的,论文动的地方只有三处:流式调度、时机掩码、损失函数。这也是它作为工程形态最重要的地方:不需要从头重训 VLM、不需要自建触觉编码器。论文已经在 π0.5 与 GR00T N1.7 上展示了这种换装;其他具有相似接口的 VLA 是否兼容,仍需逐个验证。上一代方法忙着加第二个网络的时候,它选择把第一个网络改造成能自己读触觉。

数字说话:在这三项真实任务里,执行期触觉配置表现更好,代价又是什么

先看仿真。UniVTAC 是这类工作共享的仿真接触操作评测平台,FTP-1、UniVTAC-ACT 这些触觉相关方法也都在上面报数。六个接触密集任务的成功率,几种代表性方法对比如下,数字由论文 Table 1 数据整理:

方法六任务平均成功率
UniVTAC-ACT37%
RDP(另加独立快控制器)42%
π0.5(纯视觉 VLA)51%
FTP-1(统一触觉 token 条件化)59%
TacForcing65%

六个任务里 TacForcing 五个达到并列第一或最优,唯一落后是 Lift Can 63% 对 FTP-1 的 66%。这个表说明两件事:纯视觉的 π0.5 确实摸到了天花板,触觉信息本身价值明显;而在带触觉的方法里,TacForcing 比"另加控制器"的 RDP 高出 23 个百分点,比"触觉只做静态条件化"的 FTP-1 高出 6 个百分点。同样是读触觉,怎么读、什么时候读,差别就在这里。仿真拉开了差距,真实世界才是真正的考场。

真实世界三任务实验结果

图注:真实世界任务与评估结果。(a) 上排为 Stand Bottle、Transfer Liquid、Wipe Board 三个任务的代表性画面;(b) 下排为 TacForcing 与 π0.5、GR00T N1.7、FTP-1 在三个任务及平均上的成功率柱状图,Transfer Liquid 一项 TacForcing 与各基线的落差最醒目。TacForcing

真实三任务平均成功率 TacForcing 69%,比 FTP-1 的 52%、GR00T N1.7 的 42% 和 π0.5 的 27% 分别高出 17、27、42 个百分点。单点差距最醒目的是 Transfer Liquid:这个任务要求精确转移液体,容器要贴近、角度要合适、倾斜的力度要在接触中不断试探,视觉只给得出大概位置,动手前的一帧固定触觉只能说明瓶口曾经是什么手感,执行中实时读到的新鲜触觉则能描述接触当下正在发生什么。这个任务上 TacForcing 达到 50%,所有基线都不超过 19%。要正确读这句话,得记得边界:在这组三项真实任务和所列基线中,执行期触觉配置表现更好,它说明这种配置有价值,却不能证明"只有执行期触觉才能做好这类任务"这样的排他性结论。这些数字来自每任务 16 次 trial,论文未报告标准差,属于强信号而非铁证。真实侧对比的四个方法里没有 RDP,RDP 的对比只出现在仿真表里。

消融实验把两个设计的贡献拆开,数字由论文 Table 2 数据整理:

配置仿真平均真实平均
Base(无触觉)43%42%
Fixed Tactile(整块共用一帧初始触觉)42%31%
TacForcing w/o EATA(流式 + 触觉更新,无掩码)51%48%
TacForcing Full(+EATA)60%69%

两组对比各有各的看点。Fixed Tactile 在真实任务上比不用触觉的 Base 低了 11 个百分点,加进触觉反而与更低的成功率相关。但解读要克制:在该消融配置中,固定初始触觉与更低成功率相关;该表本身不能判定造成失误的内部机制,不能就此断言"过期触觉误导了策略"这条因果链。再看从 w/o EATA 到 Full 这一步:仿真提升 9 个百分点、真实提升 21 个百分点。这一步的差别只有掩码,说明时机对齐是独立成立、可以单独拆出来验证的设计贡献。受每任务 16 次 trial、未报方差的限制,这个结论同样属于强信号而非铁证。

把这几个数字合起来看,可以判断这个提升的性质。仿真上相对纯视觉 π0.5 提升 14 个百分点,相对最强触觉基线 FTP-1 提升 6 个百分点;真实平均把次优方法甩开 17 个百分点,Transfer Liquid 上把全部基线压在 19% 以下。这不是刷榜级别的小数点游戏,但也不宜说成跨档次的确定性结论:两个设计各自显示出独立的贡献方向,流式触觉更新带来基准提升,EATA 的时机对齐在它之上再叠一层提升。每一项的置信度,都受每任务 16 次 trial、未报方差的限制,属于强信号而非铁证。

代价是什么?作者自述的局限有几点:闭环频率受块粒度约束,块切得越小、流式反馈越快,反馈的时机越密,但切块本身要付出生成与执行的调度开销,块频率和推理频率之间存在权衡;框架不做触觉预测,它只能响应已经发生的接触,不能预判还没发生的接触。从平台设置看,真实评估只覆盖了 Sharpa Wave 指尖触觉这一种传感器类型(本文观察,非作者声明)。加上真实实验样本量小、未报方差,论文又是 arXiv v1 版本,这些数字应当带着限定去读。RDP 那条"加第二个网络"的路线依然有它的位置,它拿高频细腻度换架构复杂度;TacForcing 的立场是,如果你不想养第二个网络,时机对齐可以替代它。

选型判断很清楚:接触密集、需要执行中精细调节的任务,比如倒液体、拧瓶盖、精密装配,执行期触觉这条路值得走;抓取、放置这类接触关系简单、画面主导的任务,视觉加固定触觉往往已经够用,流式这套复杂度未必划算。

回到开头那个挤滴管的机器人。这篇论文真正的贡献,不是把成功率从某一档刷到更高一档,而是给出一种思考方式:让触觉在正确的时刻,流向正确的动作块。生成与执行重叠,最新手感只归下一块。视觉或许稳定,但手会变;而手感的变化,应该在你还能反应的时候,就进入动作。

想深入可以读原文:TacForcing: Streaming Action Generation with Execution-Time Tactile Feedback — arXiv:2608.25798

参考文献

  1. TacForcing(锚定论文):https://arxiv.org/abs/2608.25798
  2. ACT(Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware):https://arxiv.org/abs/2304.13705
  3. RDP(Reactive Diffusion Policy):https://arxiv.org/abs/2503.02881
  4. π0.5(a Vision-Language-Action Model with Open-World Generalization):https://arxiv.org/abs/2504.16054
  5. GR00T N1(An Open Foundation Model for Generalist Humanoid Robots):https://arxiv.org/abs/2503.14734
  6. FTP-1(A Generalist Foundation Tactile Policy):https://ftp1-policy.github.io/(arXiv:2606.13102)
  7. Diffusion Policy(Visuomotor Policy Learning via Action Diffusion):https://arxiv.org/abs/2303.04137
  8. Streaming Diffusion Policy(SDP):https://arxiv.org/abs/2406.04806
TacForcing:机器人边执行边读触觉,但最新触觉只喂下一段动作