데이터 수집

LinkerBot O6의 전체 녹음 작업 흐름입니다. 리더-팔로어 원격 조작, LeRobot 데이터 세트 형식, 에피소드 품질 체크리스트 및 더 광범위한 데이터 수집 파이프라인에 대한 링크.

O6의 녹음 작업 흐름

하드웨어 준비부터 첫 번째 데이터세트 에피소드까지의 전체 프로세스입니다. 단계를 순서대로 따르세요.

1

하드웨어 및 CAN 인터페이스 확인

O6가 장착되고, 전원이 켜져 있고, CAN 인터페이스가 작동되는지 확인하세요. 달리다 candump can0 계속하기 전에 모터 하트비트 패킷이 나타나는지 확인하십시오.

2

작업 및 카메라 레이아웃 구성

작업 설명을 정의하고 카메라를 올바른 각도로 설정하고 작업 개체를 작업 공간에 배치합니다. 에피소드 전반에 걸쳐 일관된 장면 설정은 정책 일반화에 매우 중요합니다.

3

녹음 세션 시작

다음을 사용하여 LeRobot 제어 스크립트를 실행합니다. record 방법. 이는 에피소드 녹화를 위한 시스템을 준비합니다. 세션은 캡처하기 전에 시작 트리거를 기다립니다.

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/o6-task-name \
  --control.num_episodes=50 \
  --control.single_task="Pick up the blue block"
4

원격 조작 및 에피소드 녹화

O6를 원격 조종하려면 리더 암(또는 간단한 테스트를 위해 키보드)을 사용하세요. 시작/중지 키를 눌러 각 에피소드를 분류하세요. 일관성을 위해 에피소드 사이의 장면을 재설정하세요.

5

에피소드 검토 및 필터링

LeRobot 재생 도구를 사용하여 각 에피소드를 시각적으로 검토하세요. 아래 품질 체크리스트를 통과하지 못한 것은 폐기하십시오. 양보다 질: 훌륭한 에피소드 30개가 평범한 에피소드 100개를 능가합니다.

python -m lerobot.scripts.control_robot \
  --robot.type=linkerbot_o6 \
  --control.type=replay \
  --control.repo_id=your-username/o6-task-name \
  --control.episode=0
6

HuggingFace 허브에 업로드

공유 및 훈련을 위해 필터링된 데이터세트를 HuggingFace Hub에 푸시하세요. 데이터 세트는 LeRobot의 정책 교육에 즉시 사용할 수 있습니다.

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/o6-task-name

O6용 LeRobot 데이터세트 형식

녹화된 각 에피소드는 표준 LeRobot HuggingFace 데이터 세트 형식으로 저장됩니다. 이 형식은 ACT, 확산 정책 및 기타 모든 LeRobot 지원 교육 알고리즘과 직접 호환됩니다.

에피소드 구조

dataset/
  data/
    episode_000000/
      observation.state.npy     # [T, 12] — 6 joint positions + 6 velocities
      action.npy                # [T, 6]  — 6 target joint positions
      observation.images.wrist_cam/
        frame_000000.png        # 640x480 @ 30 fps
        ...
      observation.images.overhead_cam/
        frame_000000.png
        ...
      episode.json              # {task, success, duration_s, num_frames}
  meta_data/
    info.json                   # dataset schema version, robot type, fps
    stats.json                  # per-channel mean, std, min, max

상태와 행동 차원

# observation.state: [T, 12]
# Columns: [j0_pos, j1_pos, j2_pos, j3_pos, j4_pos, j5_pos,
#            j0_vel, j1_vel, j2_vel, j3_vel, j4_vel, j5_vel]
# Units: radians and radians/second

# action: [T, 6]
# Columns: [j0_target, j1_target, j2_target, j3_target, j4_target, j5_target]
# Units: radians

O6 데이터 세트에서 정책 교육

python -m lerobot.scripts.train \
  --dataset_repo_id=your-username/o6-task-name \
  --policy.type=act \
  --output_dir=./checkpoints/o6-act-v1 \
  --training.num_epochs=100

에피소드 품질 체크리스트

훈련 데이터 세트에 포함하기 전에 모든 에피소드에 이 체크리스트를 적용하세요. 나쁜 데이터는 적은 데이터보다 더 나쁩니다.

  • 작업이 성공적으로 완료되었습니다 — 팔이 사람의 개입 없이 목표 상태에 도달했습니다. 부분 완료가 없습니다.
  • 모션은 부드럽고 의도적입니다. — 갑작스런 수정, 오버슈트 또는 갑작스러운 방향 변경이 없습니다. 원활한 시연은 보다 원활한 정책을 교육합니다.
  • 모든 카메라 프레임 존재 — 프레임 손실이 없고 작업 관련 작업 공간 영역이 가려지지 않습니다.
  • 결합 상태는 연속적입니다. — 상태 로그에 40ms보다 큰 시간 단계 간격이 없습니다.
  • 에피소드 기간이 일관됨 — 3초보다 짧거나 30초보다 긴 에피소드는 일반적으로 이상치입니다. 포함하기 전에 검토하세요.
  • 장면이 동일하게 재설정되었습니다. — 에피소드가 시작되기 전에 작업 개체가 동일한 시작 위치로 반환되었습니다.
  • 기록 중 CAN 오류 없음 - 확인하다 candump can0 세션 중 오류 프레임을 기록합니다.
데이터 수집 파이프라인 개요 →

훈련할 준비가 되셨나요?

전체 설정부터 교육까지의 워크플로를 보려면 LinkerBot O6 학습 경로를 따르세요.