
DROID, BridgeData V2 및 Open X-Embodiment는 6자유도 및 7자유도 로봇 팔에서 7차원 말단 효과기 동작으로 변환됩니다. SO-100은 6개의 관절 위치를 사용합니다. 무엇이 전이되고, 무엇이 전이되지 않으며, 대신 무엇을 해야 하는가.
요약
- •세 가지 LeRobot 빌드는 모두 7차원 말단 효과기 액션 [x, y, z, roll, pitch, yaw, gripper]과 패드 슬롯이 있는 8차원 상태라는 하나의 규칙을 공유합니다. SO-100은 6개의 절대 조인트 위치를 사용합니다.
- •이 7차원 벡터는 변환기의 결과물입니다. DROID 자체의 RLDS 액션 필드는 6개의 조인트 속도와 그리퍼 위치이며, action_dict에 데카르트 뷰가 있습니다.
- •네 가지 클록: DROID 15 fps, BridgeData V2 5 fps, google_robot 슬라이스 3 fps, SO-100 녹화 30 fps.
- •자신의 데이터와 병합할 수 없습니다. validate_all_metadata는 fps, robot_type 또는 features 중 다른 첫 번째 항목에서 오류를 발생시키며, 이 세 가지 모두 다릅니다.
- •전이되는 것은 에피소드가 아닌 사전 훈련된 가중치입니다. 오픈 소스 데이터는 pi0의 사전 훈련 혼합의 9.1%를 차지합니다.
- •가장 저렴하고 실용적인 용도는 테스트 픽스처입니다. 주말 동안 녹화하기 전에 파이프라인을 검증하는 데 사용되는, 잘 알려진 2GB, 100개 에피소드의 DROID 샘플입니다.
Google Cloud 버킷에는 백만 궤적 공개 데이터셋이 있고, SO-100 책상 위에는 부품 비용이 110에서 150 EUR인 SO-100이 있습니다. 왜 첫 번째 것이 두 번째 것을 가르칠 수 없을까요? 부분적으로는 가능하지만, 사람들이 예상하는 곳에서는 거의 전이가 일어나지 않으며, 가장 쉬워 보이는 부분은 전혀 작동하지 않습니다.
다음은 DROID, BridgeData V2 및 Open X-Embodiment 안에 무엇이 들어있는지, 각각이 저가형 5-자유도 로봇 팔과 어떻게 충돌하는지, 그리고 대신 무엇을 해야 하는지에 대한 내용입니다. 아래의 모든 숫자는 해당 논문, 데이터셋 카드 또는 소스 파일에서 가져왔습니다.
세 가지 데이터셋이 실제로 포함하는 내용
| DROID | BridgeData V2 | Open X-Embodiment | |
|---|---|---|---|
| 로봇 | Franka Panda, 7 DoF, Robotiq 2F-85 | WidowX 250, 6 DoF, ~4,000 USD rig | 22 embodiments, 60 datasets, 34 labs |
| 규모 | 76k trajectories, 350 hours | 60,096 trajectories | 1M+ trajectories, 527 skills |
| 다양성 | 564 scenes, 84 tasks, 50 collectors | 24 environments, 13 skills | 160,266 tasks, 21 institutions |
| 구성 | all teleoperated | 50,365 teleoperated, 9,731 scripted | per source lab |
| 제어 속도 | 15 Hz | 5 Hz | varies, 3 fps upwards |
| 카메라 | 2 x ZED 2 exterior, 1 x ZED Mini wrist | up to 4, most episodes only the fixed one | whatever the lab used |
| 원시 다운로드 | 1.7 TB RLDS, 8.7 TB raw stereo | JPEG archives | per-dataset TFDS buckets |
여전히 1.7 TB의 RLDS TFRecords를 다운로드하는 사람은 거의 없습니다. 커뮤니티 조직 IPEC-COMMUNITY는 Open X-Embodiment의 대부분을 AV1 비디오가 포함된 LeRobot dataset 형식으로 재출판했으며, DROID는 392 GB에 해당합니다. 이것이 여러분이 작업할 버전이며, meta/info.json을 먼저 읽어야 합니다.
DROID
세 가지 중 가장 표준화된 것입니다. 모든 곳에 동일한 장비: Robotiq 2F-85 그리퍼가 장착된 Franka Panda, 두 개의 조절 가능한 ZED 2 스테레오 카메라 및 손목 ZED Mini, Meta Quest 2 컨트롤러로 원격 조작되며, Polymetis를 통해 15 Hz로 조인트 및 말단 효과기 공간에서 기록되었습니다. 언어 레이블은 나중에 tasq.ai를 통해 추가되었으며, 에피소드당 최대 세 개였습니다.에피소드.
- 76k 궤적, 350시간, 564개 장면, 84개 작업, 3개 대륙에 걸친 50명의 수집가.
- 주요 결과는 단독 훈련이 아닌 공동 훈련입니다. 도메인 내 시연과 50/50으로 혼합된 배치 학습은 분포 내에서 22% 절대 성공률, 분포 외에서 17% 성공률로 다음으로 좋은 방법을 능가했습니다.
- IPEC-COMMUNITY/droid_lerobot: 92,233 에피소드, 27,044,326 프레임, franka, 15 fps, codebase_version v2.0, 180x320 해상도의 AV1 스트림 3개, 392 GB.
- 2 GB, 100개 에피소드로 구성된 디버깅 샘플은 gs://gresearch/robotics/droid_100에 있습니다. 거기서 시작하십시오.
BridgeData V2
취미용 설정에 가장 가까운 구성: WidowX 250 6-DoF 암, 24개 환경과 13개 기술에 걸쳐 5 Hz로 수집된 60,096개의 궤적. 구성에 주목하십시오: 50,365개의 전문가 원격 조작 시연과 무작위 스크립트 기반 픽앤플레이스 정책에서 얻은 9,731개의 궤적, 따라서 약 16%는 인간 시연이 아닙니다. 이는 모방 학습 품질에 중요합니다. 일반적인 다운로드인 IPEC-COMMUNITY/bridge_orig_lerobot는 53,192개 에피소드와 1,893,026개 프레임을 5 fps로 보고하며, robot_type widowx: 논문의 60,096개보다 적으므로, 둘 중 하나를 인용하기보다는 meta/info.json에서 개수를 읽으십시오.
Open X-Embodiment
동일한 의미의 데이터셋은 아니지만, 34개 연구실의 기존 로봇 데이터셋 60개를 22가지 구현체와 백만 개 이상의 궤적을 포함하는 하나의 RLDS 컬렉션으로 통합했습니다. BridgeData V2는 그 안에 bridge_orig로 포함되어 있으며, google_robot 슬라이스인 fractal20220817_data는 3 fps에서 87,212개의 에피소드로 변환됩니다.
이 통합에는 논문에서 명시적으로 언급하는 주의사항이 따릅니다. RT-X 실험을 위해 저자들은 각 소스를 7-DoF 엔드 이펙터 동작으로 변환했지만, 데이터셋 간에 좌표계를 정렬하지 않았으며, 각 로봇의 원래 제어 방식에 따라 동작 값을 절대 또는 상대 위치나 속도로 허용했습니다. 그들의 결론은 동일한 동작 벡터가 다른 로봇에 대해 매우 다른 움직임을 유발할 수 있다는 것입니다.

