데이터 수집

Orca Hand를 사용하여 능숙한 조작 데이터를 기록하는 것은 단순한 그리퍼 데이터 수집과 근본적으로 다릅니다. 17개의 손가락 관절, 선택적 촉각 스트림 및 장갑 원격 조작에는 모두 신중한 동기화가 필요합니다. 이 가이드에서는 전체 작업 흐름을 다룹니다.

녹음 전

능숙한 데이터 수집을 위한 하드웨어 설정

Orca Hand 녹음 설정에는 단순한 그리퍼 암보다 더 많은 스트림이 있습니다. 손가락 관절, 선택적 촉각, 카메라 및 팔 관절을 모두 동기화해야 합니다.

🕐

오르카 핸드(USB 직렬)

최대 100Hz에서 17-DOF 손가락 상태. 확인하다: python -c "from orca_core import OrcaHand; h=OrcaHand('/dev/ttyUSB0'); h.connect(); print(h.get_positions())"

🤸

원격조작 장치

Juqiao 장갑(권장) 또는 VR 손 추적. 작업자의 손가락 자세를 Orca Hand 관절 대상에 실시간으로 매핑합니다.

📷

손바닥/손목 카메라

손바닥 안에 있는 작은 USB 카메라가 손가락 끝과 물체를 가리킵니다. 손가락 끝과 물체의 접촉이 파악 성공 여부를 결정하는 접촉이 많은 작업에 중요합니다.

📈

촉각 센서(옵션)

Paxini 또는 호환되는 손가락 끝 센서. 별도의 USB 연결. 접촉 기반 정책 교육을 위해 데이터 세트에 접촉 강제 스트림을 추가합니다.

녹음 작업 흐름

단계별 녹음 작업 흐름

1

팔+손+장갑을 들어올린다

# Terminal 1: Arm (if using OpenArm)
source ~/openarm_ws/install/setup.bash
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=false can_interface:=can0

# Terminal 2: Orca Hand
source ~/orca_ws/install/setup.bash
ros2 launch orca_ros2 orca_hand.launch.py port:=/dev/ttyUSB0 handedness:=right

# Terminal 3: Juqiao Glove (see Juqiao Glove software page)
python -m juqiao_glove.stream --port /dev/ttyUSB1
2

모든 스트림이 실시간인지 확인

# Check finger joint states
ros2 topic hz /orca_hand/joint_states   # expect ~100 Hz

# Check glove stream
ros2 topic hz /juqiao_glove/finger_angles   # expect ~100 Hz

# Check camera
python -c "import cv2; cap=cv2.VideoCapture(0); print('Camera OK:', cap.isOpened())"
3

장갑 대 손 매핑 보정

장갑 보정을 실행하여 손가락 치수를 Orca Hand의 관절 범위에 매핑합니다. 이 단계는 자연스러운 원격 조작을 보장합니다. 열린 손 = Orca 열림, 주먹 = Orca 주먹.

python -m orca_core.scripts.calibrate_teleop \
  --hand_port /dev/ttyUSB0 \
  --glove_port /dev/ttyUSB1 \
  --handedness right
4

작업 장면 설정

일관된 시작 위치에 개체를 배치합니다. 능숙하게 잡는 것은 물체의 자세에 매우 민감합니다. 고정 장치(테이프, 퍼티)를 사용하여 에피소드 전반에 걸쳐 일관된 물체 배치를 유지하십시오.

5

녹음 세션 시작

python -m orca_core.scripts.record_episodes \
  --hand_port /dev/ttyUSB0 \
  --glove_port /dev/ttyUSB1 \
  --camera_id 0 \
  --fps 30 \
  --output_dir ~/datasets/orca-grasp-v1 \
  --num_episodes 50 \
  --task "Pick up the pen using a precision pinch grasp"

레코더는 동기화된 손가락 관절 위치, 장갑 각도, 카메라 프레임 및 (연결된 경우) 촉각 판독값을 Parquet 데이터세트에 저장합니다.

