13. BEHAVIOR-1K 相关数据生产方法汇总

目标:为 QIU-26 梳理 BEHAVIOR-1K / OmniGibson 相关的数据生产路线,覆盖 MoMaGen 类生成方法、真机遥操数据、SimKit 可落地的中间产物,以及后续和亚军讨论时需要确认的问题。

13.1. 结论先行

BEHAVIOR-1K 不是单一“渲染数据集”,更适合作为任务语义 + 家庭场景 + 物体状态变化的上游来源。对 SimKit 来说,建议把数据生产拆成四层:

  1. 符号任务样本:从 BDDL/problem 文件抽取 activity、object categories、init/goal predicates,生成轻量 JSONL;不启动渲染器。

  2. 仿真轨迹/视频样本:在 OmniGibson/BEHAVIOR 环境或 SimKit 的 HSSD/SAPIEN 桥接环境中执行任务,输出 RGB-D/segmentation/action/state。

  3. 生成式任务扩增:用 MoMaGen 类方法或 LLM/VLM 生成新的家庭任务、对象摆放、语言指令和多步子目标,再回写为 BDDL/manifest。

  4. 真机遥操/回放数据:用 R1 Pro 或其他硬件采集人类示范,沉淀为 LeRobot/episode 格式;再用仿真做 replay、domain randomization 和失败样本补齐。

不要把第 1 层符号样本当作物理或抓取成功证据;它只能证明任务语义覆盖。真实抓取/放置仍需要 force/lift/contact/table-force 等定量指标。

13.2. 方法 1:BDDL 符号任务样本

输入

  • BEHAVIOR-1K / BDDL activity definitions。

  • 每个 problem 的 objects、init、goal 段。

产物

  • activity / problem 标识。

  • 物体类别列表、物体数量。

  • init/goal predicate 名称和数量。

  • source path / source commit(推荐保留)。

适合用途

  • 统计任务覆盖:哪些任务需要容器、清洁、搬运、开关、加热等 predicate。

  • 生成 SimKit manifest 的候选任务条目。

  • 给 LLM/VLM 做任务扩写、语言指令生成、分解成 skill primitives。

局限

  • 没有资产几何、质量、摩擦、碰撞、可达性信息。

  • 不能证明 R1 Pro 可以执行。

  • 不应该触发 OmniGibson/Isaac/SAPIEN 渲染;cron 中优先保持 renderer-free。

SimKit 落地建议

  • 继续保留 renderer-free 采样脚本模式:读取 /tmp/behavior1k_probe 或官方 sparse checkout,通过 git ls-tree / git show 读取 BDDL。

  • 输出 JSONL + summary,并写明 provenance:remote、commit、activity、problem path。

  • 后续再单独做 asset/physics/render validation,不和符号采样混在一个结论里。

13.3. 方法 2:OmniGibson / BEHAVIOR 仿真轨迹生产

输入

  • BEHAVIOR tasks、scene/object assets、机器人配置、action primitives。

  • 可选:导航、抓取、放置、开关、容器交互等高级 primitive。

产物

  • 多相机 RGB / depth / segmentation。

  • robot proprioception、object poses、predicate state transitions。

  • action traces:base、arm、gripper、primitive label。

  • 成功/失败标签:goal predicate 是否达成。

适合用途

  • 长程家庭任务数据。

  • 语言条件策略训练样本。

  • 失败恢复、状态变化、object affordance 数据。

关键风险

  • BEHAVIOR starter primitives / assisted grasp 不等价于真实物理抓取。

  • 如果用 sticky/assisted grasp,需要在 metadata 中明确 grasp_mode=assisted/sticky

  • OmniGibson 资产和物理栈较重,cron 中不要和 HSSD/SAPIEN GPU 渲染任务并行抢资源。

13.4. 方法 3:MoMaGen 类生成式数据生产

这里把 MoMaGen 归为“生成式任务/场景/轨迹扩增”路线:先用模型生成任务设定、对象组合、语言目标或动作草图,再用仿真/真机验证过滤。

可能生成的内容

  • 家庭任务描述:例如整理、清洁、准备食物、搬运物体。

  • 对象集合和初始布局:哪些类别、哪些 receptacle、哪些状态。

  • 语言指令和多步子目标。

  • 机器人 primitive 序列草图:navigate → grasp → place / toggle / open。

推荐过滤链路

  1. 生成候选任务或布局。

  2. 转成 BDDL-like symbolic record 或 SimKit manifest。

  3. 做资产解析:对象类别是否有可用 mesh/collision。

  4. 做可达性/碰撞粗筛。

  5. 用仿真 replay 生成观测和状态标签。

  6. 只把通过物理/渲染验证的样本标记为可训练数据。

关键风险

  • 生成任务容易语义合理但物理不可执行。

  • 对象类别可能没有本地资产或比例不合理。

  • 语言/符号成功不等于 contact-level success。

