양손 데이터 수집
DK1은 처음부터 양방향 원격 조작 데이터 수집을 위해 설계되었습니다. 이 가이드에서는 암과 카메라 배선, 리더/팔로워 기록 절차 실행, 양방향 데이터 세트 스키마 이해, ACT 훈련을 위한 데이터 준비에 대해 다룹니다.
이중 수동 녹음을 위한 하드웨어 연결
이중 수동 녹화에는 단일 암 설정보다 더 많은 연결이 필요합니다. LeRobot을 시작하기 전에 모든 연결을 확인하십시오. 세션 중간에 연결이 누락되면 에피소드가 손상됩니다.
리더암 (Dynamixel XL330)
리더 암에서 호스트 PC까지 USB-C. 이 팔은 작업자의 손에 의해 움직입니다. Teleop 중에 실수로 연결이 끊어지는 것을 방지하려면 짧은 케이블(1m)을 사용하십시오. 확인하다: ls /dev/ttyACM0
팔로어 암(DM4340 + 전원)
팔로어 암에서 호스트 PC까지의 USB-C와 DC 전원 공급 장치. 팔로어 암에는 외부 전원이 필요합니다. 절대로 USB 전원만으로 작동하지 마십시오. 확인하다: ls /dev/ttyACM1
손목 카메라(팔로워 암)
팔로어 암의 엔드 이펙터에 USB 웹캠을 장착합니다. 이것이 기본 조작 카메라입니다. USB 3.0을 통해 연결합니다. 확인하다: ls /dev/video0
오버헤드/작업 공간 카메라
이중 수동 작업 공간 위의 카메라를 높이 ~70cm, 아래로 30° 각도로 고정했습니다. 두 팔을 동시에 포착합니다. 두 번째 USB 3.0 포트. 확인하다: ls /dev/video2
중요: 이중 수동 동기화. 두 개의 암과 두 개의 카메라를 갖춘 DK1의 가장 중요한 데이터 품질 요소는 동기화입니다. LeRobot은 호스트 PC 시계의 모든 스트림에 타임스탬프를 찍습니다. 타임스탬프 왜곡을 최소화하려면: (1) 카메라와 암에 별도의 USB 버스 컨트롤러를 사용하고, (2) 안정적인 클럭을 갖춘 USB 3.0 허브를 사용하고, (3) CPU 거버너를 성능 모드로 설정합니다. 목표: 4개 스트림 모두 사이에서 5ms 미만의 왜곡이 발생합니다. 왼쪽 팔과 오른쪽 팔 상태 간의 10ms 비동기화로 인해 접촉이 많은 작업에서 ACT 훈련이 실패할 수 있습니다.
리더/팔로워 원격조종 기록 절차
모든 DK1 녹음 세션에 대해 다음 단계를 따르십시오. 양손 절차에는 단일 팔 수집에 비해 몇 가지 추가 단계가 있습니다.
세션 전 안전 점검
두 팔 사이의 공유 작업 공간을 지웁니다(1.5m × 1m). 두 팔이 충돌 없이 공유 작업 공간에 도달하는지 확인합니다. 녹화하기 전에 E-stop을 테스트하십시오. 보다 안전 페이지.
양팔을 연결하고 확인하세요.
# Verify serial ports are available
ls /dev/ttyACM*
# Expected: /dev/ttyACM0 (leader) and /dev/ttyACM1 (follower)
# Quick connection test
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=none
카메라 피드 확인
LeRobot을 시작하기 전에 두 카메라 모두 스트리밍되어야 합니다. 누락된 카메라는 널 이미지 프레임이 있는 에피소드를 자동으로 생성합니다.
python3 -c "
import cv2
for i in [0, 2]:
cap = cv2.VideoCapture(i)
if cap.isOpened():
ret, frame = cap.read()
print(f'Camera {i}: OK ({frame.shape[1]}x{frame.shape[0]})')
else:
print(f'Camera {i}: FAILED')
cap.release()
"
팔을 시작 위치로 이동
리더 암을 수동으로 텔레오프 시작 위치로 이동합니다. 팔로어 팔이 이를 미러링합니다. 준비 기간이 시작되기 전에 리더 암을 2~3초 동안 안정되게 잡고 동기화를 확인하세요.
작업 장면 설정
두 팔의 일관된 시작 위치에 물체를 놓습니다. 시작 구성의 사진을 찍습니다. 양손 작업의 경우 테이프로 정확한 위치를 표시합니다. 두 팔 궤적이 호환되어야 하므로 장면 일관성이 더욱 중요합니다.
양방향 르로봇 녹화 시작
source ~/.venvs/dk1/bin/activate
python -m lerobot.scripts.control_robot \
--robot.type=bi_dk1_follower \
--robot.config=~/.lerobot/robots/dk1_bimanual.yaml \
--control.type=record \
--control.fps=30 \
--control.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--control.num_episodes=50 \
--control.single_task="Pick up block with left arm, place in bin with right arm" \
--control.warmup_time_s=5 \
--control.reset_time_s=15
더 오래 사용하세요 reset_time_s 양손 작업의 경우 - 두 개의 팔을 재설정하면 단일 팔 설정보다 장면에 더 많은 시간이 걸립니다.
에피소드 검토 및 재생
10개의 에피소드를 배치한 후 계속하기 전에 다시 재생하고 검토하세요. 팔 협응에 주의를 기울이십시오. 왼쪽 팔과 오른쪽 팔 사이의 지연은 팔로어의 움직임에 불안감으로 나타납니다.
python -m lerobot.scripts.visualize_dataset \
--repo_id=your-username/dk1-bimanual-pick-place-v1 \
--episode_index=0
HuggingFace 허브로 푸시
huggingface-cli login
python -m lerobot.scripts.push_dataset_to_hub \
--repo_id=your-username/dk1-bimanual-pick-place-v1
Bimanual용 LeRobot 데이터세트 형식(DK1)
DK1 양방향 데이터 세트 스키마는 단일 암 기록에 비해 관절 상태 필드를 두 배로 늘립니다. 각 에피소드에는 리더 및 팔로어 암과 모든 카메라의 동기화된 관찰이 포함됩니다.
디렉토리 구조
your-username/dk1-bimanual-pick-place-v1/
├── meta/
│ ├── info.json # Dataset metadata, fps, shapes, robot_type
│ ├── episodes.jsonl # Per-episode metadata (task, length, outcome)
│ └── stats.json # Min/max/mean/std for all fields
├── data/
│ └── chunk-000/
│ ├── episode_000000.parquet
│ └── ...
└── videos/
└── chunk-000/
├── observation.images.wrist_cam/
│ ├── episode_000000.mp4
│ └── ...
└── observation.images.overhead_cam/
└── ...
에피소드 데이터 스키마(양방향)
양방향 수동 데모를 위한 품질 체크리스트
양방향 데이터 세트는 단일 버전 데이터보다 품질 요구 사항이 더 엄격합니다. 부서 간의 잘못된 조정은 DK1 정책 훈련 실패의 주요 원인입니다.
-
1Arm 동기화 델타가 10ms 미만입니다. 확인해보세요
arm_sync_delta_ms각 에피소드의 필드. 10ms를 초과하는 스파이크는 USB 버스 경합 또는 직렬 패킷 삭제를 나타냅니다. 델타가 지속적으로 높은 에피소드를 삭제합니다. -
2접촉 중 팔로어 팔 진동 없음 접촉점(파악, 핸드오프, 배치)에서 팔로워 팔 궤적을 검토합니다. 진동은 고주파 노이즈로 나타납니다.
observation.state. PD 이득이 있는 경우 감소합니다. 보다 소프트웨어 문제 해결. -
3두 팔 모두 같은 에피소드에서 작업을 완료합니다. 양손 작업의 경우 두 팔이 할당된 하위 작업을 완료한 경우에만 에피소드가 유효합니다. 왼팔은 성공했지만 오른팔은 물체를 떨어뜨린 경우 에피소드를 실패로 표시하고 삭제하거나 주석을 답니다.
-
4누락된 카메라 프레임 없음 두 카메라 스트림 모두 예상 프레임 수를 가져야 합니다. 두 카메라 중 하나에서 프레임이 누락되면 시력 운동 정책의 입력이 손상됩니다. 확인해보세요
lerobot.scripts.visualize_dataset. -
5태스크 씬은 에피소드 간에 동일하게 재설정되었습니다. 각 에피소드마다 양 팔의 작업 공간을 재설정해야 합니다. 물체 위치, 팔 시작 구성 및 카메라 각도가 모두 일치해야 합니다. 사진에 나온 시작 구성을 참조로 사용하세요.
-
6에피소드 길이가 일정함 모든 성공적인 에피소드는 중앙값 길이의 ±25% 이내에 있어야 합니다. 양손 작업은 단일 작업보다 분산이 더 높은 경우가 많지만 극단적인 이상값(중앙값 3배)은 삭제해야 합니다.
-
7데이터 세트 통계는 양쪽 팔에 대해 대칭입니다. ~ 안에
meta/stats.json, 확인해 보세요action_left그리고action_right통계는 작업 기하학에 그럴듯합니다. 한쪽 팔의 차이가 0이면 해당 팔이 움직이지 않은 것입니다. 포트 할당을 확인하세요. -
8Teleop 데모 스타일은 일관됩니다. 모든 시연에서는 동일한 접근 경로, 파악 전략 및 핸드오프 기술을 사용해야 합니다. 혼합 전략은 ACT 훈련을 혼란스럽게 하는 다중 모드 동작 분포를 생성합니다. 작업 버전별로 단일 연산자를 사용합니다.
양손 데이터 세트에 대한 ACT 교육
데이터 세트가 품질 체크리스트를 통과하면 LeRobot을 통해 직접 ACT 또는 확산 정책을 교육하세요. ACT는 DK1 양방향 작업에 권장됩니다. 청크 작업 예측은 단일 단계 정책보다 팔 간의 조정을 더 잘 처리합니다.
Train ACT(양방향 수동에 권장)
python -m lerobot.scripts.train \
--policy.type=act \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--policy.chunk_size=100 \
--policy.n_action_steps=100 \
--training.num_epochs=5000 \
--training.batch_size=8 \
--output_dir=outputs/dk1-act-bimanual
열차 확산 정책(접촉이 많은 작업용)
python -m lerobot.scripts.train \
--policy.type=diffusion \
--dataset.repo_id=your-username/dk1-bimanual-pick-place-v1 \
--training.num_epochs=8000 \
--output_dir=outputs/dk1-diffusion-bimanual
더 자세히 알아보기: 전체 내용을 읽어보세요 데이터 수집 파이프라인 개요 에피소드 구조, 데이터 세트 버전 관리, 동기화 전략 및 다중 작업 이중 수동 데이터 세트 구성을 철저하게 처리하기 위해 로보틱스 라이브러리에 있습니다.