从RT-1到ForceVLA:VLA学习路径与工程避坑指南

📅 发布时间:2026/9/8 6:40:01
从RT-1到ForceVLA:VLA学习路径与工程避坑指南
最近几年“具身智能”从一个学术黑话变成了招聘网站上频繁出现的岗位名称。但真正开始动手看代码的人会发现这个领域最麻烦的不是没有资料而是资料更新得太快。好不容易读完一篇 RT-1 的解读下一周又冒出 RDT、ForceVLA 一长串新名词。我不打算再写一篇“论文逐行解读”而是想聊聊更实际的东西当一套涵盖 RT-1、RoboFlamingo、MDT、RDT、LAPA 的 20 集 VLA 教程摆在你面前时应该怎么学才能不只是在收藏夹里吃灰以及当你真的把模型跑起来之后哪些地方会毫无预兆地卡住你。一个比较反直觉的判断先放在这里VLA 的核心难点从来不是“看懂画面”和“听懂指令”。视觉语言模型发展到今天理解场景已经不是瓶颈。真正的瓶颈是动作——用什么形式表示动作用什么模型结构生成动作以及生成的动作能不能让真实机械臂平滑、稳定、安全地执行。能想明白这一层后面看所有论文都会顺很多。1. 先理解 VLA 解决的不是“看见”而是“看见之后怎么动”1.1 传统机器人栈的断层不在感知在行动传统机器人项目怎么做通常是一条流水线先用目标检测模型找到物体再算姿态然后交给运动规划库做路径规划最后底层控制器驱动电机。听起来很合理但每换一个场景这条链路就要重新调一遍。感知模型在一个光照下好用换个角度就不灵规划模块只认固定尺寸的物体控制器参数调好了物体稍微挪两厘米就抓空。而 VLA 的思路完全不同。它不再把“感知-规划-控制”切成三段而是让模型直接吃多视角图像和语言指令输出一条动作序列。这个转变带来的好处不是“少了两个模块”而是整个系统变成了一体化的可学习系统。过去的问题在于模块之间的错误会一级一级放大现在的问题则变成了模型能不能从数据里自己学会动作和场景之间的关系。1.2 动作表示方式才是 VLA 真正的分水岭刚开始看 VLA 论文很多人会把注意力放在网络结构上这里用了 ViT那里用了 diffusion。真正值得先看的是动作表示。不同模型对“动作”有完全不同的假设这决定了它们的上限和落地方式。常见动作表示有这么几类末端位姿加夹爪开合直接输出机械臂末端在相机坐标系下的 6D 位姿和夹爪指令直观但依赖标定精度。关节角输出每个关节的目标角度物理上一定可达但在不同机械臂之间迁移困难。增量动作每次只输出一个小幅修正适合精细任务但长期执行会有累积漂移。动作块一次预测未来 N 步动作可以降低“一步错步步错”的复合误差是很多扩散策略采用的做法。这里的核心矛盾是动作表示越接近电机层物理可行性越高但跨平台迁移越难动作表示越接近语义层跨平台迁移越容易但离精确控制越远。你看模型时会发现不同算法的很多设计差异其实都是为了在这个矛盾里找平衡。2. 教程里那串算法名应该按这条线索去消化2.1 RT-1把机械臂动作当成一组词元RT-1 可以看作是 VLA 走向大众视野的起点。它启发自 Transformer 语言模型的生成方式把机械臂动作离散成一串词元然后用类似 next-token 的方式逐维预测。输入的图像经过视觉编码器指令经过文本编码器共同作为条件输出动作词元序列。具体怎么做其实是次要的关键是你应该从 RT-1 里理解两件事。第一语言指令在这里不是最终输出而是“条件”。模型不是一个会说话的大模型而是一个根据语言条件生成动作的模型。第二离散化是有代价的。把连续动作切成 256 个桶看起来够细但在某些精密任务里桶的颗粒度就可能不够。RT-1 的价值不是告诉你“离散化最优”而是展示了一条可行的、可扩展的技术路线——动作可以像语言一样被生成。2.2 RoboFlamingo给现成视觉语言模型补一个动作出口RT-1 这类方案需要大批机器人数据从头训练。对绝大多数团队来说这条路成本太高。RoboFlamingo 代表的思路是拿起一个现成的视觉语言基础模型冻结大部分参数在合适的位置插入可训练接口再在末端接一个小动作头这样就能用相对较少的机器人数据训练出一个能输出动作的模型。这个思路的现实意义非常直接。如果你不是大厂没有几十万条遥操作数据“从头训 VLA”基本不现实。更可行的是在开源视觉语言模型的基础上做适配。当然RoboFlamingo 这类方案也有边界基础模型的知识擅长“理解场景”并不天然擅长“生成动作”动作头的设计和训练数据的质量会直接影响上限。2.3 RDT 与 MDT用扩散模型重构动作轨迹RT-1 是把动作当词元RoboFlamingo 是调接口而 RDT、MDT 这一组模型共同指向另一个方向用扩散模型生成整段动作轨迹。为什么要扩散因为机器人示教数据天然是多峰的。同一个任务十个人演示可能就是十种不同轨迹。如果用回归模型训练动作输出模型会把多条轨迹“平均”出一条结果经常是抖动、停顿。扩散模型不是直接预测一个最优动作而是从一个随机噪声轨迹开始逐步去噪成一条符合数据分布的轨迹天然适合这种多峰输出场景。RDT 这种 Robotics Diffusion Transformer 的做法是把多模态观察信息和噪声动作一起丢进 Transformer 结构做去噪。MDT 在这个框架里可以理解成同一思路的另一种骨干或变体。学习时不必纠结谁更强要抓住的共同点是扩散加 Transformer 正在成为机器人动作生成的主流范式之一它的厉害之处不是单步预测更准而是整段动作更平滑、更多样。2.4 LAPA语言模型负责“拆任务”底层策略负责“干活”LAPA 代表的则是一条更工程化的路线先让语言模型把“把杯子放到桌上”拆解成几个步骤然后由一个底层的动作策略逐步执行。它不要求一个大模型从头到尾输出所有电机指令而是让规划与执行分层协作。不同教程里 LAPA 的展开名未必一样这里真正值得理解的是“语言模型和动作模型如何分工”这个设计问题。选择一一个端到端大模型吃全部信息、吐全部动作简单直接但对数据和算力要求极高。选择二上层大模型负责任务规划和纠错下层小策略负责具体动作工程上更容易控制风险。看到 LAPA 时先问它在哪一个选择里再往细看思路会清楚很多。这一批算法建议按下面的顺序去学避免一上来就被名词淹没学习顺序模型/类别核心贡献学完之后你应该能说清1RT-1把动作当成词元序列生成为什么离散化动作可行代价是什么2RoboFlamingo把预训练视觉语言模型迁移到动作任务冻结骨干和训练动作头之间的边界在哪3RDT / MDT用扩散模型生成连续动作轨迹为什么扩散更适合多峰动作分布4LAPA把语言规划和底层执行分开规划与执行如何分工才更可控3. 从零基础到能训练一个 VLA不跳过这些垫脚石3.1 课程标题里的“30k”要理性看标题里的“30k”通常指的是月薪预期。这里需要先泼一点冷水看完任何教程都不可能直接得到 30k 的 offer真正值钱的是你在学习过程中建立的能力组合。具身智能岗位现在给得高的原因不是“会念模型名”而是“能在真实机器人上稳定复现效果并解决工程问题”。所以下面的学习路径每一步都刻意把“动手”放进去而不是让你只看视频。3.2 六块垫脚石按顺序踩按常见实践建议把下面的基础排好序前面的没有踩稳后面的学习效率会很低。Python 与 PyTorch不是会写脚本而是能熟练处理数据加载、分布式训练、断点续训。Transformer 与视觉语言模型基础了解 ViT、CLIP、tokenizer、cross-attention 这些概念不知道细节没关系但要能看懂模型输入的张量形状。机器人学基础坐标变换、正逆运动学、相机内参和手眼标定、控制频率。这部分最容易被人忽略但动作模型部署时绕不开。数据格式理解一条 episode 里有什么图像、指令、动作怎么对齐坐标系定义在哪动作频率是多少。仿真环境MuJoCo 或 Isaac Lab 之类先在仿真里把推理和评测链路跑通成本比真机低一个数量级。训练调参基本功学习率、batch size、随机种子、权重初始化、loss 波动这些基本功决定了你能不能复现论文结果。还有一个很容易被忽略的点不要上来就打算从头训一个大 VLA。单卡训练一个基础 VLA 的显存需求和服务器数量不是个人开发者能轻松承担的。更现实的路径是在开源预训练权重上做微调或者直接用较小的观测编码器。学会“站在已有模型上做增量”在算力受限时是必须的能力。3.3 一段更稳妥的三步走路径第一步把教程里的模型都跑通推理先不改任何训练逻辑用官方权重在示例数据上看看输入输出长什么样。第二步选一个任务场景准备一小批自己采集的数据几十条 episode 就够做一次微调把“数据-训练-评估”的最小闭环跑通。第三步把这个闭环搬到仿真或真机上开始记录失败案例再回到数据和参数上去改。这段路径的核心是每走一步都要留下一个可以重复运行的最小脚本。等积累到第三十次实验时你会发现自己手里不再是一堆模型文件而是一整套可以迭代的工程资产。4. 真正动手时会暴露的五个工程坑4.1 数据对齐时间戳、坐标系、频率都可能是坑第一个容易翻车的地方在数据。很多人拿到公开数据集不检查相机时间戳、指令语言、动作日志之间的对齐关系就开始训练。结果训练时 loss 很漂亮到真机上完全不动。常见的问题包括图像是 30Hz动作日志是 10Hz回放的时候没人做插值末端位姿用的坐标系和模型定义的不一致夹爪指令被当成连续量实际只有开合两个值。建议拿到任何数据先写一段检查脚本# 伪代码查看一条 episode 的字段和采样频率 episode load_episode(record_0001.hdf5) for key in episode.keys(): print(key, episode[key].shape, episode[key].framerate) # 通常你会看到 images, joint_positions, eef_pose, gripper, instruction # 先确认它们的时间戳是否对齐再谈训练如果原始数据说明文档不完整落地前要先确认数据集的版本和字段定义。公开数据集版本更新很频繁字段命名甚至坐标系定义都可能变。4.2 动作空间直接输出关节角不一定更好第二个坑是动作空间选择。从直觉上看关节角是最“底层”的控制量输出关节角不就不需要解逆运动学了但实际上关节角在不同机械臂上的语义完全不同一个在 Franka 上训练好的模型换到另一台六轴臂上基本不可用。而末端位姿虽然依赖标定但在同类机械臂之间迁移时更符合人的直觉。如果你做的是抓取、摆放这类桌面任务我一般建议优先考虑末端位姿加夹爪配合动作块输出。如果做插孔、装配这类对力比较敏感的任务则要考虑加力反馈或者用 delta 动作做局部修正。4.3 仿真跑通不等于真机可用仿真环境最大的陷阱是“看起来成功了”目标永远不挪位置光照永远不变相机视角永远是同一个角度。模型在仿真里学到的是“记住画面里的一个固定位置”而不是“理解抓取这个行为”。这会导致真机失败一塌糊涂。减少仿真到真机差距的常见手段包括增加光照扰动、物体位置随机化、相机内外参随机化、延迟模拟以及最笨但最有效的——定期把模型放到真机上做小样本测试用真机失败案例反哺仿真数据。先跑通再优化这个节奏一定要守住。4.4 只看 loss 评测不了 VLAVLA 训练日志里的 loss 下降只能说明模型在拟合训练数据不能说明它会干活。评测一个 VLA至少要看三个维度任务成功率、在不同初始条件下的鲁棒性、失败之后能否恢复。最简单的做法是设计一个测试矩阵固定几类任务每类任务在多个物体位置、多个光照角度下测试统计首次尝试成功率。如果出现“训练 loss 很低、任务成功率也很低”优先检查的不是模型而是标签动作是不是有噪声或者评测时相机位置和训练数据差太多。这里给一张简易排查表现象优先排查方向训练 loss 下降但真机乱动动作表示、坐标系、数据频率不一致仿真成功、真机失败相机标定、延迟、视觉域差距抓取总差一点夹爪中心标定、末端基准、离散化粒度输出抖动扩散步数、动作块长度、滤波4.5 推理速度和算力是隐藏门槛最后一块短板通常是推理速度。在论文 demo 里模型处理一帧画面可能要几十毫秒看起来很“实时”但叠加上图像采集、预处理、后处理、通信延迟实际控制频率可能不到 5Hz。对抓取任务勉强够用对动态避障或高速装配远远不够。工程上的处理方式包括把图像预处理放到 GPU 上、固定 batch 避免动态 shape 的额外开销、用 TensorRT 或 ONNX 加速、把模型输出限幅并加低通滤波。还有一点很容易踩真机通信协议本身会带来不稳定延迟建议在真机调试前先测量整条链路的端到端延迟而不是只看模型单步推理时间。5. 从“跑通教程”到“放进产品”还差最后几块拼图5.1 构建你自己的数据采集闭环在实验室里可以用一个现成数据集做完整个实验。但一旦要解决自己的任务就得有自己的数据。遥操作是当前最主流的方式通过 VR 手柄、3D 鼠标或直接拖着机械臂做示教收集图像、动作和指令。数据管理同样不能省每条 episode 要有任务描述、目标物体、场景编号、采集时间否则后面做数据筛选和模型迭代会非常痛苦。一个可以反复使用的框架是固定任务先人工采集 50 条左右的 episode用预训练 VLA 微调再放到固定测试矩阵里评测然后根据失败样本补采数据再重复。这个循环跑得越顺你积累的“数据-模型-评测”资产就越值钱。5.2 给模型的输出加一层安全护栏在大模型输出的动作和目标之间必须隔一道安全校验。“模型生成动作安全模块把关”是工程常态。不管模型多聪明你都要在它输出之后加一个校验层关节限位、速度限幅、工作空间边界、力和力矩阈值、急停逻辑。# 动作安全校验示意 filtered clip_to_joint_limits(raw_action, lower, upper) if joint_velocity_norm(filtered) v_max: filtered scale_to_velocity_limit(filtered, v_max) if outside_workspace(filtered): action emergency_stop()这段代码不是解决 VLA 本身但它决定了 VLA 能不能被放心地用。很多 demo 翻车问题不在模型而在缺少这一层。5.3 长期维护的不是模型是评测基线模型训练结束并不意味着项目结束。真正长期维护的是评测基线每个版本模型都要在同一套测试任务上跑分记录成功率、平均完成时间、失败原因分布。有了这份基线你才能判断新模型是真的变强了还是只是因为随机种子变了。我见过不少团队在 VLA 上反复折腾最后发现提升最大的一次不是换了模型结构而是把评测基线从“主观感觉”改成“固定测试集”。这个经验放到任何具身智能项目里都适用数据、评测、模型三者里评测往往是最容易被低估的。6. 下一步该关注哪些方向6.1 ForceVLA 提示了一条新路把外力信息变成一等模态从近期的研究热词看ForceVLA 这类方向被频繁提及核心思路是把机械臂末端的六维外力力矩当成与画面、语言同样级别的输入模态。为什么要这样做因为很多任务根本无法只用视觉完成。旋拧螺丝、插拔接头、打磨表面这些任务的关键判断依据是“手上感觉到多大阻力”而不是“画面里看到什么”。纯视觉 VLA 在这些任务上很容易到达瓶颈把力觉信息接入模型正在成为下一阶段的突破口。6.2 导航 VLA、标准体系与鲁棒性会变成新热点另一个明显的变化是 VLA 正在从桌面机械臂走向移动机器人“导航 VLA”这类的热度上升很快。其本质是把“感知-决策-执行”的闭环从 6 自由度扩展到更大的移动空间这对模型的长程规划能力、记忆能力和实时性都提出了更高要求。同时行业标准和人形机器人相关规范也在密集推进。过去这一领域几乎没有统一接口和评测标准各家数据格式、动作表示都不一样这是制约工程协作的重要原因。标准体系要解决的正是这个问题。另外随着 VLA 进入真实环境输入鲁棒性和对抗攻击防御也开始被认真讨论。视觉输入的一小点扰动就可能让动作输出完全偏掉所以在开放环境部署前输入校验和鲁棒性测试会越来越不可少。6.3 我的建议别只追大模型去攒一个完整闭环最后回到最初的问题。学 VLA 的正确姿势不是把 RT-1、RoboFlamingo、MDT、RDT、LAPA 的名字全部背熟而是亲手把一条“数据-训练-评测-真机”的最小闭环跑通。跑通一次你对动作表示、数据对齐、评测设计和真实机器人之间关系的理解会超过闷头读二十篇论文。如果你现在还在犹豫从哪里开始我建议先做三件事找一台能动的开源机器人平台下载一个现成的 VLA 预训练权重准备五条自己采集的演示数据。然后跑一次微调写一个评测脚本记录第一次真机失败的原因。这个流程走完你就有了一张属于自己的 VLA 地图后续再看到新模型都只是在这张地图上添加新的路线。