데이터 수집

SO-101은 LeRobot 커뮤니티에서 가장 일반적인 데이터 수집 무기 중 하나입니다. 이 가이드에서는 하드웨어 연결부터 에피소드 녹화, 데이터세트를 HuggingFace로 푸시하는 것까지 모든 내용을 다룹니다.

녹음 전

녹음을 위한 하드웨어 설정

SO-101 데이터 수집 설정은 CAN 버스 암보다 간단합니다. 모든 것이 USB를 통해 실행됩니다. 연결할 내용은 다음과 같습니다.

📷

작업 공간 카메라

위 또는 옆에서 작업 공간을 가리키는 USB 웹캠. 고정된 위치에 장착하세요. 에피소드 사이에 이동하지 마세요. 확인하다: ls /dev/video*

🔒

손목 카메라(옵션)

엔드 이펙터에 장착된 소형 USB 카메라. 1인칭 시점을 추가합니다. 두 번째 USB 포트가 필요합니다. 르로봇은 다중 카메라 동기화를 지원합니다.

🔌

팔로어 암(USB 직렬)

작업을 실행하는 팔입니다. USB 서보 컨트롤러를 통해 연결합니다. 다음으로 포트를 확인하세요. ls /dev/ttyUSB*

👤

리더 암(USB 직렬)

준수 모드의 두 번째 SO-101 - 손으로 움직여 추종자를 조종하세요. 두 번째 USB 포트에 연결합니다. 최고 품질의 데모를 제공합니다.

ROS 없음, 커널 드라이버 없음: CAN 버스 설정과 달리 SO-101 데이터 수집 스택은 전적으로 USB 직렬을 통해 실행됩니다. Ubuntu가 필요 없이 MacBook 또는 Windows 노트북에서 녹음할 수 있습니다.

녹음 작업 흐름

단계별 녹음 작업 흐름

1

교정이 최신인지 확인

암이 분해되거나 이동된 경우 각각의 새 세션 전에 보정을 실행하십시오. 보다 소프트웨어 → 교정.

python -m lerobot.scripts.control_robot \
  --robot.type=so101 --robot.port=/dev/ttyUSB0 \
  --control.type=calibrate
2

카메라 피드 확인

python -c "
import cv2
for i in range(4):
    cap = cv2.VideoCapture(i)
    if cap.isOpened():
        print(f'Camera {i}: OK')
    cap.release()
"
3

팔을 홈 포지션으로 이동

팔로워 암을 홈 위치(완전히 확장되고 엔드 이펙터가 앞쪽을 향함)에 놓습니다. Teleop을 시작하기 전에 리더 암을 동일한 위치로 재설정하십시오.

4

작업 장면 설정

개체를 일관된 시작 위치에 배치합니다. 필요한 경우 표를 표시하십시오. 정책 일반화에는 일관된 초기 조건이 중요합니다.

5

르로봇 녹화 시작

python -m lerobot.scripts.control_robot \
  --robot.type=so101 \
  --robot.port=/dev/ttyUSB1 \
  --robot.leader_arms.main.type=so101 \
  --robot.leader_arms.main.port=/dev/ttyUSB0 \
  --control.type=record \
  --control.fps=30 \
  --control.repo_id=your-username/so101-pick-place-v1 \
  --control.num_episodes=50 \
  --control.single_task="Pick the red block and place it in the bin" \
  --control.warmup_time_s=3 \
  --control.reset_time_s=8

LeRobot은 각 에피소드 전에 메시지를 표시합니다. 워밍업 중에 기록이 시작되기 전에 리더 암의 그립을 조정할 수 있습니다.

6

에피소드 검토 및 재생

python -m lerobot.scripts.visualize_dataset \
  --repo_id=your-username/so101-pick-place-v1 \
  --episode_index=0

품질이 낮은 에피소드는 즉시 삭제하세요. 카메라 프레임 삭제, 불규칙한 관절 속도 또는 불완전한 작업 실행을 확인하세요.

7

HuggingFace 허브로 푸시

huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
  --repo_id=your-username/so101-pick-place-v1
데이터세트 형식

SO-101 데이터 세트 형식

SO-101은 표준 LeRobot / HuggingFace 데이터 세트 형식을 사용합니다. 이는 OpenArm, Koch 및 기타 LeRobot 무기와 동일한 스키마입니다. 이는 귀하의 데이터 세트가 전체 LeRobot 교육 생태계와 직접 호환된다는 것을 의미합니다.

