具身智能这条赛道的融资节奏,最近出现了一个很值得关注的变化:一家具身数据方向的创业团队,在40天里连续完成两轮融资。放在整个机器人赛道里看,这个速度不算常见。更值得注意的是,资本看中的不是模型架构的又一个变体,而是“具身数据”这项实打实的工程能力。
很多人对具身智能的第一印象,还停留在“大模型接入机器人”“多模态感知”“端到端控制”这些词汇上。但真正动手做过机器人项目的人会明白,现阶段限制一个机器人学会新任务的因素,往往不是模型理论不够先进,而是拿不到足够多、足够干净、足够对齐任务目标的数据。模型结构可以快速对齐开源方案,算力可以靠预算解决,唯独数据这件事,必须一个场景一个场景地采、一条轨迹一条轨迹地洗、一个任务一个任务地去验证。
这篇文章想聊清楚一件事:为什么具身数据成了具身智能落地的关键卡点,以及从工程视角看,一支数据实战型团队到底在解决什么问题。如果你正在做机器人项目、准备组建具身数据团队,或者只是在考虑要不要all in具身智能方向,这篇文章会给你一个相对完整的框架。
1. 具身数据,为什么成了具身智能的胜负手
先给一个明确判断:具身智能的竞争,正在从“模型架构”转向“数据工程”。这不是说模型不重要,而是模型的技术红利正在快速摊平。
过去两年,机器人操作领域的模型演进速度非常快。从早期的ACT、Diffusion Policy,到后来的RT系列架构,再到各类VLA(Vision-Language-Action)模型,核心思路越来越收敛:用预训练视觉模型理解场景,用语言指令作为任务描述,用扩散模型或token化方式输出动作序列。架构上的创新门槛在降低,优秀的开源实现也越来越多。换句话说,一个硕士生团队照着一篇高质量开源仓库,也能在两周内训练出一个能完成简单抓取任务的策略。
但问题出在数据上。机器人模型不像大语言模型那样,可以靠爬虫获取海量互联网文本。机器人操作数据必须来自物理世界,采集成本极高。一个真实世界中一个小时的专家操作轨迹,算上环境搭建、机器人调试、数据清洗、标注质检,往往需要数小时甚至一天的人工投入。而且每条轨迹只能覆盖一个场景、一个物体、一种布局,想要模型具备泛化能力,数据量要成数量级增长。
这正是“实战派”团队存在的理由。他们做的事情,不是发一篇数据集的paper,而是真的在工厂里、实验室里、客厅场景里,把数据采集流水线搭起来,把成本降下来,把质量做上去,把数据真正喂进模型里跑通。资本在40天里连投两轮,本质上是认可这种“脏活累活”的壁垒。
对开发者来说,理解具身数据的重要性还有一层实际意义:未来几年机器人行业的岗位需求,会从“会训练模型的人”扩展到“会设计数据方案的人”。数据采集工程师、数据质检工程师、仿真数据流水线工程师,这些岗位会像今天互联网公司的数据工程师一样普遍。
2. 实战派与理论派的分野:具身数据的门槛在工程
说“实战派入局”,先要理解为什么数据这件事不能用纯算法思维解决。
一个做仿真学习的算法工程师,可以在MuJoCo里设计一个完美的抓取环境,生成几十万条成功轨迹。但到了真实机器人上,场景光照变化、物体材质差异、执行器噪声、传感器延迟,每一样都会让仿真里学到的东西失效。反过来,一个做真机数据采集的工程师,也会遇到另一个极端:好不容易采了100条真实轨迹,结果因为关节速度过猛、任务标注不一致、传感器时间戳没有对齐,模型训练出来的策略在评测时成功率只有20%。
这就是具身数据和互联网数据最大的区别。互联网数据是“生成”出来的,文本、图片、视频都可以通过爬虫和人工标注批量生产;具身数据是“执行”出来的,每一步动作都会消耗真实物理世界的资源,而且数据质量与硬件、软件、操作人员、任务定义强相关。
一支成熟的具身数据实战团队,通常要同时具备三种能力:
- 硬件集成能力:知道如何配置机械臂、灵巧手、夹爪、相机、力传感器,知道怎样让多路传感器时间同步,知道在采集任务中如何设计夹具和场景布局。
- 数据工程能力:具备完整的数据采集、清洗、标注、压缩、存储、版本管理能力。这不只是写几个脚本,而是要把一条从采集到训练的数据管线稳定跑起来。
- 模型训练能力:即便是数据团队,也要理解下游模型需要什么格式的数据、需要多少数据、需要什么样的数据增强,否则采了一堆数据,模型效果依然上不去。
换句话说,实战派的核心竞争力是“知道一个动作数据从物理世界到模型参数之间,所有环节会发生什么意外”。这种经验,不亲自在机器人旁边调过几个月的Bug,很难积累出来。
3. 数据从哪里来:真机采集、遥操作、仿真合成的三角结构
在具体设计数据管线之前,先理清数据来源。当前具身数据行业的数据来源主要有三条路径:真机程控采集、遥操作采集、仿真合成数据。三者不是替代关系,而是互补关系。
3.1 真机程控采集
真机程控采集指让机械臂按照预设程序重复执行同一类动作,同时记录传感器数据和动作状态。它的特点是数据完全真实,动作轨迹和物理接触符合真实规律。缺点是任务种类受限,很难覆盖需要精细操作、灵巧操作或非刚体操作的任务。
一条简单的程控采集流程,大致长这样:
- 定义任务:比如“从桌上拿起水杯放到托盘右侧”。
- 编写或示教一个基准轨迹。
- 在基准轨迹上加入目标物位置、朝向、夹爪开合角度的随机扰动。
- 多次执行,记录每一帧的视觉图像、关节状态、末端位姿和夹爪状态。
这类数据非常适合作为模型的“基础运动库”,用来训练抓取、放置、推拉等基础操作能力。
3.2 遥操作采集
遥操作是目前获取高质量仿人操作数据的主流方式。操作员通过手柄、主手、外骨骼或动捕手套,控制机械臂完成真实任务,系统同步记录视觉和动作数据。
遥操作采集的核心优势在于数据质量高。人类操作员的动作是经过“大脑规划”的,轨迹平滑、目标明确、夹爪开合时机合理,这些信息直接作为模型的监督信号非常有效。但遥操作采集的速度慢、成本高,一个熟练操作员一小时也只能采集有限条轨迹,量很难堆起来。
于是行业里出现了一个重要趋势:把遥操作采集效率化。常见做法包括:
- 使用双臂同构遥操作平台,例如操作员穿戴运动捕捉手套控制双臂机器人。
- 引入“轨迹回放”机制,采集到一条高质量轨迹后,通过扰动初始条件批量回放,生成多条有效轨迹。
- 将遥操作平台虚拟化,在数字孪生环境中操作虚拟机器人,再把轨迹映射到真机,降低真机调试等待时间。
3.3 仿真合成数据
仿真合成数据的核心价值是“量大且便宜”。通过MuJoCo、Isaac Sim、SAPIEN等物理仿真器,程序化地生成任务场景、物体位姿、光照条件和相机视角,再通过强化学习或专家的脚本策略生成动作轨迹。
仿真数据有两个绕不开的问题:域差距(domain gap)和物理真实性。仿真中的接触模型、摩擦系数、物体形变,与真实世界存在偏差。如果直接把仿真数据拿来训练真机策略,往往会出现“仿真里满分、真机上一团糟”的情况。
当前相对成熟的做法是“仿真预训练 + 真机微调”。先用仿真数据让模型学会任务的大致结构和动作分布,再用真机数据做小规模微调。这个策略在多个真实项目中已被验证有效,它会是数据管线里非常关键的一环。
| 数据来源 | 成本 | 数据质量 | 产量 | 适用阶段 |
|---|---|---|---|---|
| 真机程控采集 | 中 | 中高 | 中 | 基础动作库、批量采集 |
| 遥操作采集 | 高 | 高 | 低 | 复杂任务、精细操作 |
| 仿真合成数据 | 低 | 中(存在域差距) | 极高 | 预训练、数据增强、长尾场景 |
4. 一条最小可落地的具身数据管线设计
一个完整的具身数据管线,通常包括任务定义、数据采集、质量过滤、数据标注、格式转换、数据版本管理和数据混合七个环节。下面给出一个适合中小型团队参考的最小实现方案。
4.1 任务定义与场景配置
任何一次数据采集都从任务定义开始。任务定义不要只写一句“抓取水杯”,要细化到:
- 目标物是什么,有没有同类物干扰。
- 工作台面尺寸和物体初始位姿范围。
- 机器人初始位姿和运动范围。
- 允许的最大关节速度、末端速度。
- 任务成功的判定标准。
任务定义直接决定后续数据的有用性。如果任务定义含糊,采集人员按各自理解操作,最终数据集的噪声会非常大,模型训练时很难收敛。
4.2 传感器配置与数据格式
这里以一套常见的单臂移动操作平台为例:一个6自由度机械臂搭配二指夹爪,一个顶部深度相机、一个腕部RGB相机,采集频率30Hz,控制器控制频率10Hz。
每次采集在一条轨迹中会同时生成多类数据。为了方便后续处理,推荐用一个JSON元信息文件描述轨迹内容,轨迹二进制数据单独存成NPZ或ROSBAG。JSON文件示例如下:
// 文件路径:dataset/episode_0001/episode_0001.json { "episode_id": "episode_0001", "task_id": "pick_apple_to_basket", "language_instruction": "把桌子上的苹果放进蓝色篮子", "robot_platform": "single_arm_mobile_base", "num_steps": 240, "fps": 30, "controller_frequency_hz": 10, "sensors": { "rgb": { "cameras": ["overhead", "wrist"], "width": 640, "height": 480, "format": "jpg" }, "depth": { "cameras": ["overhead"], "width": 640, "height": 480, "format": "png" }, "joint_state": { "dof": 7, "unit": "rad" } }, "trajectory_file": "episode_0001.npz", "success": true, "operator": "engineer_zhang", "collection_date": "2025-06-20" }这里需要解释几个字段的作用。num_steps是轨迹总帧数,controller_frequency_hz是机器人控制器的控制频率,它和传感器FPS解耦。实际项目中,图像可能只保存了关键帧,而动作状态以控制频率记录,训练时再通过时间戳对齐。success字段非常重要,它是下游数据清洗的基本标签。采集完一条轨迹后,操作员或者自动判定脚本必须在第一时间标记本次尝试是否成功。
轨迹NPZ文件内部会保存每帧的关节位置、关节速度、末端位姿、夹爪开合指令、相机时间戳。一个NPZ内部结构示意如下:
# 文件路径:dataset/episode_0001/episode_0001.npz 内部字段 # joint_pos: (240, 7) 每帧关节角度,单位弧度 # joint_vel: (240, 7) 每帧关节角速度 # ee_pose: (240, 4, 4) 末端齐次变换矩阵 # gripper_cmd: (240,) 夹爪开合指令,0到1 # gripper_state: (240,) 夹爪实际开合状态 # rgb_timestamps: (N,) RGB图像时间戳 # depth_timestamps: (N,) 深度图像时间戳 # joint_timestamps: (240,) 关节状态时间戳4.3 数据采集脚本
真实项目中,数据采集脚本通常要同时协调机器人控制接口和传感器流。以ROS环境为例,采集命令一般通过rosbag完成:
# 文件路径:scripts/collect_episode.sh rosbag record \ /camera/color/image_raw \ /camera/aligned_depth_to_color/image_raw \ /arm/joint_states \ /arm/ee_pose \ /gripper/command \ /gripper/state \ -O dataset/episode_0001/episode_0001.bag说明:这里的topic名称需要根据实际机器人驱动调整,不要照抄。采集完成后,需要写一个解析脚本,把rosbag中的消息按时间戳对齐,转成上述的NPZ格式和JSON元信息。
这一步最关键的注意事项是时间同步。不同传感器以不同频率发布消息,如果直接把图像和动作按序对齐,可能会出现图像信息与动作状态不匹配的问题。建议在采集工程中统一记录ROS时间戳,离线转格式时通过最近邻插值对齐。
4.4 数据质量检查
数据采集完成后,第一步不是直接进模型,而是先做自动化的质量检查。下面给一个简单的数据检查脚本,通过元信息统计每个episode的基本情况:
# 文件路径:tools/check_dataset.py import json import numpy as np from pathlib import Path def check_episode(meta_path: Path): meta = json.loads(meta_path.read_text()) traj = np.load(meta_path.parent / meta["trajectory_file"], allow_pickle=True) steps = meta["num_steps"] joint_pos = traj["joint_pos"] fps = meta["fps"] duration = steps / fps # 简单检查:关节位置是否越界 joint_min = joint_pos.min(axis=0) joint_max = joint_pos.max(axis=0) violation = bool((joint_min < -3.14).any() or (joint_max > 3.14).any()) print( f"{meta['episode_id']} | task={meta['task_id']} | " f"steps={steps} | duration={duration:.1f}s | " f"success={meta['success']} | joint_violation={violation}" ) if __name__ == "__main__": dataset_root = Path("dataset") for meta_path in sorted(dataset_root.glob("*/episode_*.json")): check_episode(meta_path)运行方式:
python tools/check_dataset.py预期输出:
episode_0001 | task=pick_apple_to_basket | steps=240 | duration=8.0s | success=True | joint_violation=False episode_0002 | task=pick_apple_to_basket | steps=180 | duration=6.0s | success=False | joint_violation=False这个脚本虽然简单,但在实际项目中非常有价值。它能在进入训练前发现很多底层问题,比如轨迹记录断帧、关节越界、任务标签缺失、数据时间过长或过短。真实项目里,大部分训练失败都源于“脏数据”,而不是模型结构不好。
5. 数据清洗与混合训练:一个容易被低估的环节
很多人以为数据采集完成就等于数据准备好了,实际上数据清洗与混合才是决定训练成败的关键一环。有经验的团队会把30%到40%的时间花在数据清洗上,而不是模型调参上。
5.1 数据清洗规则
具身数据的清洗规则需要根据自己的任务类型定义,但以下几个规则是通用的:
- 轨迹完整性检查:一个episode的起始状态应该基本一致,如果出现首帧明显异常,比如相机没有曝光、机械臂不在初始位姿,需要标记并删除。
- 动作平滑性检查:真实操作员的动作总体平滑,但如果出现连续多帧关节速度突变,很可能是控制指令跳变或传感器丢帧,需要进一步检查。
- 任务成功标签复核:自动记录的success字段可能出错,建议每隔一段时间人工抽检一批样本,保证标签可信度。
- 场景多样性检查:同一任务下的数据要覆盖多种初始位置、多个物体位姿、不同光照条件。如果发现某个条件严重缺失,要反过来指导后续采集。
5.2 仿真数据与真机数据的混合策略
混合训练是当前主流实践。核心思路是让仿真数据提供“广度”,真机数据提供“精度”。但混合比例、采样权重不能拍脑袋定,需要根据模型评测结果反复调整。
一个常用的方案是“固定仿真占比 + 真机绝对数量保证”。例如:一个任务先保证至少50条真机成功轨迹,然后再加入5000到10000条仿真轨迹。训练时通过采样器控制真机数据被一个epoch内重复采样的次数。
以PyTorch为例,可以使用WeightedRandomSampler实现混合采样:
# 文件路径:src/train/sample_mixture.py import torch from torch.utils.data import DataLoader, ConcatDataset, WeightedRandomSampler # real_dataset 和 sim_dataset 已经按各自格式实现 real_num = len(real_dataset) sim_num = len(sim_dataset) # 真机数据权重设为1.0,仿真数据权重设为0.3 # 这个比例是初始值,实际项目中需要根据评测结果调整 weights = [1.0] * real_num + [0.3] * sim_num sampler = WeightedRandomSampler( weights=weights, num_samples=real_num + sim_num, replacement=True ) mixture_dataset = ConcatDataset([real_dataset, sim_dataset]) dataloader = DataLoader( mixture_dataset, batch_size=64, sampler=sampler, num_workers=4, pin_memory=True )这里的核心是保持真机数据在每一个batch中都有存在感。如果仿真数据量过大且不做采样控制,模型可能被仿真数据“淹没”,在真机评测时表现下降。实际调参中,一般建议从小比例开始,比如仿真权重0.1到0.3,然后根据真机成功率逐步调整。
5.3 数据增强的必要性
除了混合仿真数据,还要在训练阶段做数据增强。最常见的是图像层面增强:随机亮度扰动、对比度扰动、随机裁剪、颜色抖动。少量增加这些扰动,可以在不增加采集成本的情况下提升泛化能力。
但在做图像增强时要注意,不能破坏空间对应关系。例如目标检测里的随机翻转可以随便用,但机器人控制中,左右翻转会改变动作坐标系,使用时要同时翻转动作标签。因此,更稳妥的增强是颜色扰动、模糊、噪声,而不是几何变换。
6. 用开源数据集起步,还是自建采集工位
对很多团队来说,第一个现实问题往往是:我们该不该从零自建数据采集工位?我的判断是:先用开源数据集跑通流程,再用自建数据解决垂直场景,是性价比最高的路径。
具身智能社区目前已经积累了不少公开数据集,比如大型具身操作数据集Open X-Embodiment、机器人抓取数据集、以及各类仿真环境生成的大规模任务数据。这些数据集的价值在于可以帮助团队验证模型代码、训练流程、评测框架,是启动项目时不错的起点。
但开源数据集也有明显的局限:
- 传感器配置和你的机器人平台不同,直接迁移使用需要做特征对齐。
- 任务定义宽泛,很难覆盖你所在的垂直行业的具体场景。
- 数据质量参差不齐,标签格式五花八门,清洗成本很高。
所以,当团队要做一个真正能上线的机器人产品时,自建数据采集工位几乎无法回避。一个最小自建工位的投入包括:
- 一台带机械臂的机器人平台。
- 一个或多个RGB-D相机。
- 一台高性能采集主机。
- 一个遥操作控制装置。
- 一套数据采集、解析、质检脚本。
从成本角度看,这个工位的最低配置可能在数万元级别,但真正的成本不在硬件,而在人力和时间。一个能稳定产出高质量数据的数据工位,背后需要有一个懂硬件、懂ROS、懂数据处理的工程师长期维护。
7. 具身数据项目常见问题与排查方法
做了几个具身数据项目后,会发现很多失败并不是模型的问题,而是数据管线的问题。下面整理了一张高频问题表,可以直接照表排查。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 模型训练loss不下降 | 数据标签错了或任务不统一 | 随机可视化若干条轨迹,检查动作和指令是否匹配 | 重新清洗数据,统一任务定义 |
| 真机评测成功率低 | 数据场景单一,过拟合采集工位 | 统计场景多样性指标,检查物体位姿分布 | 补充多样化场景数据,加入仿真数据 |
| 采集轨迹长度忽长忽短 | 任务执行判定不一致或流程未固定 | 查看每个episode的duration和success分布 | 固定任务结束条件,明确成功标准 |
| 图像与动作状态错位 | 传感器时间戳未对齐 | 抽帧对比图像中的物体位置和夹爪状态 | 统一时间戳坐标系,离线插值对齐 |
| 相同代码仿真效果好、真机效果差 | 域差距过大 | 在仿真中加入随机化,提高物理真实性 | 增加域随机化,增加真机微调数据 |
| 数据量大但训练效果上不去 | 数据质量差,出现大量无效轨迹 | 抽样可视化,统计成功率占比 | 加强数据清洗,保留高质量轨迹 |
| 遥操作采集速度过慢 | 操作流程复杂,缺乏协同 | 记录单条轨迹耗时,分析瓶颈环节 | 简化操作流程,批量采集同一任务 |
这张表的价值在于提醒开发者:出现问题时,先问“数据流哪里断了”,而不是急着改模型结构。大多数具身智能项目的训练效果,都是被数据问题卡住的。
8. 工程最佳实践与团队建设建议
具身数据团队的建设,和传统互联网数据团队有很大不同。传统数据团队处理的是用户行为日志,数据是海量、廉价、自动产生的;具身数据团队的产出物则是每条都要消耗物理世界的稀缺数据。因此,工程上的精益程度直接决定团队的竞争壁垒。
8.1 从第一天开始做数据版本管理
不要等到数据集扩大到几个TB才考虑版本管理。具身数据项目重复迭代频繁,同一批数据可能因为清洗规则不同产出多个版本,如果不用版本管理,很容易出现“模型A用的是清洗前数据,模型B用的是清洗后数据,两者无法对比”的混乱局面。
建议为每个数据集版本定义如下元信息:
- 采集时间范围。
- 采集平台版本。
- 清洗规则版本。
- 任务定义版本。
- 数据量统计。
- 上游原始数据指针。
团队在记录训练效果时,必须同时记录数据集版本。做不到这一点,后续所有的模型优化复盘都是空谈。
8.2 建立任务模板库
同一个机器人,可能要做几十种任务。如果每个任务都由工程师临时写采集脚本,数据格式极容易不统一。更稳妥的方式是建立任务模板库,把任务定义、场景配置、成功判据、数据路径都标准化。
一个任务模板,基本上对应前面第4节中的JSON元信息结构。新任务来临时,复制模板再修改task_id和场景参数即可。这样能让采集工程师、标注人员和训练工程师有一套共同语言。
8.3 标注工具与质检体系要配套
具身数据不只有动作,还涉及语言指令、物体标签、任务语义。建议使用开源的数据标注平台和可视化工具,把图像、点云、关节状态、末端轨迹同时展示在一个界面上,让人工质检员能快速判断一条轨迹是否合格。
质检环节不要只靠人眼。可以在标注工具中嵌入自动检查规则,例如轨迹首尾帧一致性、夹爪速度上限、末端速度上限等。自动规则过滤掉明显不合格的数据,人工质检只负责模糊地带,效率会高很多。
8.4 关注安全生产和合规风险
具身数据采集涉及真实机器人和操作人员,安全是最高优先级。实际采集现场需要做好安全隔离,建议遵循以下原则:
- 采集前进行慢速空跑测试,确认轨迹范围。
- 机械臂工作区域内设置急停开关。
- 操作员和机器人之间保持安全距离。
- 涉及个人信息、特定公司生产环境的场景,先获得授权再做数据采集。
- 数据存储和传输要遵循企业内部的数据安全规范,避免把敏感生产数据带入公开数据集中。
这些听起来像“流程话”,但在真实项目中如果缺了任何一条,都可能造成设备损坏、人员受伤或数据合规风险,一次事故就能让整个数据项目停滞。
8.5 小团队的起步路径建议
如果团队只有两三个人,建议不要一开始就追求大而全的数据平台。按下面这个路径推进会更稳:
- 第一步:用一套成熟的开源数据集跑通“数据->训练->评测”的闭环。
- 第二步:搭建一套最小采集工位,只采集一个任务,验证自采数据能否超过开源数据的效果。
- 第三步:逐步扩展任务类型,完善清洗和质检脚本。
- 第四步:数据量积累达到一定规模后,再考虑建设仿真数据流水线和自动化采集平台。
很多团队在第一步和第二步之间就放弃了。原因通常是:自采数据效果不如开源数据集。这是正常现象,因为自采数据的价值不在“量”,而在“场景匹配”。刚采集的100条数据可能解决不了泛化问题,但它已经能让模型理解你的机器人的具体执行器特性。继续扩充数据,并调整数据清洗和训练策略,效果会逐步体现。
9. 总结与后续学习方向
回到文章开头那个判断:具身智能的竞争正在转向数据工程。40天融两轮的行业事件,反映的不只是一家公司的融资效率,更是产业界对“能打仗的数据团队”的认可。
从技术视角看,具身数据是一个典型的交叉工程方向,横跨机器人控制、传感器同步、数据处理、机器学习、仿真建模。对开发者来说,这个方向的入门路径也很清晰:先掌握机器人基础操作和ROS环境,再做一套数据采集与清洗工具链,然后跑通一次“采集-训练-评测”的完整闭环。做完这条闭环,你对具身智能的理解会超过很多只写模型代码的人。
下一步值得深入的方向,至少包括这三个:
- 遥操作采集效率的工程化改进,例如低延迟远程遥操作、批量轨迹回放生成。
- 仿真到真机的迁移能力,重点是域随机化策略和物理参数拟合。
- 数据质量自动评估,用模型或规则自动判断轨迹是否值得进入训练集。
具身数据赛道还很早期,没有标准答案,也没有终局方案。正因为如此,真正下过场、踩过坑、把数据管线跑通的实战派,才拥有定义行业方式的先发机会。如果你正站在这个方向门口,不要只盯着模型指标,多去现场看看那些“数据是从哪里来的”,答案往往藏在硬件和场景里。