6

파악 품질 검토

각 에피소드를 다시 재생해 보세요. 주의 사항: 미끄러짐 현상(갑자기 위치 점프), 불완전한 잡기, 힘줄 포화(잡는 동안 관절의 심한 한계), 일관되지 않은 접근 경로.

python -m orca_core.scripts.visualize_episode \
  --dataset_dir ~/datasets/orca-grasp-v1 \
  --episode_index 0
7

HuggingFace 허브로 푸시

python -m orca_core.scripts.push_dataset \
  --dataset_dir ~/datasets/orca-grasp-v1 \
  --repo_id your-username/orca-grasp-v1
데이터세트 형식

오르카 핸드 데이터세트 스키마

Orca Hand 데이터 세트 형식은 손가락별 및 촉각 스트림을 추가하여 표준 LeRobot 스키마를 확장합니다.

각 에피소드 Parquet 파일의 필드
관찰.손_상태 float32[17] 모든 17개 손가락 관절 위치(도 단위)
관찰.손_속도 float32[17] 손가락 관절 속도(deg/s)
관찰.촉각 float32[5] 손가락 끝당 접촉력(N)(촉각 센서가 연결된 경우)
관찰.이미지.* 비디오 경로 카메라 프레임 — 손바닥 보기, 손목 보기, 작업 공간 보기
행동 float32[17] 장갑 원격 조작으로 대상 손가락 관절 위치
파악_유형 사용된 파악 기본 요소에 대한 라벨(예: "precision_pinch", "power_grasp")
타임스탬프 float64 Unix 타임스탬프(초)
다음.완료 부울 각 에피소드의 마지막 프레임에서 True
품질 보증

능숙한 데이터 품질 체크리스트

능숙한 조작 데이터는 단순한 선택 및 배치보다 실패 모드가 더 많습니다. 허브로 푸시하기 전에 이 과정을 실행해 보세요.

  • 1
    17개 관절 모두 에피소드 전반에 걸쳐 유효한 위치 판독값을 가집니다. NaN 또는 고착 값은 서보 드롭아웃을 나타냅니다. 검사 observation.hand_state 모든 프레임에 걸쳐 모든 관절의 상수 값에 대해.
  • 2
    장갑 대 손 대기 시간은 20ms 미만입니다. 사이의 타임스탬프 정렬을 확인하세요. action (장갑에서) 그리고 observation.hand_state. 대기 시간이 길면 정책이 일관되지 않은 쌍으로부터 학습하게 됩니다.
  • 3
    파악 유형은 작업 내에서 일관됩니다. 일부 시위에서 권력 장악을 사용하는 경우 정밀 핀치 정책은 일반화되지 않습니다. 각 데이터 세트를 하나의 기본 파악 전략으로 유지하거나 파악 유형별로 라벨을 지정합니다.
  • 4
    접촉 이벤트는 공동 위치에서 볼 수 있습니다. 손이 물체와 접촉할 때 손가락 관절은 명확한 감속 및 순응 편향을 보여야 합니다. 접촉 변형 없이 손가락이 제자리에 고정되는 에피소드는 파악을 놓쳤을 수 있습니다.
  • 5
    손바닥 카메라는 전체 조작 단계에서 물체를 보여줍니다. 물체는 접근할 때부터 놓을 때까지 손바닥 카메라에 보여야 합니다. 카메라 마운트가 부딪치지 않았는지, FOV가 작업 작업 공간을 덮고 있는지 확인하십시오.
  • 6
    촉각 스트림에는 예상되는 접촉 이벤트가 있습니다. 핀치 잡는 동안 엄지와 검지의 촉각 모두 힘이 증가하는 모습을 보여야 합니다. 접촉이 확인되는 동안 힘 신호가 누락되면 센서가 연결 해제되었거나 잘못 보정되었음을 나타냅니다.

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

능숙한 조작 데이터세트를 HuggingFace에 푸시하고 호환되는 모델을 탐색해 보세요.