机器人不是“碰到才知道”:N0-VTLA 如何预判下一次接触 | 上篇

把插头插入插座,对人来说几乎不需要思考。
视觉先把插头大致对准;插头碰到插孔边缘时,手指会感觉到微小阻力;如果角度不对,我们会稍微抬起、调整,再试一次。整个过程真正决定成败的,往往不是“看见了插孔”,而是接触发生后那一点细微的力、滑动和形变。
这恰好是许多视觉—语言—动作模型(Vision-Language-Action model,VLA)的薄弱处。它们可以理解“把插头插 进去”这句话,也能从图像估计插头和插孔的位置,但当误差缩小到毫米级,画面里未必还有足够信息告诉模型:现在是顺利进入了,还是刚刚顶在边缘上。
N0-VTLA 想解决的就是这个缺口。
不过,它并没有把触觉当成“第三只摄像头”简单塞进模型,而是做了一个更关键的改动:机器人生成下一段动作时,条件不是当前触觉本身,而是对这段动作将造成什么触觉变化的预测。
这使“触觉”从一份已经发生的接触记录,变成了动作生成前的一种内部预演。
视觉看到了目标,却看不清接触是否正确
VLA 的优势主要来自视觉和语言。
视觉告诉机器人“物体在哪里、场景是什么样”,语言告诉它“要完成什么任务”,动作模型再生成一段连续控制指令。这套范式很适合抓取、搬运和放置等主要由空间位置决定的任务。
但接触密集型操作有另一套逻辑。插接、旋拧、折叠柔性物体、轻拿易变形物体,都存在视觉难以直接观察的状态:
插头是否碰到插孔内壁;
夹爪是否把塑料瓶捏得过紧;
毛巾是否正在滑落;
两个零件究竟已经贴合,还是只在图像投影中看起来重合。
触觉传感器可以补上这些信息,但触觉图像与普通相机图像并不相同。论文使用的是安装在夹爪手指上的视触觉传感器,它把接触造成的凝胶形变记录为图像。绝大多数未接触时刻,这些图像几乎是空的;真正有用的信息集中在接触形成、滑移或压力变化的短暂窗口里,而且不同传感器的凝胶外观和安装位置还会带来固定偏差。
这意味着:把触觉帧原样放进一个为高信息密度视觉图像设计的上下文,不一定是最合适的利用方式。
过去两种接法,为什么都不够理想
论文把已有触觉接入方式概括为两类。
第一类,是把触觉 token 与视觉 token 拼在一起,让视觉—语言主干统一处理。问题在于,视觉画面几乎每一帧都有丰富信息,而触觉在自由空间运动时常常接近空白。两种信号的信息密度和有效时刻完全不同,直接拼接会让模型用昂贵的前缀容量处理大量“此刻没有接触”的内容。
第二类,是把当前触觉直接送给动作生成模块。它更接近闭环控制,但仍然主要是“反应式”的:当前触觉描述的是前面动作已经造成的接触,而动作专家此刻要决定的是接下来几十步应该怎么动。
换句话说,当前触觉很重要,却天然晚了半拍。
如果插头刚刚撞到边缘,触觉能帮助机器人在下一轮纠正;但如果模型能进一步推断“按当前姿态继续下压,将形成错误接触”,它就有机会在动作块内部更早改变轨迹。
这就是 N0-VTLA 选择“预测触觉”而不是只“读取触觉”的原因。
N0-VTLA 的第三条路:预测下一段动作会带来什么接触
N0-VTLA 的基础仍是一套 VLA:PaliGemma 负责视觉—语言上下文,流匹配动作专家(flow-matching action expert)从噪声中生成长度为 50 步的动作块。
新增的是一条位于感知与动作之间的“潜在触觉通路”。它由三个关键动作组成:
- 把当前触觉变成相对于无接触基线的变化;
- 结合视觉、语言与当前触觉,预测未来动作块结束时的触觉变化;
- 把这份预测压缩为潜在触觉 token,直接交给动作专家。
这里最值得注意的不是“多了一种模态”,而是触觉 token 的位置。当前触觉不会进入视觉—语言前缀,也不会直接进入动作专家。动作专家只接收预测器产生的潜变量 $z$。
因此,模型被迫先回答“下一段动作可能造成什么接触”,再据此生成动作。
第一步不是看触觉,而是先减掉传感器自己的样子
每个回合开始时,夹爪会保持张开和静止至少 0.5 秒,记录一张无接触基线图像。之后的触觉帧都与这张基线做像素差分:
$$\
g\_k=f\_{\mathrm{enc}}!\left(\mathrm{tac}^{k}{\tau}-\mathrm{tac}^{k}{0}\right)\in\mathbb{R}^{10\times d}.\
$$
其中,$\mathrm{tac}^{k}{0}$ 是第 $k$ 个触觉视角在回合开始时的无接触图像,$\mathrm{tac}^{k}{\tau}$ 是当前触觉图像,$f_{\mathrm{enc}}$ 是冻结的自监督视觉编码器加一层可训练投影。
这条式子真正想表达的很简单:模型不关心凝胶本来长什么样,只关心它相对无接触状态发生了什么变化。
每幅触觉图最终被压缩成 10 个 token:1 个类别 token,加上由 $3\times3$ 空间池化得到的 9 个局部 token。这样既保留“哪里发生了接触”的粗略空间结构,又避免把整张触觉图像原封不动送进主模型。
需要注意的是,基线差分只能减弱不同安装位置和传感器外观造成的偏差,论文并没有声称它能做到严格的传感器不变性。
预测目标不是一段触觉视频,而是“净变化”
N0-VTLA 没有生成未来 50 帧触觉图像。它预测的是从当前时刻到动作块末端,接触状态发生的净变化:
$$\
z^{\*}=\frac{1}{n}\sum\_{k=1}^{n}f\_{\mathrm{enc}}!\left(\mathrm{tac}^{k}*{\tau+H}-\mathrm{tac}^{k}*{\tau}\right),\qquad H=50.\
$$
$n$ 是当前可用的触觉视角数,$H=50$ 是动作块长度。来自多个手指的未来变化会在编码后求平均,形成 10 个目标 token。预测器输出的 $z$ 被训练去匹配这个未来目标 $z^{*}$。
这是一种刻意的压缩。
它不试图还原每一帧触觉纹理,也不声称能够精确预测未来接触力。它只保留对动作决策最有用的摘要:接下来这一整段动作,会让接触总体朝什么方向变化、变化大致发生在哪里。
可以把它理解为:视觉告诉机器人“插孔在这里”,当前触觉告诉它“现在接触成了这样”,潜在触觉 token 则进一步提示“按计划继续运动,下一段接触可能会变成什么样”。
为什么潜在触觉 token 要直接放在动作旁边
预测得到的 $z$ 会先映射到动作专家的特征宽度,再放到带噪动作 token 前面。动作 token 可以注意到 $z$,也可以注意到视觉—语言前缀;但视觉—语言前缀不会反向读取 $z$,而且 $z$ 自身不会通过输出头生成动作。
这种安排把触觉的作用范围控制得很清楚:它不是用来重新解释语言,也不是用来改写整个视觉场景,而是专门影响动作块如何被去噪和生成。
更直观地说,语言负责“要插 进去”,视觉负责“大致朝哪里插”,潜在触觉负责“接触快要变成这样,所以轨迹应该怎样微调”。
这也解释了论文后面的一个反事实实验:在相同观测、相同采样噪声下,保留触觉与移除触觉的两条动作路径,在自由空间中几乎重合;到了牢固接触和抓取时刻,两条路径才明显分开。一个设计良好的触觉通路,不应该让机器人在所有时刻都“过度敏感”,而应该在接触决定成败时才改变动作。
它不是“没有触觉传感器也能凭空想象触觉”
这里有一个很容易产生的误解。
N0-VTLA 的预测器仍然读取当前触觉差分,再结合视觉和语言预测未来变化。它不是仅靠相机就替代触觉传感器,也不是部署时完全不需要触觉。
论文确实设计了一个空触觉 token:当某个训练样本根本没有触觉数据时,模型仍能退回视觉—语言控制,不至于直接失效。但“可以在缺失触觉时运行”不等于“无触觉时仍具有同等的接触控制能力”。论文的主要提升仍建立在真实视触觉传感器输入之上。
同样,$z$ 是一个任务导向的潜在表示,不是可解释的牛顿力、摩擦系数或接触方程。它能否帮助动作,是通过检索、扰动分析和闭环成功率间接验证的,而不是通过恢复真实物理量证明的。
上篇小结:真正的新意,是让触觉从“反馈”走向“预判”
如果只把 N0-VTLA 概括成“视觉、触觉、语言、动作四模态模型”,反而会错过论文最重要的判断。
它认为,触觉在机器人控制中的价值不应只体现在碰撞之后的纠错。对长度为 50 步的动作块而言,更有用的问题是:这段动作即将制造什么接触?
于是,当前触觉先被基线差分和编码,再与视觉—语言上下文一起压缩成未来接触的潜在预测,最后才进入动作专家。触觉不再占据视觉前缀,也不再只是被动记录过去,而成为动作生成的一部分。
不过,一个新的触觉通路直接接到预训练 VLA 上,很容易被模型忽略,也可能破坏原有能力。N0-VTLA 为什么要设计三阶段训练?多种机器人、不同数量的手臂和触觉传感器又如何被放进同一个动作空间?
论文:N0-VTLA: Scaling Vision-Tactile-Language-Action Model with Latent Tactile Tokens
项目主页:https://research.neoteai.com/n0-vtla/
论文原文:https://arxiv.org/abs/2607.23782
本系列共上、中、下三篇。上篇先回答一个问题:机器人已经有摄像头,为什么仍然需要“预判触觉”?