my_roboTwin2.0_training
收藏资源简介:
RoboTwin 2.0是一个模拟双臂操作演示数据集,用于协同训练和领域覆盖消融研究。数据集包含五个预训练变体:pre_full(全随机化)、pre_none(无随机化)、pre_bg(仅背景纹理随机化)、pre_dt(仅干扰物随机化)和pre_wa(仅工作区域随机化),每个变体有250个episode,任务为“place_a2b_right”(将物体放置到右侧)。此外还有两个小规模下游目标任务:narrow_place_container_plate和narrow_move_pillbottle_pad,各50个episode。数据采用LeRobot v2.1格式,机器人类型为aloha-agilex(双臂AgileX/ALOHA风格),帧率为30fps。每个episode包含头相机和右腕相机的320x240视频流,动作表示为14维的末端执行器delta(左臂固定,右臂移动),状态表示为20维的绝对姿态(包括位置、旋转6D表示和夹爪开合)。语言标注使用整数索引,指向meta/tasks.jsonl中的任务描述,每帧索引会循环切换不同短语。数据集特别说明:仅右臂移动,左臂动作维度为常量;动作delta应累加在先前命令的位姿上,而非观测的位姿。
RoboTwin 2.0 is a simulated dual-arm manipulation demonstration dataset for co-training/domain coverage ablation studies. The dataset includes five pretraining variants: pre_full (full randomization), pre_none (no randomization), pre_bg (only background texture randomization), pre_dt (only distractor randomization), and pre_wa (only workspace randomization), each with 250 episodes for the task place_a2b_right (placing an object to the right). Additionally, there are two small-scale downstream target tasks: narrow_place_container_plate and narrow_move_pillbottle_pad, each with 50 episodes. Data is in LeRobot v2.1 format, with robot type aloha-agilex (dual-arm AgileX/ALOHA style) at 30fps. Each episode contains 320x240 video streams from the head camera and right wrist camera. Actions are represented as 14-dimensional end-effector deltas (left arm fixed, right arm moving), and states as 20-dimensional absolute poses (including position, 6D rotation representation, and gripper open/close). Language annotations use integer indices pointing to task descriptions in meta/tasks.jsonl, with indices cycling through different phrases per frame. Special notes: only the right arm moves; left arm action dimensions are constant; action deltas should be accumulated on the previous commanded pose, not the observed pose.
RoboTwin 2.0 — 覆盖率控制的训练数据集
此数据集是RoboTwin 2.0模拟基准下生成的双臂操作演示数据,已导出为LeRobot v2.1格式,用于协训练/域覆盖率消融实验——包含五个仅在场景生成器的视觉与空间变化量上不同的预训练集,以及两个用于微调和评估的小型下游目标任务集。该数据集的采集代码位于:https://github.com/Shua-Kang/my_roboTwin2.0
数据变体与随机化轴
所有预训练变体使用相同任务(place_a2b_right)、相同机器人、相同控制器和相同的片段预算,仅沿三个随机化轴变化:
| 变体 | 背景纹理 | 干扰物类别 | 工作区域(物体x) |
|---|---|---|---|
pre_full |
100 | 10 | 全范围 |
pre_none |
1(无) | 0 | x固定 |
pre_bg |
100 | 0 | x固定 |
pre_dt |
1(无) | 10 | x固定 |
pre_wa |
1(无) | 0 | 全范围 |
pre_full三个旋钮全开,pre_none全关,三个单轴变体各自隔离一个旋钮(BG=背景,DT=干扰物,WA=工作区域)。
发布片段中的实测指标
这些不是配置值,而是数据实际包含的内容:
| 实测量 | pre_full | pre_none | pre_bg | pre_dt | pre_wa |
|---|---|---|---|---|---|
| 不同的背景纹理数 | 100 | 0 | 99 | 0 | 0 |
| 不同的干扰物类别数 | 8 | 0 | 0 | 8 | 0 |
| 每个片段的平均干扰物数 | 1.50 | 0 | 0 | 1.49 | 0 |
| 物体x跨度(米) | 0.206 | 0.027 | 0.033 | 0.036 | 0.193 |
实测干扰物类别数为8而非配置的10(250个片段中两个类别从未被采样),pre_bg实现了100种纹理中的99种。"x固定"变体仍显示2.7–3.6厘米的跨度,因为即使工作区旋钮关闭,放置仍有抖动;"全范围"变体的跨度约为其6倍,约0.20米。
相机设置(v2,2026-09-08重新生成)
所有数据集于2026-09-08以新的头部相机位置重新渲染;轨迹、种子、场景布局和动作与v1完全一致,仅observation.images.head流(及其内外参)发生了变化。
| v1(旧) | v2(本次发布) | |
|---|---|---|
| 头部相机位置(米) | (-0.032, -0.45, 1.35) | (0.10, -0.65, 1.50) |
| 俯仰角(自水平向下) | 53.1° | 52° |
| 垂直视场角 | 37° | 43° |
| 分辨率 | 320x240 | 320x240 |
| 机器人本体/桅杆/左臂 | 可见 | 隐藏(仅渲染) |
原因:使用v1相机时,右臂在起始位置时不在画面内,因此每个片段的起始帧完全不显示机器人。v2相机位于机器人底座后方更远处,使得整个右臂从第0帧起可见。将相机拉远会使机器人桅杆和空闲的左臂进入视野,因此除右臂外的所有连杆均设为不可见(RenderBodyComponent.visibility = 0;物理和碰撞不变——左臂仍然存在,只是不被绘制)。右手腕相机保持不变。
在RoboTwin任务配置中:camera.head_camera_type: D435_fov43,camera.head_camera_pose: {position: [0.10, -0.65, 1.50], forward: [0, 0.6157, -0.7880], left: [-1, 0, 0]},hide_robot_links: all_but_right。评估配置使用相同设置,因此在测试时训练于此数据的策略会看到相同的渲染。
仓库中的数据集
每个目录是一个自包含的LeRobot v2.1数据集,位于 <name>/lerobot_delta_hr/ 下(hr = 头部+右手腕相机,delta = 末端执行器增量动作)。
预训练——任务 place_a2b_right
| 路径 | 片段数 | 帧数 |
|---|---|---|
pre_full_place_a2b_right/lerobot_delta_hr |
250 | 36,991 |
pre_none_place_a2b_right/lerobot_delta_hr |
250 | 36,929 |
pre_bg_place_a2b_right/lerobot_delta_hr |
250 | 37,099 |
pre_dt_place_a2b_right/lerobot_delta_hr |
250 | 36,968 |
pre_wa_place_a2b_right/lerobot_delta_hr |
250 | 37,191 |
下游目标任务
| 路径 | 片段数 | 帧数 |
|---|---|---|
narrow_place_container_plate/lerobot_delta_hr |
50 | 7,823 |
narrow_move_pillbottle_pad/lerobot_delta_hr |
50 | 7,324 |
两个目标任务均为刻意很小(50个演示)、窄覆盖的集合——正是预训练变体旨在协助的对象。
数据格式
- LeRobot v2.1(
meta/info.json→codebase_version: v2.1),robot_type: aloha-agilex,30 fps。 data/chunk-000/episode_XXXXXX.parquet—— 每个片段一个parquet文件。videos/chunk-000/<video_key>/episode_XXXXXX.mp4—— 每个片段两个视频流:observation.images.head和observation.images.right_wrist,均为 320x240(shape: [240, 320, 3]),h264/yuv420p编码,无音频。meta/—— 包含info.json、stats.json、episodes.jsonl、episodes_stats.jsonl、tasks.jsonl,以及GR00T风格的modality.json,提供状态和动作向量的子切片信息。
action — 14维,末端执行器增量
每臂为 [dx, dy, dz, rotvec(3), gripper],左臂在前:
| 维度 | 含义 |
|---|---|
| 0:3 | 左臂末端平移增量 |
| 3:6 | 左臂末端旋转增量(旋转向量/轴角) |
| 6 | 左臂夹爪(绝对值,0闭合 … 1张开) |
| 7:10 | 右臂末端平移增量 |
| 10:13 | 右臂末端旋转增量(旋转向量) |
| 13 | 右臂夹爪(绝对值) |
observation.state — 20维,绝对值
每臂为 [pos(3), rot6d(6), gripper(1)],左臂在前:维度 0:10 为左臂,10:20 为右臂。旋转采用6D连续表示(旋转矩阵前两列),非欧拉角或四元数。
语言标注
annotation.human.task_description 和 annotation.human.task_name 为 meta/tasks.jsonl 的整数索引,逐帧存储。索引0为粗略任务名称(如 place a2b right);描述索引逐帧旋转该片段的所有表述并循环,因此一个149帧的片段会循环约99个描述同一目标的不同句子。不要假设每个片段只有一个句子——根据需要采样帧自身的索引,或汇集该片段的完整索引集合。
片段示例表述:
Use the right arm to place the rubikscube featuring white, green, orange tiles right of the curved black stapler. Set the puzzle rubikscube with 3x3 grid per side carefully on the black stapler with rectangular bases right side.
重要注意事项
只有右臂移动
本集合中每个片段均固定为右臂操作。左臂动作维度因此恒定:action[0:6] 每帧均为0,action[6](左臂夹爪)固定为1.0。observation.state[0:10] 同样为固定的左臂起始姿态(每维标准差 ≤ 2.5e-4)。若在所有14个动作维度上训练,其中六个无信号、一个是常数——请相应进行归一化,或切出 action[7:14]。
基于上一次已命令的姿态进行增量积分
动作为增量,参考坐标至关重要。将每个增量累加到最后命令的姿态上,而非新观测到的姿态。基于观测值重新定基准会将控制器的稳态跟踪误差累积到每一步,产生每片段约58毫米的漂移,足以使抓取失败。请维护一个内部命令姿态目标,将预测的增量加上去并发送该值。
python
正确做法
cmd = cmd + delta # cmd 从第一次观测初始化一次
错误做法——每步泄漏跟踪误差
cmd = observe_ee() + delta
加载方式
python from lerobot.common.datasets.lerobot_dataset import LeRobotDataset
ds = LeRobotDataset( "ShuaKang/my_roboTwin2.0_training", root="pre_full_place_a2b_right/lerobot_delta_hr", # 或将子文件夹下载到本地 )
或直接拉取一个子文件夹:
bash hf download ShuaKang/my_roboTwin2.0_training --repo-type dataset --include "pre_full_place_a2b_right/lerobot_delta_hr/*" --local-dir ./robotwin_cov
由于该仓库并列存放多个独立的LeRobot数据集,每个子文件夹必须作为独立的数据集根目录——没有单一的顶层 meta/。
引用
RoboTwin 2.0——使用此数据时请引用上游基准。此特定集合的采集与导出代码参见:https://github.com/Shua-Kang/my_roboTwin2.0