에피소드 데이터 스키마

각 에피소드 Parquet 파일의 필드
관찰.상태 float32[6] 관절 위치(도)(6 DOF - 5개 관절 + 그리퍼)
관찰.이미지.* 비디오 경로 카메라별 MP4 동영상 파일의 프레임 참조
행동 float32[6] 리더 팔의 대상 관절 위치
타임스탬프 float64 Unix 타임스탬프(초)
프레임_인덱스 정수64 에피소드 내 프레임 번호
에피소드_색인 정수64 데이터 세트 내의 에피소드 번호
다음.완료 부울 각 에피소드의 마지막 프레임에서 True
task_index 정수64 작업 설명 조회 테이블에 대한 색인

SO-101 관련 참고사항

SO-101 동작 공간은 라디안이 아닌 각도(Feetech 서보 장치) 단위의 관절 위치를 사용합니다. 크로스 플랫폼 교육을 위해 SO-101과 OpenArm 데이터 세트를 혼합하는 경우 먼저 다음의 통계를 사용하여 두 데이터 세트를 라디안으로 정규화하세요. meta/stats.json.

품질 보증

수집된 데이터에 대한 품질 체크리스트

허브로 푸시하기 전에 각 녹음 세션 후에 이 작업을 실행하세요.

  • 1
    에피소드 길이가 일정함 이상치 길이의 에피소드는 일반적으로 작업자가 일시 중지하거나 그리퍼가 미끄러지거나 녹음이 중단되었음을 의미합니다. 중앙값의 ±30% 이내로 유지하세요.
  • 2
    서보 속도 스파이크 없음 STS3215 서보는 대역폭이 제한되어 있습니다. observation.state 직렬 버스 드롭아웃을 나타냅니다. 해당 에피소드를 삭제하세요.
  • 3
    카메라 프레임은 관절 데이터와 정렬됩니다. 카메라 타임스탬프와 공동 타임스탬프가 서로 20ms 이내에 있는지 확인하세요. USB 직렬 대기 시간으로 인해 장시간 녹음 시 드리프트가 발생할 수 있습니다. 100개의 에피소드마다 카메라를 다시 동기화합니다.
  • 4
    리더 팔 추적이 원활했습니다. 기록 중에 팔로어가 눈에 띄게 지연된 경우(USB 직렬 지연으로 인해) 작업 레이블이 관찰에서 시간 이동됩니다. 확인하려면 다시 재생하세요.
  • 5
    각 에피소드가 시작될 때 작업 장면이 일관되었습니다. 동일한 위치와 방향의 개체입니다. SO-101의 낮은 반복성(CAN 암 대비)은 이를 특히 중요하게 만듭니다. 초기 조건의 변화는 정책 교육에 해를 끼칩니다.
  • 6
    그리퍼 열림/닫힘이 명확하게 기록됩니다. SO-101 그리퍼 상태는 조인트 6입니다. 파악 이벤트가 데이터에서 점진적인 드리프트가 아닌 명확한 조인트 위치 전환(열림 → 닫힘)을 표시하는지 확인합니다.
다음 단계

데이터 세트에서 정책 교육

데이터 세트가 품질 검사를 통과하면 LeRobot을 사용하여 ACT 또는 확산 정책을 교육합니다.

기차 ACT

python -m lerobot.scripts.train \
  --policy.type=act \
  --dataset.repo_id=your-username/so101-pick-place-v1 \
  --policy.chunk_size=100 \
  --training.num_epochs=5000 \
  --output_dir=outputs/act-so101-pick-place

열차 확산 정책

python -m lerobot.scripts.train \
  --policy.type=diffusion \
  --dataset.repo_id=your-username/so101-pick-place-v1 \
  --training.num_epochs=8000 \
  --output_dir=outputs/diffusion-so101-pick-place

커뮤니티 데이터세트: SO-101은 LeRobot 생태계에서 가장 큰 커뮤니티 데이터 세트 컬렉션 중 하나입니다. 자신의 데이터를 수집하기 전에 확인하세요. 기존 SO-101 데이터세트용 HuggingFace Hub — 기존 기본 데이터 세트를 미세 조정하고 기록 시간을 절약할 수 있습니다.

데이터 세트가 준비되었나요? 훈련을 시작하세요.

데이터 세트를 HuggingFace로 푸시하고 ACT 또는 확산 정책을 교육하세요.