ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

搭建机器人仿真资产库:V2D Challenge的GLB纹理网格与URDF文件完整使用指南

搭建机器人仿真资产库:V2D Challenge的GLB纹理网格与URDF文件完整使用指南

【免费下载链接】video_to_data_challenge

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/video_to_data_challenge
点击查看免费下载

V2D Challenge(Video to Data Challenge)是 NVIDIA 推出的机器人操作基准数据集,内置39 个带纹理的 GLB 3D 网格与10 个 URDF 刚体描述文件,可直接用于搭建机器人操作仿真场景。本文面向新手,带你从零理解这些仿真资产的目录结构、坐标约定,以及在 MuJoCo、Isaac Sim 等引擎中的加载方式。


📦 资产总览:两条赛道、39 个物体

V2D Challenge 按"赛道(Track)"组织数据。其中与 3D 资产直接相关的是Track 2(Robotic Grounding)和Track 3(Egocentric),两者共享 LeRobot v2.1 数据集格式:

赛道物体数量网格格式附加资产
Track 2(两个 Tier 各一套)29 个GLB 纹理网格地面平面 JSON + 支持面 USD
Track 310 个GLB 纹理网格URDF 刚体描述

💡 Track 2 的tier_1_multiview_caption与tier_2_synthetic_noise两个子目录各自包含完整的一套mesh/,物体完全相同,只是轨迹噪声级别不同。搭建仿真资产库时只需选一套即可。

所有资产均在 CC BY-4.0 许可证下开放,可自由用于商业和非商业项目。


🔍 Track 2:29 个物体的 GLB 纹理网格

文件位置与命名规则

Track 2 的物体网格位于 track_2/tier_1_multiview_caption/mesh/(Tier 2 路径将tier_1_multiview_caption替换为tier_2_synthetic_noise),目录结构非常规整:

mesh/ ├── baseball_bat/baseball_bat.glb ├── blue_trash_can/blue_trash_can.glb ├── tall_bar_stool/tall_bar_stool.glb ├── ...(共 29 个文件夹)

核心规则:文件夹名 = 物体名 = 网格文件名。例如tall_bar_stool对应mesh/tall_bar_stool/tall_bar_stool.glb。

这个规则在 track_2/tier_1_multiview_caption/meta/info.json 中以模板形式声明:

"mesh_path": "mesh/{object_name}/{object_name}.glb"

每个物体还附带一句自然语言描述(prompt),方便你用 VLM 或检索系统做物体识别。完整的 29 个物体清单可在 track_2/tier_2_synthetic_noise/mesh/ 中逐一查看,涵盖棒球棒、咖啡杯、滑板、熨斗、垃圾桶等日常物品。

地面平面与支持面

Track 2 为每个 episode 额外提供了两类场景几何,可直接导入仿真器构建环境:

文件格式说明
ground_plane/{sequence_id}.jsonJSON地面平面方程ax+by+cz+d=0,OpenCV 世界坐标系
support_surface/{sequence_id}_support.usdaUSD支撑面(圆柱/箱体),g1_retarget_world坐标系,单位:米

例如 2026-03-12_15-06-36_spray_bottle_left_desk_ground_02.json 记录了喷壶放置桌面场景的地面参数,对应的 support.usda 则定义了桌面支撑圆柱体。

每个 episode 具体使用哪个ground_plane和support_surface,记录在 track_2/tier_1_multiview_caption/meta/episodes_metadata.jsonl 中,每行包含ground_plane、support_surface、mesh三个路径字段。


🔧 Track 3:10 个物体 + URDF 刚体描述

网格与 URDF 一一对应

Track 3 是完整度最高的仿真资产包,位于 track_3/public/,每个物体同时提供 GLB 网格和 URDF 描述:

物体网格URDF
白色锅mesh/white_pot/white_pot.glburdf/white_pot_rigid.urdf
锅盖子mesh/white_pot_lid/white_pot_lid.glburdf/white_pot_lid_rigid.urdf
米色杯mesh/beige_cup/beige_cup.glburdf/beige_cup_rigid.urdf
蓝色杯mesh/blue_cup/blue_cup.glburdf/blue_cup_rigid.urdf
小扫帚mesh/mini_sweeper/mini_sweeper_{visual,collision}.glburdf/mini_sweeper_rigid.urdf
小簸箕mesh/mini_dust_pan/mini_dust_pan.glburdf/mini_dust_pan_rigid.urdf
塑料碗架mesh/plastic_dish_rack/plastic_dish_rack.glburdf/plastic_dish_rack_rigid.urdf
水壶mesh/water_pitcher/water_pitcher.glburdf/water_pitcher_rigid.urdf
木块 1 / 木块 2mesh/wooden_piece_{1,2}/...glburdf/wooden_piece_1_rigid.urdf / urdf/wooden_piece_2_rigid.urdf

⚠️ 注意:mini_sweeper、wooden_piece_1、wooden_piece_2这三个物体分别提供了视觉网格(*_visual.glb,高精度渲染用)和碰撞网格(*_collision.glb,简化版物理交互用),其余 7 个物体视觉与碰撞共用同一个 GLB。

URDF 内部结构速读