불일치, 네 부분으로
구현체 불일치는 보통 하나의 모호한 문제로 취급됩니다. 하지만 이는 네 가지이며, 각각 다르게 실패하고, 그중 두 가지는 스크립팅으로 해결할 수 없습니다.
1. 자유도
SO-100은 5개의 팔 관절과 그리퍼를 가지고 있습니다. 모터로 계산하면 6-DoF 팔이며, SmolVLA 논문에서는 그렇게 부릅니다. 위치 결정 메커니즘으로 계산하면 5-DoF이며, LeRobot은 손목이 부분적으로만 방향을 추적하는 5-DOF SO-101에 대한 소프트 방향 IK를 설명하는 역기구학 독스트링에서 그렇게 부릅니다. Franka는 7개의 위치 결정 관절을 가지고 있습니다. 이 차이가 어떤 포즈가 존재하는지를 결정합니다. 5-DoF 팔은 일반적으로 임의의 위치와 방향을 동시에 도달할 수 없으므로, 솔버는 도달할 수 있는 가장 가까운 위치를 반환하며, 이는 시연된 동작과는 다른 동작입니다. 배경: .
# src/lerobot/robots/so_follower/so_follower.py
motors = {
"shoulder_pan": Motor(1, "sts3215", norm_mode_body),
"shoulder_lift": Motor(2, "sts3215", norm_mode_body),
"elbow_flex": Motor(3, "sts3215", norm_mode_body),
"wrist_flex": Motor(4, "sts3215", norm_mode_body),
"wrist_roll": Motor(5, "sts3215", norm_mode_body),
"gripper": Motor(6, "sts3215", MotorNormMode.RANGE_0_100),
}
# action keys are "<motor>.pos"; send_action sync_writes them to
# "Goal_Position" -> a 6-D ABSOLUTE JOINT POSITION command
# openpi/src/openpi/policies/droid_policy.py
def make_droid_example() -> dict:
return {
"observation/exterior_image_1_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/wrist_image_left": np.random.randint(256, size=(224, 224, 3), dtype=np.uint8),
"observation/joint_position": np.random.rand(7), # seven Franka joints
"observation/gripper_position": np.random.rand(1),
"prompt": "do something",
}
# state = concat(joint_position, gripper_pos) -> 8-D따라서 미리 만들어진 DROID 체크포인트는 지름길이 아닙니다. Physical Intelligence는 pi05_droid를 gs://openpi-assets/checkpoints/pi05_droid에 제공하며, 그 폭넓음을 칭찬하는 동일한 README는 이러한 전문가 체크포인트가 사용자 설정에 일반화되지 않을 수 있다고 경고합니다. 그 상태는 8개의 Franka 조인트 숫자이며 이미지 키는 exterior_image_1_left 및 wrist_image_left입니다. 어떤 플래그도 이를 6모터 SO-100 명령으로 바꾸지 않습니다.
2. 액션 벡터가 실제로 의미하는 것
차원성보다 더 깊이. LeRobot 변환에서 세 가지 모두 그리퍼가 데카르트 공간에서 어디로 가야 하는지를 나타냅니다. SO-100은 6개의 서보가 어디로 가야 하는지를 나타냅니다. 변환에는 재형성(reshape)이 아니라 운동학적 모델과 솔버가 필요합니다.
| 속성 | LeRobot 형식의 OXE, DROID 및 Bridge | LeRobot의 SO-100 |
|---|---|---|
| 액션 벡터 | 7차원: x, y, z, 롤, 피치, 요, 그리퍼 | 6차원: 모터당 하나의 목표 위치 |
| 상태 벡터 | 8차원, 패드 슬롯 포함 (google_robot은 쿼터니언 사용) | 6차원, 모터당 하나 |
| 프레임 | 데카르트, 데이터셋 간 정렬되지 않음 | 조인트 공간, 팔당 보정 |
| 절대 또는 상대 | 둘 중 하나, 소스 연구실에서 결정 | 절대 목표 위치 |
| 단위 | 데이터셋별로 정규화된 후 이산화됨 | 기본적으로 도 (use_degrees=True), 그렇지 않으면 -100에서 100 |
| 무음 실패 | 절대값으로 읽힌 델타 | 보정되지 않은 팔 |
openx2lerobot README는 변환하는 모든 데이터셋에 대해 통합된 8차원 상태와 7차원 액션을 문서화하며, pad 슬롯은 여기에서 유래합니다. DROID 자체의 RLDS 스키마는 다릅니다. 최상위 action은 6개의 조인트 속도와 1개의 그리퍼 위치로 구성된 7차원 벡터이며, action_dict 아래에 cartesian_position, cartesian_velocity, joint_position, joint_velocity가 있습니다. openpi는 조인트 공간 뷰를 읽고, LeRobot 빌드는 카르테시안 뷰를 제공합니다. 둘 다 6개의 절대 서보 각도는 아닙니다.
LeRobot은 누락된 부분을 제공합니다. SO follower는 InverseKinematicsEEToJoints 및 ForwardKinematicsJointsToEE 단계를 포함하는 키네마틱스 프로세서를 가지고 있습니다. 그 키는 ee.x, ee.y, ee.z와 회전 벡터 ee.wx, ee.wy, ee.wz 및 ee.gripper_pos이므로, 방향 인코딩조차 파일의 roll-pitch-yaw와 다릅니다. IK 단계는 기본값 0.01인 orientation_weight를 사용하며, 해당 독스트링은 저구동 암의 위치 전용 IK에 대해 0.0으로 설정하라고 명시합니다. 브리지를 구축할 수는 있지만, 빌려온 모든 액션의 방향 절반은 근사치로 유지됩니다.
3. 제어 속도
DROID는 15 Hz, BridgeData V2는 5 Hz, google_robot 슬라이스는 3 fps입니다. pi0의 저자들은 그들의 혼합 중 오픈 소스 부분을 2에서 10 Hz 사이의 저주파 제어라고 설명합니다. LeRobot의 DatasetRecordConfig는 기본적으로 fps 30, episode_time_s 60, reset_time_s 60, num_episodes 50으로 설정됩니다. 5 Hz 데이터로 훈련된 는 하나의 액션이 200 ms를 커버한다는 것을 학습했습니다. 이를 30 Hz로 재생하면 팔이 느리게 움직이고, 단순히 리샘플링하면 그리퍼가 닫히는 프레임이 번집니다. 또한 과도 잘 맞지 않습니다. 100단계 청크는 5 Hz에서 20초, 30 Hz에서는 3.3초입니다.
4. 카메라
BridgeData V2는 50개의 궤적마다 두 개의 카메라 포즈를 무작위로 설정했으며, 프로젝트 페이지에서는 대부분의 데이터가 고정된 시점만을 포함한다고 언급합니다. DROID는 조절 가능한 ZED 2 마운트와 손목 ZED Mini를 사용했습니다. 여러분은 눈대중으로 두 개의 USB 웹캠을 배치했습니다. 카메라 포즈는 ; 시각 인코더가 주로 의존하는 부분이며, 파일 형식에는 포즈가 다르다는 정보가 없습니다.
모든 조각이 잘 맞아떨어져 실행됩니다. 데이터셋이 로드되고, 학습이 시작되며, 손실이 감소하고, 체크포인트가 나타나며, 오류는 없습니다. 그러다 정책이 로봇 팔에서 아무것도 인식할 수 없는 동작을 하고, 여러분은 학습 스크립트에서 버그를 찾는 데 하루를 보냅니다. 버그는 없습니다. 모델은 여러분의 방에 존재하지 않는 로봇에 대한 직교 좌표계 행동 분포를 학습한 것입니다. 하이퍼파라미터가 아니라 손실은 감소하지만 정책은 아무것도 하지 않는 지점에서 시작하세요.
어쨌든 데이터를 병합하려고 하면 어떻게 될까요?
명백한 계획은 수천 개의 DROID 에피소드와 사용자 에피소드 50개를 연결하는 것입니다. LeRobot은 이를 거부하며, 거부 이유는 세 가지 차이점을 명시합니다.
- 1전체 1.7TB 대신 100개 에피소드 샘플을 가져옵니다.
2GB면 구조를 파악하기에 충분합니다.
bashpip install gsutil tensorflow tensorflow-datasets gsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 2RLDS를 LeRobot 형식으로 변환
openx2lerobot은 OXE 표준 변환을 래핑하고 로봇 유형 및 제어 주파수를 주석 처리합니다. README 파일은 이를 convert.sh에 설명합니다.
bashgit clone https://github.com/Tavish9/any4lerobot.git cd any4lerobot/openx2lerobot python openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 3다른 작업을 시작하기 전에 meta/info.json을 읽으십시오.
이 파일이 나머지 작업의 성공 여부를 결정합니다.
bashpython -c "import json;d=json.load(open('meta/info.json'));\ print(d['codebase_version'], d['robot_type'], d['fps']);\ print(d['features']['action']['shape'], d['features']['observation.state']['shape'])" - 4병합을 시도하고 오류를 읽으십시오.
merge는 모든 데이터셋을 로드한 다음, validate_all_metadata가 목록의 첫 번째 데이터셋과 fps, robot_type, 기능을 비교하여 첫 번째 불일치 시 오류를 발생시킵니다.
bashlerobot-edit-dataset \ --new_repo_id you/mixed \ --operation.type merge \ --operation.repo_ids "['you/droid100_lerobot', 'you/my_so100_task']" # ValueError: Same fps is expected, but got fps=30 instead of 15.
참조 값은 목록에 가장 먼저 나열된 데이터셋에서 가져오므로, 메시지는 DROID의 15fps 대신 사용자의 30fps에 대해 불평합니다. fps를 수정하면 robot_type 검사에 걸리고, 이를 수정하면 액션에 대해 6이 아닌 7로 기능 검사에 걸립니다. 어떤 순서로도 통과할 수 없으며, sanity_check_dataset_robot_compatibility를 통해 기록 시에도 동일한 보호 장치가 실행됩니다.
현재 LeRobot main에서 so100_follower와 so101_follower는 모두 하나의 공유 SOFollowerRobotConfig에 등록되어 있으므로, 실제 기록의 문자열이 반드시 예상하는 것과 같지는 않습니다. 자신의 meta/info.json에서 이를 읽고, 비활성화해야 했던 검사를 무언가를 알려주는 검사로 간주하십시오.
그렇다면 실제로 무엇이 전이될까요?
에피소드가 아닌 가중치입니다. 모든 최신 범용 정책은 사전 훈련에서 일부를 흡수했으며, 된 출시된 에서 시작하면, 적절하게 처리할 수 있는 컴퓨팅 자원을 가진 사람들이 이미 조정한 것을 물려받게 됩니다. pi0의 논문은 그 비율에 대해 솔직하게 밝히고 있습니다. 타임스텝으로 계산했을 때, 사전 훈련 혼합의 9.1%는 OXE, Bridge v2, DROID를 포함한 오픈 소스 데이터입니다. 이 수치는 pi0의 것이며, 각 공급업체의 혼합은 다릅니다.
- 시각 및 언어 사전 지식: 인코더는 수천 개의 주방과 머그컵을 보았으며 "빨간 블록"이 무엇을 의미하는지 알고 있습니다.
- 조작 구조에 대한 사전 지식: 접근, 닫기, 들어 올리기, 운반, 놓기 등, 숫자가 다르더라도 구현체에 독립적입니다.
- 테스트를 위한 검증된 데이터셋. 작업이 100개의 DROID 에피소드를 과적합할 수 없다면, 문제는 설정에 있습니다.
- 참조점: 소규모 데이터셋 도메인에서 RT-1-X는 원래 방법 또는 RT-1보다 평균 성공률이 50% 더 높았으며, RT-2-X는 새로운 기술에서 RT-2를 약 3배 능가했습니다.
- 사용 가능한 동작 감독 없음. 7차원 데카르트 목표는 6차원 조인트 명령이 아닙니다.
- 카메라 포즈 전이 없음. 데이터에는 포즈가 다르다는 정보가 없습니다.
- 타이밍 전이 없음: 30fps 레코더에 대해 3, 5, 15fps 소스.
- 그리퍼 전이 없음. Robotiq 2F-85와 STS3215에 장착된 3D 프린팅된 조는 힘, 스트로크, 동역학에서 차이가 있습니다.
- 규모만으로는 저자들에게도 충분하지 않았습니다. 대규모 데이터셋 도메인에서 RT-1-X는 해당 데이터셋만으로 훈련된 RT-1을 능가하지 못했습니다.
- 필요한 자체 에피소드 수의 감소 없음.
| 모델 계층 | 전이되나요? | 이유 |
|---|---|---|
| 시각 인코더 | 예, 강력하게 | 객체와 장면은 구현체에 독립적입니다 |
| 언어 접지 | 예 | 명령은 텍스트이며 기하학적 형태가 아닙니다 |
| 교차 모달 융합 | 대부분 | 프롬프트에 명시된 객체에 집중합니다 |
| 고유수용성 인코더 | 아니요 | 입력 차원과 조인트 의미론이 다릅니다 |
| 액션 헤드 | 아니요 | 사용자가 속하지 않은 7차원 데카르트 공간에서 훈련되었습니다 |
| 정규화 통계 | 아니요, 그리고 위험합니다 | 외부 통계는 모든 명령을 이동시킵니다 |
이것이 바로 SmolVLA이 저가형 로봇 팔에서 다르게 작동하는 이유입니다. 해당 논문은 Hugging Face에서 481개의 커뮤니티 데이터셋을 선택했으며, 이는 구현 유형, 에피소드 수, 데이터 품질 및 프레임 커버리지로 필터링되었습니다: 22.9K 에피소드, 10.6M 프레임으로 실제 SO-100 및 SO-101 로봇 팔에서 평가되었습니다. 작고 일치하는 것이 크고 불일치하는 것보다 낫습니다. 다음에서 비교해보세요: ACT against SmolVLA.
고려해 볼 세 가지 경로
경로 A: 이미 데이터를 학습한 체크포인트에서 미세 조정
대부분의 사람들은 이 경로를 선택해야 합니다. DROID나 Open X-Embodiment는 건드리지 마세요: 사전 학습이 이미 교차 구현 데이터를 흡수한 정책을 선택하고, 자신만의 에피소드를 기록한 다음, 미세 조정하세요.
| 정책 | 매개변수 | 최소 에피소드 | 데이터셋 형식 | GPU 등급 | 추론 | 기본 체크포인트 |
|---|---|---|---|---|---|---|
| GR00T N1.7 | ~3 B, 미세 조정으로 학습된 ~40 M | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 단계당 152 ms | nvidia/GR00T-N1.7-3B |
| GR00T N1.5 | ~3 B | 50 | LeRobot v2.0 or v2.1 | A100 or H100 80 GB | 165 ms | nvidia/GR00T-N1.5-3B |
| Pi0.5 | ~3 B, PaliGemma 백본 | 50 | LeRobot v3.0 | A100 or H100 80 GB | 485 ms | lerobot/pi05_base |
| SmolVLA | ~450 M | 30 | LeRobot v3.0 | RTX 4090 or any 24 GB | 245 ms | lerobot/smolvla_base |
| ACT | ~80 M | 50 | LeRobot v3.0 | RTX 4090 or any 24 GB | 20 ms | 없음, 처음부터 |
ACT는 솔직한 엣지 케이스입니다. 기본 모델이 없으므로 공개 데이터가 전혀 도달하지 않습니다. 액션 단계당 20ms로 빠른 루프를 닫을 수 있는 다섯 가지 중 유일한 모델이므로 자동으로 불리한 점은 아닙니다. ACT 페이지에서 설명합니다. 다음을 사용하여 작업별로 선택하세요: 다섯 가지 모두 비교, GR00T N1.7 대 Pi0.5, 그리고 85개 모델에 대한 332개의 벤치마크 결과는 아레나에서 확인할 수 있습니다.
경로 B: DROID를 테스트 픽스처로 사용
100 에피소드 샘플은 이번 달에 다운로드할 수 있는 최고의 2GB이며, 훈련용이 아닙니다. 이는 정확하다고 알려진 데이터셋입니다. 변환기, 로더 및 짧은 GPU 작업을 실행하십시오. 실패하는 모든 것은 저렴할 때 발견된 인프라 버그입니다. NVIDIA는 대규모로 동일한 작업을 수행합니다. GR00T N1.7 카드에는 SimplerEnv의 Bridge 및 Fractal, DROID 및 LIBERO를 위한 네 가지 후처리 학습 변형이 나열되어 있습니다.
경로 C: 직접 의도적으로 기록하기
30개에서 50개 는 76,000개 옆에서는 적게 들리지만, 여러분의 에피소드만이 여러분의 팔, 카메라, 테이블을 사용한다는 점을 기억해야 합니다. LeRobot의 기본 설정에서 50개의 에피소드는 실제 시간으로 100분입니다. 다음을 참조하십시오: , 및 .

