데이터 수집
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 노트북에서 녹음할 수 있습니다.
단계별 녹음 작업 흐름
교정이 최신인지 확인
암이 분해되거나 이동된 경우 각각의 새 세션 전에 보정을 실행하십시오. 보다 소프트웨어 → 교정.
python -m lerobot.scripts.control_robot \
--robot.type=so101 --robot.port=/dev/ttyUSB0 \
--control.type=calibrate
카메라 피드 확인
python -c "
import cv2
for i in range(4):
cap = cv2.VideoCapture(i)
if cap.isOpened():
print(f'Camera {i}: OK')
cap.release()
"
팔을 홈 포지션으로 이동
팔로워 암을 홈 위치(완전히 확장되고 엔드 이펙터가 앞쪽을 향함)에 놓습니다. Teleop을 시작하기 전에 리더 암을 동일한 위치로 재설정하십시오.
작업 장면 설정
개체를 일관된 시작 위치에 배치합니다. 필요한 경우 표를 표시하십시오. 정책 일반화에는 일관된 초기 조건이 중요합니다.
르로봇 녹화 시작
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은 각 에피소드 전에 메시지를 표시합니다. 워밍업 중에 기록이 시작되기 전에 리더 암의 그립을 조정할 수 있습니다.
에피소드 검토 및 재생
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/so101-pick-place-v1 \
--episode_index=0
품질이 낮은 에피소드는 즉시 삭제하세요. 카메라 프레임 삭제, 불규칙한 관절 속도 또는 불완전한 작업 실행을 확인하세요.
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 교육 생태계와 직접 호환된다는 것을 의미합니다.
에피소드 데이터 스키마
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 — 기존 기본 데이터 세트를 미세 조정하고 기록 시간을 절약할 수 있습니다.