以 track_3/public/urdf/beige_cup_rigid.urdf 为例,一个完整的 URDF 包含以下关键节点:

  • <robot>:机器人名称,如track3_beige_cup
  • <mujoco>:MuJoCo 编译器配置(balanceinertia="true"自动平衡惯性、discardvisual="false"保留视觉网格)
  • <link>:单个刚体链接,内含
    • <inertial>:质心偏移 + 质量(默认 0.3 kg 占位值)+ 惯性张量(由碰撞网格三角面均匀估计)
    • <visual>:引用../mesh/{name}/{name}.glb用于渲染
    • <collision>:引用碰撞网格用于物理求解

所有网格路径都是相对于 URDF 文件位置的相对路径(../mesh/...),因此把mesh/和urdf/目录整体移动时引用不会断。

💡 URDF 文件头部的注释明确说明:Track 3 不提供实测物理属性,0.3 kg 是占位质量,惯性参数是碰撞网格的均匀三角面估计。若你的仿真对动力学精度敏感,建议替换为实测值。


📐 坐标约定:放对位置的关键

仿真中最常见的坑是"网格放错了位置"。V2D Challenge 的坐标约定如下:

Track 3(track_3/README.md):

  • pose格式:[x, y, z, qw, qx, qy, qz],平移单位米,四元数w 在前
  • 姿态是world_T_object,即以扫描网格自身坐标系为参考系——把网格放到记录的 pose 上,它就和真实物体在视频中的位置一致
  • x、y 按每个 episode 的可见物体均值居中;z 不居中,保持物理高度(桌面静置约 0.61 m)
  • visible为false时 pose 全零,使用前务必先按visible过滤

Track 2:

  • 地面平面ax+by+cz+d=0定义在源 OpenCV 世界坐标系下
  • 支撑面 USD 使用g1_retarget_world坐标系,单位为米
  • 网格路径模板mesh/{object_name}/{object_name}.glb

🚀 快速上手:在仿真器中加载资产

方案一:MuJoCo(推荐 Track 3 资产)

Track 3 的 URDF 原生支持 MuJoCo(已内置<mujoco>配置块)。只需:

  1. 将 track_3/public/mesh/ 和 track_3/public/urdf/ 目录拷贝到你的工作区
  2. 在.xml模型中通过<include>引入 URDF:<include file="white_pot_rigid.urdf"/>
  3. 用 parquet 中记录的 pose(世界 → 物体)设置初始位姿即可

方案二:Isaac Sim / Isaac Gym(推荐 Track 2 资产)

Track 2 的支撑面 USD 文件可直接导入 Isaac Sim。典型流程:

  1. 加载support_surface/*.usda搭建桌面、地面等支撑环境
  2. 从ground_plane/*.json读取平面参数,放置地面
  3. 用mesh/{name}/{name}.glb作为物体外观,结合 parquet 中的轨迹数据设置运动

方案三:Blender / Unity / Unreal(通用 GLB 加载)

所有 GLB 文件均为标准 glTF 2.0 二进制格式,可直接被主流 3D 引擎导入:

  • Blender:File → Import → glTF 2.0
  • Unity:直接拖入Assets目录
  • Unreal:File → Import选择 GLB

导入后即可作为静态道具或动态刚体参与场景搭建。


📝 常见问题与注意事项

问题解答
GLB 文件打不开 / 内容异常?仓库使用 Git LFS 存储大文件,需先git lfs pull拉取真实文件
物体 name 和网格路径怎么对应?Track 3:name就是文件夹名,如white_pot→mesh/white_pot/white_pot.glb;Track 2 同理,路径模板见info.json的mesh_path
Track 2 两个 Tier 的 mesh 有何区别?完全相同,只是所属 Tier 目录不同。选一套即可
URDF 里的 0.3 kg 能用吗?作为快速原型可以;追求动力学精度请替换实测质量与惯性
数据在哪个坐标系?Track 3 是扫描网格自身坐标系(world_T_object);Track 2 支撑面是g1_retarget_world,地面平面是 OpenCV 世界系
想查看某 episode 跟踪了哪些物体?Track 3 的 parquet schema metadata 中objects字段列出了该 episode 的物体名列表

📂 关键路径速查

资产相对路径
Track 2 网格(29 个)track_2/tier_1_multiview_caption/mesh/
Track 2 地面平面track_2/tier_1_multiview_caption/ground_plane/
Track 2 支撑面 USDtrack_2/tier_1_multiview_caption/support_surface/
Track 3 网格(10 个)track_3/public/mesh/
Track 3 URDF(10 个)track_3/public/urdf/
Track 3 相机标定track_3/public/meta/camera_calibration.json
Track 3 数据集说明track_3/README.md
总 READMEREADME.md

掌握以上结构和约定后,你就可以将 V2D Challenge 的 39 个纹理网格与 URDF 资产灵活组合,搭建出覆盖桌面操作、厨房场景、户外道具等多种场景的机器人仿真资产库,直接服务于策略训练与可视化回放。

【免费下载链接】video_to_data_challenge

项目地址:https://ai.gitcode.com/hf_mirrors/nvidia/video_to_data_challenge
点击查看免费下载
上一篇:Angular Flex-Layout终极指南:从零开始掌握响应式布局
下一篇:QQ空间历史说说怎么全量备份?Python一键导出保姆级教程

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进