LeRobot Path(으)로 돌아가기

레로봇 데이터셋 형식을 이해

레로봇 학습 경로 2부. 레로봇 데이터 세트 형식을 학습: 파켓 + MP4 저장, 에피소드 구조, 관찰/행동 스케마. HuggingFace Hub에서 기존 데이터 세트를 로드하고 시각화하십시오. ~ 1.5 시간.

6의 2단체 · 데이터셋 형식 · ~ 1.5시간

자신의 데이터를 기록하기 전에, 레로봇 데이터 세트가 정확히 어떤 내용을 포함하고 있는지 이해하십시오. 에피소드가 어떻게 구성되어 있는지, 어떤 필드가 저장되고 있는지, HuggingFace Hub에서 기존 데이터 세트를 어떻게 로드하고 검사하는지를 이해하십시오.

표준 형식 이 중요 한 이유

로봇 학습은 역사적으로 다른 데이터 형식을 사용하는 모든 실험실에서 고통받았습니다. 이는 데이터 세트를 공유하거나 다른 로봇의 데이터를 결합하거나 시스템 간 사전 훈련된 정책을 사용하는 것이 불가능합니다. 레로봇 데이터 세트 형식은 모든 지원된 하드웨어에서 작동하는 단일 스키마를 정의함으로써 이것을 해결합니다. SO-100에 기록된 데이터 세트는 동작 공간의 크기가 일치하는 한 OpenArm에 대한 정책을 변환하지 않고 훈련하는 데 사용될 수 있습니다.

녹음하기 전에 형식을 이해하면 훈련 중에 데이터에 구조적인 문제가 발견되지 않을 수 있습니다. 또한 디버깅을 훨씬 더 쉽게 만듭니다. 훈련이 실패하면 데이터 세트를 먼저 살펴볼 수 있습니다.

데이터 세트 구조: 파켓 + MP4

각 LeRobot 데이터 세트는 다음과 같은 구조를 가진 디렉토리에 있습니다:

my_dataset/ ── meta/ │ ── info.json # 데이터셋 메타데이터 (로봇 타입, fps, 모다리티) │ ── tasks.jsonl # 작업 설명 각 에피소드 │ ── stats.safetensors # mean/std for normalization ── data/ │ ── chunk-000/ │ ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ── ──

파켓 (수적 시간 시리즈) 와 MP4 (비디오) 사이의 분단은 의도적입니다. 파켓은 공동 상태와 동작을 효율적으로 압축하고 에피소드 인덱스별로 빠른 무작위 액세스를 지원합니다. MP4는 이미지 순서로 설계된 비디오 코덱을 사용하여 원료 이미지를 텐서로 저장하는 것보다 1030배 더 작은 파일을 생성합니다.

각 에피소드 에 핵심적 인 분야

Field Shape Description
observation.state [T, D] Joint positions (and optionally velocities) at each timestep. D is the number of joints (e.g., 7 for SO-100: 6 joints + 1 gripper).
action [T, D] Target joint positions commanded at each timestep. Same dimensionality as observation.state.
timestamp [T] Time in seconds since the start of the episode, at 50Hz by default (0.02s per step).
episode_index scalar Integer index of this episode within the dataset. Used by the dataloader to group timesteps into episodes.
frame_index [T] Frame number within the episode (0 to T-1). Matches the frame number in the corresponding MP4.
next.done [T] Boolean flag — True at the last timestep of an episode. Used to signal episode boundaries during training.
task_index scalar Index into tasks.jsonl. Enables multi-task datasets where different episodes correspond to different instructions.

** 카메라 필드:** 카메라 이미지는 MP4 파일로 저장되며, 파켓에 저장되지 않습니다. 파켓은 T0를 순위 픽셀 데이터보다는 경로 참조 (프레임 인덱스 + 에피소드 인덱스) 로 포함합니다. 레로봇 데이터 로더는 디코드를 처리하고 투명하게 동기화합니다.

기존 데이터 세트를 로드 하고 시각화

HuggingFace Hub에서 T1 데이터 세트를 로드하고 3개의 에피소드를 시각화하십시오. 이 데이터 세트는 두동형 로봇의 스크립트 디스플레이를 포함하고 을 삽입합니다. 잘 구조화된 데이터 세트가 어떻게 보이는지에 대한 깨끗한 예제입니다.

소스 ~/lerobot-env/bin/activate # 공개 데이터 세트에서 3 에피소드를 시각화하십시오 python -m lerobot.scripts.visualize_dataset \ --repo-id lerobot-raw/aloha_sim_insertion_scripted \ --episode-indices 0 1 2 \ --output-dir ~/dataset-viz/ # 브라우저에서 생성된 HTML를 열으십시오 # 파일 경로를 터미널에 인쇄하여, 예를 들어 ~/dataset-viz/index.html

시각화기는 동기화된 공동 상태 음반과 함께 각 에피소드의 비디오 재생을 가진 HTML 페이지를 생성합니다.

  • ** 부드러운 관절 궤도** 날카로운 톱니가 기록 유물이나 팔 충돌을 나타냅니다
  • ** 일정 한 에피소드 길이가** 길이가 크게 달라지는 에피소드 (예를 들어 50 대 400 프레임) 은 종종 일부 시범을 나타냅니다.
  • 지착 상태의 변경 마지막 공동 차원은 조작 작업에 대해 명확한 바이너리 전환 (오픈 → 닫은 → 열린) 을 표시해야 합니다.

# lerobot.common.datasets.lerobot_dataset import LeRobotDataset dataset = LeRobotDataset("lerobot-raw/aloha_sim_insertion_scripted") print(f"Episodes: {dataset.number_episodes}") print(f"Total frames: {len(datasets)}") print(f"FPS: {dataset.fps}") print(f"Features: {(listdataset.features.keys.f}}) #

선택적 참조 데이터 세트

RCSV 데이터 세트 컬렉션을 탐구

RCSV 데이터 세트 라이브러리는 레로봇 형식으로 큐레이션된 로봇 학습 데이터 세트를 포함합니다. 자신의 작업을 기록하기 전에 다른 작업과 하드웨어가 어떻게 보이는지 이해하기 위해 그것들을 탐색하십시오.

2부대 완료...

당신은 성공적으로 T2에서 3개의 에피소드를 시각화하고 HTML 출력이 브라우저에서 열립니다. 당신은 파이톤으로 로드된 파키트 파일에서 관찰. 상태, 행동, 시간표 필드를 식별할 수 있습니다. 당신은 파키트 vs MP4에서 저장되는 것 사이의 차이를 이해합니다. 당신은 3 단위에서 자신의 데이터 세트를 기록할 준비가되어 있습니다.

[← 경로 개요로 돌아가]