13.5. 方法 4:真机遥操数据与回放

输入

  • R1 Pro 或其他机器人真机遥操 episode。

  • 多相机视频、joint/base/gripper 状态、operator command、任务语言。

产物

  • LeRobot-style episode:observation、action、timestamp、metadata。

  • 真实接触、抓取、失败恢复数据。

  • 可用于行为克隆、VLA fine-tuning、仿真 replay 对齐。

和 BEHAVIOR-1K 的关系

  • 用 BEHAVIOR task taxonomy 规范真机任务命名和目标状态。

  • 用 BDDL predicate 作为 episode 标注模板:例如 inside, ontop, clean, open

  • 用仿真生成 long-tail 场景,用真机补足真实 contact / hardware distribution。

关键风险

  • 真机数据 expensive;需要明确任务优先级。

  • 需要 camera calibration、time sync、action normalization。

  • 遥操动作不能直接等价于仿真 controller action,需要记录 controller schema。

13.6. 方法 5:SimKit/HSSD/R1 Pro 桥接数据

SimKit 当前更适合做 BEHAVIOR-1K 的“桥接验证层”:把符号任务/生成任务中的部分 tabletop manipulation 子问题落到 HSSD/SAPIEN/R1 Pro 中验证。

推荐切片

  • 先做 stage-only / room render:确认相机、桌面、机器人位置。

  • 再做 object-inclusive scene:记录 object load report 和 DeviceLost debug package。

  • 对 tabletop grasp,只承认定量成功:

    • object lift 达阈值;

    • object-finger force 在 close/lift 阶段持续;

    • table support unloading;

    • gripper 未完全空闭合;

    • object-to-EEF / fingertip corridor 保持。

不建议

  • 不要把单张好看的 MP4 当成功数据。

  • 不要把 HSSD full GLB visual mesh 当作物理碰撞,除非显式创建 collision proxy。

  • 不要从历史 gate row 直接开始 planner;必须先通过 state-capture / frame-0 consistency gate。

13.7. 建议的数据 schema

{
  "source": {
    "dataset": "behavior1k|hssd|real_robot",
    "activity": "putting_away_groceries",
    "problem": "problem0",
    "source_path": "bddl3/.../problem0.bddl",
    "source_commit": "..."
  },
  "task": {
    "language_instruction": "put the can on the shelf",
    "objects": [{"name": "can_1", "category": "can"}],
    "init_predicates": ["ontop", "inside"],
    "goal_predicates": ["inside"]
  },
  "execution": {
    "mode": "symbolic_only|sim_replay|real_teleop|assisted_grasp",
    "robot": "r1pro",
    "controller_schema": "base+right_arm+right_gripper",
    "success": false,
    "success_metrics": {
      "predicate_goal_satisfied": false,
      "object_lift_m": 0.0,
      "object_finger_force_active_steps": 0,
      "table_unloaded": false
    }
  },
  "artifacts": {
    "jsonl": "...",
    "video": "...",
    "overlay_stats": "...",
    "debug_summary": "..."
  }
}

13.8. 和亚军讨论的问题清单

  1. 目标数据是偏 symbolic planning / VLA training / manipulation policy / video-language grounding 哪一类?

  2. MoMaGen 期望输出的是 task text、BDDL、scene layout、还是 executable trajectories?

  3. 真机遥操优先覆盖哪些 BEHAVIOR task family:整理、清洁、厨房、开关门/抽屉、搬运?

  4. R1 Pro 数据是否需要和 LeRobot schema 对齐?action 是 joint position、EEF pose、primitive label,还是混合?

  5. 是否允许 assisted/sticky grasp 数据进入训练集?如果允许,metadata 中如何区分物理抓取和辅助抓取?

  6. 对每条样本的最低验收标准是什么:只要 goal predicate,还是必须包含 contact/lift/table-force 证据?

  7. BEHAVIOR/OmniGibson 资产许可、下载、缓存位置和版本锁定如何管理?

  8. SimKit 第一阶段是否只做 renderer-free BDDL summary + 少量 HSSD tabletop proof-of-concept?

13.9. 推荐下一步

  1. 用 renderer-free BDDL sampler 生成 20–50 条 symbolic task samples,确认任务 taxonomy。

  2. 选 3 个 tabletop-friendly task family,人工映射到 SimKit/HSSD/R1 Pro 子任务。

  3. 为每个子任务写 manifest:对象类别、支持面、初始/目标 predicate、需要的 primitive。

  4. 先产出失败/成功都可用的 diagnostic episodes,不急于声明抓取成功。

  5. 和亚军确认 MoMaGen 与真机遥操的角色分工:谁负责生成候选,谁负责过滤验证,最终训练数据 schema 是什么。