공개 데이터에서 작동하는 정책을 얻는 두 가지 방법
All of this runs on your own machine plus a rented GPU. Knowing the manual path matters because when something breaks you will know which layer broke.
- 1Install LeRobot with the extras the scripts need
The record and train entry points each declare their own extra.
bashpip install 'lerobot[core_scripts]' # lerobot-record pip install 'lerobot[training]' # lerobot-train pip install gsutil tensorflow tensorflow-datasets - 2Get a small, known-good slice
100 DROID episodes, 2 GB.
bashgsutil -m cp -r gs://gresearch/robotics/droid_100 ~/tensorflow_datasets/ - 3Convert to LeRobot form
Writes the unified 8-D state and 7-D action, annotating robot type and control frequency.
bashpython openx_rlds.py \ --raw-dir ~/tensorflow_datasets/droid_100/1.0.0 \ --local-dir ~/lerobot_droid100 \ --repo-id you/droid100_lerobot \ --use-videos - 4Check the version against your trainer
The converter README documents v3.0 output; the published IPEC-COMMUNITY datasets report v2.0. GR00T wants v2.0 or v2.1 and crashes on v3.0; Pi0.5, SmolVLA and ACT want v3.0. Mind the gap: the only conversion script on LeRobot main goes 2.1 to 3.0.
bashpython src/lerobot/scripts/convert_dataset_v21_to_v30.py \ --repo-id=you/droid100_lerobot - 5Record your own episodes
Defaults: 30 fps, 60 s per episode, 60 s reset, 50 episodes. The teleoperator type is so100_leader.
bashlerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 \ --robot.cameras="{front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 \ --dataset.repo_id=you/so100_pick_block \ --dataset.num_episodes=50 \ --dataset.single_task="Pick up the red block and put it in the bowl" - 6Fine-tune on your data only
Weights from public data, actions from your own. Do not mix the datasets.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=you/so100_pick_block \ --policy.device=cuda \ --batch_size=4 \ --steps=20000
Not in training; the GPU job is hours. The conversion, the version mismatch and the moment you find your dataset is v2.0 and your trainer wants v3.0 are days. Read dataset rejected as v3 first.
The platform removes the GPU and pipeline plumbing. It does not remove the embodiment mismatch: point the trainer at a converted DROID dataset and you get a policy trained on Franka actions, exactly as you would locally.
- 1Pick a policy, not a dataset
The five trainable policies, with parameter counts, GPU tiers and latencies, are at /policies.
- 2Record with the desktop client
It writes LeRobot-format datasets, episodes, camera streams and joint states, straight out of a teleop session. No conversion step to get wrong.
- 3Or bring a dataset you already have
The training form accepts one from /directory, a Hugging Face repo id, or your own machine. A repo id means a converted OXE dataset will load, and the mismatch loads with it.
- 4Train on a rented GPU
The backend rents a card on a spot market by required VRAM. SmolVLA or ACT on 24 GB: 2 to 5 hours, about 1 to 3 USD. GR00T or Pi0.5 on A100 or H100: 3 to 6 hours, about 4 to 12 USD. See /pricing.
- 5Serve it back to the arm
/api/inference/pod auto-provisions a GPU pod serving the policy; the local client talks to that endpoint. Pods carry an idle watchdog and destroy themselves, so nothing keeps billing silently.
Inference has to sit next to the servos for fast tasks. The control loop is 20 to 485 ms per action step depending on the model, and public-internet round trips turn a working policy into a hesitant one. Remote inference is fine for slow pick-and-place, not fast reactive motion.
The platform helps with the boring parts: the right format for the right arm at the right frame rate, and no babysitting a spot instance. It helps with nothing else in this article.

