最近一则关于 Figure 全球悬赏人类“干活”的消息在具身智能圈子里传得很快。很多人第一反应是机器人公司不是最想用机器替代人吗怎么反而花钱请真人去干活其实这背后恰恰是当前具身智能赛道最核心的瓶颈——数据。本文不是要写一条新闻快讯而是想借这件事把机器人数据采集、数据清洗、数据飞轮这条技术链路完整拆开看看“囤数据”这件事为什么如此重要普通人或开发者又能从中理解什么。在 AI 大模型领域数据决定了模型能力的上限在具身智能领域这句话同样成立甚至更加残酷。机器人要学习“打开抽屉”“叠衣服”“端杯子”这些对人类来说最基本的操作背后需要的不是几万条文本而是海量的、带传感器时序信息的、跨场景的物理交互数据。Figure 的悬赏模式只是把这场数据竞赛摆到了台面上。接下来我会从数据稀缺的根因讲起逐步展开数据采集的技术路径、数据清洗与增强方案以及数据如何驱动机器人模型迭代最后给出工程落地过程中常见问题和最佳实践。1. 机器人为什么在疯狂“囤数据”1.1 具身智能时代的“燃料”是什么具身智能Embodied AI指的是让 AI 拥有身体能够在真实物理世界中感知、决策和行动。与大语言模型不同具身智能的模型不能只靠“读文本”来学习它需要“动手做”。因此机器人模型训练的数据不再是一行行文字而通常是这样的多模态时序数据摄像头采集的 RGB 图像序列深度相机输出的深度图机械臂或人形机器人的关节角度、关节速度、力矩夹爪的开合状态与触觉传感器数据人类操作员的动作轨迹通过遥操作或动捕设备获得语言指令或任务描述。这些数据组合在一起才能让模型理解“当杯子在桌面上指令是拿起杯子时机械臂应该输出怎样的关节轨迹”。业内常用“数据飞轮”来形容这个循环更多数据 → 训练出更好的模型 → 机器人表现更稳定 → 能承担更复杂的采集任务 → 产生更多高质量数据。Figure 全球悬赏人类“干活”本质就是在想方设法把这个飞轮的第一步做大。1.2 为什么机器人数据比大模型文本数据更难获取大模型时代互联网上的文本、图片、代码几乎是“取之不尽”的。但机器人操作数据完全不同它有四个非常突出的特点。第一真实物理交互数据是稀缺的。一台机器人在真实环境里一天能采集的数据量有限而且很容易受到硬件损耗、环境干扰、安全限制的影响不可能像爬虫抓网页那样批量获取。第二数据要有“动作标签”。文本数据自带语义但机器人数据必须回答一个问题在这个状态下机器人应该输出什么动作这个动作标签通常需要人工遥操作、动捕设备或程序化生成来提供成本和门槛都很高。第三数据必须跨场景、跨对象、跨形态。模型不能只认识某一个厨房、某一只杯子。它需要见过不同光照、不同摆放位置、不同颜色形状的物体这就要求数据采集覆盖尽量多的环境变化。第四数据质量直接影响安全。让大模型说错一句话可能只是内容不准确但让机器人学到一个错误动作可能会撞坏物体甚至伤到人。所以机器人数据不能只求多还必须有严格的质检和筛选流程。1.3 Figure 是谁Helix 模型与数据的关系Figure 是一家专注于人形机器人研发的公司其产品线包括 Figure 01、Figure 02 等双足人形机器人。它的一大特点是和 AI 大模型公司深度合作走“视觉-语言-动作VLA”路线。公开信息显示Figure 曾经发布过 Helix 模型这类模型的核心思路是让机器人直接根据视觉输入和语言指令输出连续动作。这种端到端 VLA 模型对数据的要求非常高。传统机器人控制往往依赖工程师手写状态机、运动规划算法但 VLA 模型希望“让数据说话”给模型足够多的高质量“视觉-语言-动作”三元组让它自己学习从感知到控制的映射关系。换句话说模型有多强很大程度上取决于“投喂”的数据有多丰富、多干净。理解了这一点再看 Figure 全球悬赏人类“干活”就不难发现它表面是招人干活实际上是招人帮机器人“示范”怎么做。人类每一次弯腰、抓取、放置都是在为模型生产动作标签。2. Figure 全球悬赏一场数据采集工业化的实验2.1 “悬赏人类干活”的本质据公开信息Figure 面向全球招募人员参与数据采集工作参与者需要在真实物理环境中执行各种操作任务例如整理物品、抓取货物、操作家电等。整个过程中参与者通常需要穿戴动作捕捉设备或操作遥操作设备让机器人本体或仿真环境记录下人类的动作轨迹。这件事的本质是把“数据采集”从一个研究行为变成一种可规模化、可付费的工业化生产行为。它和互联网早期的“众包标注”非常像当初训练图像识别模型时企业把图片标注任务分包给大量兼职人员现在训练机器人操作模型企业把物理操作演示任务分包给真人。不过机器人数据采集比图片标注难得多。图片标注只需要人在电脑前画框而机器人数据采集要求人在真实空间里“演”并且每一条轨迹都要和传感器数据、任务描述严格对齐。这也是“悬赏”这种形式出现的直接原因它需要大量人力而且很难完全自动化。2.2 数据采集外包模式的技术影响从工程角度来看这种采集模式会带来几个值得关注的信号。它会推动数据采集设备和协议走向标准化。当采集人员遍布全球不同场地、不同设备产生的数据格式必须统一否则后续清洗和训练成本会失控。因此时间戳对齐、坐标系定义、传感器标定这些工作在数据采集阶段就要前置。它会带动“数据标注”相关工具链的发展。原始遥操作轨迹并不能直接用于训练需要切分任务片段、标注物体类别、校验动作是否合理。可以预测未来几年机器人数据标注工具会像当年的 NLP 标注平台一样涌现。它会改变机器人公司的核心竞争力结构。过去机器人公司的壁垒是硬件结构设计和运动控制算法而现在数据规模、数据质量和数据管线能力正在成为新的壁垒。Figure 愿意出钱请人干活说明它已经把数据视为公司级资产来经营。2.3 对开发者的启示对于普通开发者来说Figure 的悬赏模式可能离我们比较远但它提供了一个重要启示如果你正在做机器人相关项目不要把注意力全部放在模型结构和硬件选型上数据采集与处理能力同样值得投入。很多团队买回机械臂、搭好仿真环境跑通了一个 demo但换一个场景就不 work 了。原因往往不是模型代码写得不好而是训练数据覆盖度不够。尽早建立自己的数据采集和数据集管理流程会让后续迭代快很多。3. 人类“干活”的几种姿势数据采集技术路径拆解3.1 遥操作让机器人“复制”人类动作遥操作是目前最常用的机器人数据采集方式。操作员通过主手、游戏手柄、VR 控制器或专用操纵杆远程控制机械臂或人形机器人完成动作。机器人的关节传感器会记录下完整的动作轨迹同时摄像头会记录视觉信息。遥操作的关键指标是“带宽”和“力反馈”。高带宽意味着操作员的指令能实时传到机器人端减少延迟力反馈则让操作员感受到机器人末端受到的力适合精细操作。实际项目中很多团队会优先在仿真环境里做遥操作因为仿真环境可以同时输出真值标签物体位置、关节力矩、碰撞状态能省去大量标注工作。下面是一个遥操作数据记录的简化思路。假设机器人通过 ROS 话题发布关节状态我们订阅并保存到 JSON 文件中# 文件路径scripts/record_teleop.py # 这是一个遥操作数据记录的简化示例需要根据实际 ROS/机器人 SDK 调整 import json import time import rospy from sensor_msgs.msg import JointState joint_records [] start_time time.time() def joint_callback(msg): record { timestamp: time.time() - start_time, joint_names: msg.name, joint_positions: list(msg.position), joint_velocities: list(msg.velocity), } joint_records.append(record) def main(): rospy.init_node(teleop_recorder) rospy.Subscriber(/joint_states, JointState, joint_callback) print(正在记录遥操作数据按 CtrlC 停止...) rospy.spin() if __name__ __main__: try: main() except KeyboardInterrupt: with open(teleop_demo.json, w) as f: json.dump(joint_records, f, indent2) print(f已保存 {len(joint_records)} 条关节状态记录)这段代码的核心逻辑是订阅机器人关节状态话题把每个时刻的关节名称、位置、速度和时间戳记录成 JSON。后续可以用这些数据训练逆动力学模型或作为模仿学习的数据集。3.2 动作捕捉人体轨迹与机器人关节的映射除了直接操作机器人还有一种更“自然”的采集方式让人类穿上动作捕捉设备做动作再把人体运动轨迹映射到机器人关节空间。这种方法尤其适合人形机器人因为人形机器人本身的结构就是模仿人类。动捕系统按原理可以分为光学动捕、惯性动捕和机械式动捕。光学动捕精度高但需要在固定场地布置多个摄像头惯性动捕通过 IMU 传感器解算姿态方便携带但长时间使用有漂移。无论哪种方式最终都要做“重定向Retargeting”也就是把人体关节角度映射到机器人关节角度。这里需要注意人体和机器人的自由度并不完全一致映射过程中要做约束处理。例如人的肩关节有多个旋转自由度而某些机器人的肩关节只有两个或三个自由度这时就需要通过 IK逆运动学来求解最接近的机器人姿势。3.3 自动化采集与合成数据真人演示数据成本高因此业界也在探索自动化和合成数据方案。一种做法是让机器人在设定好的程序化策略下反复尝试动作自动记录成功和失败的轨迹另一种做法是在 MuJoCo、Isaac Sim、PyBullet 等仿真环境中批量生成数据。仿真数据的优势是量大、有真值、可以随意改变光照和物体位置劣势是存在“Sim-to-Real Gap”仿真里学到的策略迁移到真实机器人上可能表现下降。所以更稳妥的做法是“仿真预训练 真实世界微调”用仿真数据让模型获得基本能力再用少量真实数据做适配。4. 从悬赏到生产线机器人数据采集平台怎么搭建4.1 数据采集平台的核心模块如果你也想搭建一套自己的机器人数据采集平台无论规模大小建议至少包含以下五个模块。设备接入模块负责连接机器人、相机、传感器统一读取数据。很多机器人厂商提供了 SDK 或 ROS 驱动这一步通常是在 ROS 或自研通信框架里完成多个话题的订阅与同步。任务管理模块负责定义采集任务。一个任务通常包含任务说明、需要演示的动作、采集轮次、负责人员等信息。例如“将桌上的红色杯子放到托盘上”就是一个任务单元。数据记录模块负责把图像、关节状态、语言指令等不同模态的数据按时间戳合并存储。这里的关键是时间同步不同传感器可能使用不同的时钟如果不对齐模型的输入输出就错位了。质量控制模块负责在采集过程中或采集结束后判断数据是否合格。常见的判断方式包括人工回放视频、检查轨迹是否平滑、检查任务是否完成。最好在采集端就提供实时的数据预览和告警避免无效数据积累。数据管理模块负责数据集的版本、标注、切分和导出通常会和后续的训练流程打通。4.2 数据存储与格式设计机器人数据的存储格式没有绝对标准但一种常见做法是“一个任务一个目录”robot_dataset/ ├── task_0001/ │ ├── episode_0000/ │ │ ├── obs_rgb_0000.jpg │ │ ├── obs_depth_0000.npy │ │ ├── joint_states.csv │ │ ├── action.json │ │ └── meta.json │ ├── episode_0001/ │ └── ... ├── task_0002/ └── dataset_meta.jsonobs_rgb_*.jpgRGB 图像帧obs_depth_*.npy深度图用 NumPy 格式保存joint_states.csv每个时间步的关节角度、速度、力矩action.json对应的动作指令或目标位置meta.json任务描述、采集设备、采集时间、操作人员等元信息。这种按“任务-回合-帧”组织的结构方便后续做数据集切分和任务条件训练。每条 episode 代表一次完整的任务演示训练时模型通常以 episode 为单位输入。4.3 数据质量评估与筛选数据质量评估是数据平台里最容易被忽略的模块。原始数据中常见的质量问题包括轨迹抖动、任务中途失败、相机被遮挡、关节数据缺失、图像曝光异常等。可以先用规则脚本做一轮自动筛查例如计算关节轨迹的加速度是否超过物理阈值、检查相邻图像帧的像素差异是否正常、检查时间戳是否存在大段缺失。自动筛查之后再结合人工抽检重点看任务是否真正完成。质量评估的结果要写回数据集元信息中方便后续按质量分数采样。5. 数据清洗与增强仓库里的“矿”不等于“精炼产品”5.1 从原始轨迹到可用数据的清洗流程采集到的原始数据不能直接拿去训练需要经过清洗。清洗流程通常包括时间戳对齐、异常值剔除、平滑去噪、轨迹截取、内容脱敏等环节。下面用一段 Python 代码展示一个简单的数据清洗流程。# 文件路径pipeline/clean_data.py import json import numpy as np import pandas as pd def load_episode(episode_dir): 读取一个 episode 的关节状态和元信息 joint_df pd.read_csv(f{episode_dir}/joint_states.csv) with open(f{episode_dir}/meta.json, r) as f: meta json.load(f) return joint_df, meta def smooth_trajectory(df, window5): 对关节位置做滑动平均去除高频抖动 cols [col for col in df.columns if col.startswith(pos_)] df[cols] df[cols].rolling(windowwindow, centerTrue, min_periods1).mean() return df def remove_outliers(df, threshold3.0): 剔除关节速度超过阈值的异常帧 vel_cols [col for col in df.columns if col.startswith(vel_)] if not vel_cols: return df vel_values df[vel_cols].abs().values outlier_mask np.any(vel_values threshold, axis1) df df[~outlier_mask].reset_index(dropTrue) return df if __name__ __main__: episode_dir robot_dataset/task_0001/episode_0000 df, meta load_episode(episode_dir) df smooth_trajectory(df, window5) df remove_outliers(df, threshold3.0) df.to_csv(f{episode_dir}/joint_states_clean.csv, indexFalse) print(f清洗完成原始 {len(df)} 帧处理后 {len(df)} 帧)清洗过程不是越复杂越好关键是根据机器人物理特性和传感器噪声水平调整阈值。比如速度阈值设得太小会误删正常的快速运动帧设得太大又起不到剔除异常的作用。实际项目中可以先对一小批数据做统计分析画出关节速度分布再确定合理的阈值。5.2 数据增强策略数据增强在图像领域已经非常普遍机器人数据也可以做增强但不能像图像分类那样随意旋转翻转因为动作轨迹和物理环境强相关。合法且常用的增强包括视觉增强对 RGB 图像做亮度、对比度、高斯噪声扰动模拟不同光照条件位置扰动在物体初始位置附近做小幅随机偏移扩展抓取位姿覆盖时间缩放对轨迹做小幅时间缩放模拟不同速度执行同一任务多视角增强从不同相机视角裁剪图像让模型学到视角不变性。增强的目标是提升数据覆盖度而不是制造虚假样本。如果增强后的物理状态在真实世界中不可能出现反而会误导模型。5.3 数据集管理与版本控制数据集也需要版本控制。一个很小的改动比如重新标注了一批物体框、修复了时间戳同步问题都可能导致模型训练结果变化。因此建议用 DVCData Version Control或类似的工具管理数据集版本让数据集变更和代码变更一样可以追溯。每次实验记录中要写清楚使用的数据集版本、清洗参数、增强策略。这样当模型表现异常时可以快速定位是数据问题还是模型代码问题。实践中很多团队在训练效果不佳时第一反应是调模型结构但最后发现是数据版本漂移或清洗逻辑把关键信息误删了。6. 数据如何驱动模型迭代模仿学习、强化学习与世界模型6.1 模仿学习直接“抄作业”有了大量人类演示数据最直接的利用方式是行为克隆Behavior Cloning这是模仿学习的一种。模型输入当前状态图像、关节角度输出动作关节速度或位置增量使用监督学习方式训练。行为克隆的问题在于“分布偏移”训练时模型看到的是人类演示中的状态分布但执行阶段一旦出现偏差模型可能进入一个从未见过的状态输出就会失控。因此现在更实用的是带数据增强的闭环训练或者结合少量在线数据做 DAgger 风格的迭代式采集。6.2 强化学习与仿真环境当任务目标明确、奖励函数容易定义时强化学习也是重要路线。机器人可以先在仿真环境里大规模试错学习到鲁棒策略再迁移到真实机器人。数据在强化学习里的角色和模仿学习不同。强化学习不直接依赖人类演示数据但它依赖环境反馈数据。仿真环境可以产生海量交互数据这些数据同样需要高效存储和管理。一个典型的做法是用 replay buffer 保存历史经验训练时随机采样。6.3 世界模型与 VLA 模型当前更前沿的方向是让机器人学习“世界模型”不仅学会看到什么做什么还能预测“如果我执行这个动作接下来会发生什么”。世界模型可以帮助机器人做规划减少试错成本。Figure 这类 VLA 模型本质上就是把“视觉 - 语言 - 动作”压缩成一个端到端网络。数据在其中的组织方式直接影响模型能否学到跨任务的泛化能力。未来数据集的发展方向可能是一个大规模、跨场景、带详细语义标注的机器人操作数据集让模型像大模型预训练一样先在通用数据上学会基本能力再到具体场景微调。7. 常见问题与排查思路7.1 高频问题速查表问题现象常见原因解决思路采集数据中图像和关节轨迹时间错位不同传感器时钟源不同未做时间同步在采集端统一定义时钟基准采集后做插值对齐模型训练时 loss 正常但实机动作抖动原始轨迹存在高频噪声或动作标签未做平滑增加轨迹平滑与滤波检查执行频率和关节加速度限制数据量很大但模型泛化能力差数据场景单一不同任务、环境分布不平衡做数据集场景分析补充长尾场景增强数据多样性同一任务多次演示轨迹差异过大任务定义不清晰操作人员习惯不同在任务说明中明确起点状态和结束条件必要时做轨迹标准化仿真训练效果好但真实环境失效Sim-to-Real 差距仿真物理参数与现实不符对真实数据做领域随机化加入真实传感器噪声用真实数据微调标注成本过高过度依赖人工标注缺少自动化工具优先使用自动生成真值的仿真环境开发半自动标注工具训练过程中数据读取成为瓶颈数据集存在大量小文件IO 频繁使用 TFRecord、HDF5、WebDataset 等格式打包数据开启预取与缓存7.2 数据管线排查步骤如果你遇到“模型效果不好但不知道是数据还是代码问题”可以按照以下顺序排查。第一步检查训练时输入的数据是否真的正确。随机挑几条训练样本可视化图像和对应的关节轨迹确认指令、图像、动作三者是匹配的。第二步检查数据分布。统计每个任务的样本量、轨迹长度、动作范围看看是不是某些任务样本极少导致模型学不到。第三步逐层简化对比。先用一小批干净数据训练如果效果正常再逐步增加数据量和数据多样性定位问题出在哪一环。第四步检查清洗逻辑是否破坏了物理约束。有些时候过滤异常帧会把轨迹拦腰截断导致模型学到不连续的动作。8. 最佳实践与工程建议8.1 从第一天起就把数据当作产品来设计很多机器人项目初期为了快速跑通 demo直接把采集到的 ROS bag 堆在硬盘里等需要训练时再想办法解析。这种做法在数据量小的时候没问题但项目一旦进入迭代期就会因为格式混乱、元信息缺失、时间同步不统一而付出巨大代价。建议从第一天起就设计好数据结构。哪怕只是定义几个简单的字段也要保证每一个 episode 都有全局唯一 ID、任务说明、采集时间、设备参数和操作人员信息。数据格式和字段设计好后要形成文档版本更新要做兼容。8.2 自动化质检与人工抽检结合纯人工质检成本太高纯自动质检又会漏掉语义层面的错误。比如轨迹平滑度可以通过算法判断但“杯子是否真的被放到托盘上”就需要人工确认。推荐的做法是自动规则过滤明显异常的数据人工抽检剩下的候选数据并把质检结果作为元信息回写到数据集中。8.3 小步快跑先做少量高质量数据再规模化业界有一个常见误区追求数据量越大越好。实际上对于机器人操作任务万条低质量数据可能不如百条高质量数据有用。建议先采集一小批覆盖典型场景的数据完成从采集、清洗、训练到实机验证的闭环再逐步扩展数据规模。这样既能验证数据管线的正确性也能更早发现采集方案中的问题。8.4 合规与安全边界机器人数据采集涉及人物和物理环境需要重视合规与隐私问题。采集前应说明数据用途避免采集包含个人敏感信息的画面涉及真实机器人运行时要设置急停、速度限制和安全围栏使用仿真环境时也需要注意仿真物理引擎的稳定性。数据存储和传输环节要防止数据集被未授权访问尤其在多人协作采集的场景下要做好访问控制。9. 总结回到最开始的问题Figure 为什么愿意花钱请人类“干活”因为机器人模型吃的不是算力而是物理世界中一粒一粒的数据。谁拥有更高效的数据采集工具、更干净的数据管线、更丰富的数据覆盖度谁就能在具身智能这轮竞赛里跑得更快。对关注机器人技术的开发者来说这件事的参考价值不在于“别人融了多少钱”而在于它印证了一条技术判断数据工程能力正在成为机器人开发的核心能力之一。如果你正在做自己的机器人项目不妨从一个小场景开始先手工采集几十条演示数据认真走一遍清洗、标注、训练、实机验证的流程。把这条数据链路跑通之后再思考怎么扩大规模会比直接堆数据集更稳。