각 경로의 비용
| 경로 | 저장 공간 | 사람 시간 | GPU 비용 | 팔을 움직일 가능성 |
|---|---|---|---|---|
| 변환된 DROID 단독 | 392 GB | 변환에 소요되는 시간(일) | 4 to 12 USD | 매우 낮음, 잘못된 액션 공간 |
| 에피소드와 병합된 DROID | both | blocked by validate_all_metadata | n/a | 없음, 실행되지 않음 |
| SmolVLA, 30~50개 자체 에피소드 | a few GB | 100 min recording | 1 to 3 USD | 높음 |
| GR00T N1.7, 50개 자체 에피소드 | a few GB | 100 min recording | 4 to 12 USD | 높음 |
| ACT 처음부터, 50개 자체 에피소드 | a few GB | 100 min recording | 1 to 3 USD | 높음, 20 ms 추론 |
| 테스트 픽스처로서의 DROID 샘플 | 2 GB | 오후 한나절 | one short run | 높음, 유효성 검사로서 |
비대칭성이 핵심입니다. 가장 많은 데이터를 빌리는 경로는 가장 비싸고 팔을 움직일 가능성이 가장 낮습니다. 자신의 텔레오퍼레이션 두 시간 미만이 다른 사람의 Franka 1테라바이트보다 낫습니다. 아직 로봇 팔이 없으신가요? /live 가입 없이 실제 SO-100을 스트리밍합니다. 그런 다음 첫 번째 정책 훈련하기, 그리고 SO-100에서 SmolVLA에 대한 특정 가이드를 참조하세요.
2 GB DROID 샘플을 다운로드하고 파이프라인을 검증하는 데 사용하십시오. 나머지 1.7 TB는 무시하십시오. 고정 카메라로 한 가지 작업의 에피소드 50개를 기록하십시오. SmolVLA를 먼저 미세 조정하십시오. 24 GB 카드에서 최소 30개 에피소드로 가장 저렴하게 반복할 수 있기 때문입니다. 그 다음 동일한 데이터로 GR00T N1.7을 시도하십시오. 벤치마크가 아닌 귀하의 작업에서 비교하십시오.
팔에 맞는 데이터셋을 기록하세요
데스크톱 클라이언트는 텔레옵 세션에서 LeRobot 형식 데이터셋을 직접 기록합니다: 올바른 팔, 올바른 프레임 속도, 올바른 액션 공간. RLDS 변환이나 재매핑이 필요 없습니다.
데스크톱 클라이언트 받기DROID로 정책을 훈련하고 SO-100에서 실행할 수 있나요?▾
직접적으로는 불가능합니다. LeRobot 빌드에서 DROID 액션은 Franka Panda 로봇의 15 fps에서 7차원 엔드 이펙터 명령입니다. 원본 RLDS에서는 6개의 조인트 속도와 그리퍼 위치입니다. SO-100은 6개의 절대 조인트 위치를 사용합니다. 역운동학 레이어가 필요하며, 5자유도(DoF) 손목으로는 임의의 6자유도(DoF) 포즈를 재현할 수 없습니다.
DROID 또는 Bridge 에피소드를 제 SO-100 에피소드와 혼합할 수 있나요?▾
아니요. validate_all_metadata는 동일한 fps, robot_type 및 feature schema를 요구하며 첫 번째 불일치에서 ValueError를 발생시킵니다. 이 세 가지 모두 다릅니다: 15 또는 5 fps 대 30, franka 또는 widowx 대 사용자 팔, 7 대 6의 액션 형태. 검사를 통과하기 위해 메타데이터를 다시 작성해도 의미론적 문제는 해결되지 않습니다.
그렇다면 Open X-Embodiment는 저가형 팔에는 쓸모가 없나요?▾
아니요, 하지만 그 가치는 에피소드가 아닌 사전 훈련된 가중치를 통해 전달됩니다. OXE, Bridge v2 및 DROID를 포함한 오픈 소스 데이터셋은 pi0의 사전 훈련 혼합의 9.1%를 차지하며, NVIDIA는 Bridge, Fractal, DROID 및 LIBERO에서 후속 훈련된 GR00T N1.7 변형을 제공합니다. 할 수 없는 것은 해당 에피소드를 자신의 기록에 추가하는 것입니다.
어떤 정책이 공개된 교차-구현 데이터로부터 가장 많은 이점을 얻나요?▾
Pi0.5와 GR00T 모델은 가장 많은 교차-구현 사전 훈련을 포함하지만, SmolVLA는 저가형 팔에서 가장 잘 작동하는 경우가 많습니다. SmolVLA의 사전 훈련 세트는 481개의 커뮤니티 데이터셋, 22.9K 에피소드 및 10.6M 프레임으로 구성되어 있으며, 실제 SO-100 및 SO-101 팔에서 평가되었습니다. ACT는 그 반대입니다: 기본 모델이 없으며, 액션 단계당 20 ms가 소요됩니다.
실제로 제 에피소드가 얼마나 필요한가요?▾
SmolVLA의 경우 30개, GR00T N1.7, GR00T N1.5, Pi0.5 및 ACT의 경우 50개입니다. LeRobot의 기본 설정인 에피소드당 60초 및 60초 리셋을 기준으로 하면, 50개 에피소드는 실제 시간으로 100분입니다. 빌려온 교차-구현 데이터는 이 수치를 낮추지 않습니다.
Sources
- DROID: 대규모 실제 로봇 조작 데이터셋
- DROID 문서: 다운로드 크기 및 RLDS 에피소드 스키마
- BridgeData V2: 대규모 로봇 학습을 위한 데이터셋
- BridgeData V2 프로젝트 페이지: 구성 및 카메라 범위
- Open X-Embodiment: 로봇 학습 데이터셋 및 RT-X 모델
- Open X-Embodiment 프로젝트 페이지
- google-deepmind/open_x_embodiment: 데이터셋 목록 및 RT-1-X 체크포인트
- any4lerobot: openx2lerobot 변환기 및 통합 8차원 상태, 7차원 동작
- IPEC-COMMUNITY/droid_lerobot: meta/info.json 및 저장소 크기
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: 3 fps의 google_robot 슬라이스
- huggingface/lerobot: SO 팔로워, 운동학 프로세서, 집계 및 기록 구성
- openpi: DROID 정책 입력 및 pi05_droid 체크포인트
- pi0: 일반 로봇 제어를 위한 비전-언어-액션 흐름 모델
- SmolVLA: 저렴하고 효율적인 로봇 공학을 위한 비전-언어-액션 모델
Sources
- DROID: A Large-Scale In-The-Wild Robot Manipulation Dataset
- DROID docs: download sizes and the RLDS episode schema
- BridgeData V2: A Dataset for Robot Learning at Scale
- BridgeData V2 project page: composition and camera coverage
- Open X-Embodiment: Robotic Learning Datasets and RT-X Models
- Open X-Embodiment project page
- google-deepmind/open_x_embodiment: dataset list and RT-1-X checkpoints
- any4lerobot: the openx2lerobot converter and its unified 8-D state, 7-D action
- IPEC-COMMUNITY/droid_lerobot: meta/info.json and repo size
- IPEC-COMMUNITY/bridge_orig_lerobot: meta/info.json
- IPEC-COMMUNITY/fractal20220817_data_lerobot: the google_robot slice at 3 fps
- huggingface/lerobot: SO follower, kinematics processor, aggregate and record configs
- openpi: DROID policy inputs and the pi05_droid checkpoint
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started