Juqiao 촉각 장갑

데이터 수집

로봇 관절 상태 및 카메라 영상과 함께 접촉 압력을 기록합니다. 장갑은 포착하는 촉각 양식을 추가합니다. 얼마나 힘든지 로봇 그리퍼가 누르는 중입니다. 시각만으로는 정보가 보이지 않습니다.

장갑이 데이터 세트에 추가하는 것 표준 원격 조작 데이터 세트는 관절 위치, 속도 및 카메라 이미지를 캡처합니다. Juqiao Glove를 추가하면 각 파지 중 접촉력의 공간 분포를 보여주는 64노드, 200Hz 압력 맵이 기록됩니다. 이 데이터에 대해 훈련된 정책은 깨지기 쉬운 물체나 변형 가능한 물체에 중요한 그립력을 조절하는 방법을 학습할 수 있습니다.
하드웨어 설정

시스템 연결

소프트웨어를 시작하기 전에 모든 장치를 연결하십시오. 장갑은 USB로만 연결되며 무선 모드는 없습니다.

로봇 팔 + 손

Orca Hand(권장) 또는 기타 엔드 이펙터. 암에 따라 Feetech USB 어댑터 또는 CAN을 통해 연결됩니다.

/dev/ttyUSB0 or CAN0

주교 장갑

호스트 PC에 대한 USB-C. CDC-ACM 일련번호로 나타납니다. 1.5m 케이블; 자유로운 이동을 위해 필요한 경우 USB 확장 장치를 사용하세요.

/dev/ttyACM0

손목 카메라

로봇의 손목에 장착된 USB 또는 GigE 카메라로 훈련을 위한 객체 중심 보기를 제공합니다.

/dev/video0 or GigE IP

오버헤드 카메라

장면 상황에 맞는 작업 공간 카메라를 수정했습니다. 다중 뷰 데이터세트를 위해 손목 카메라와 페어링하세요.

/dev/video2 or GigE IP

원격조작 장치

리더 암(SO-101/OpenArm 리더), VR 컨트롤러 또는 추종자 로봇을 구동하는 SpaceMouse.

리더 포트/HID
녹음 작업 흐름

단계별 녹음

1

로봇 팔과 손을 들고

별도의 터미널에서 암 드라이버(및 해당하는 경우 오르카 핸드 드라이버)를 시작합니다. 계속하기 전에 Joint_states가 게시되고 있는지 확인하세요.

# Terminal 1: Robot arm (example: OpenArm) ros2 실행 openarm_ros2 openarm.launch.py ​​포트:=/dev/ttyUSB0 # Terminal 2: Orca Hand (if using Orca Hand end-effector) ros2 실행 orca_ros2 orca_hand.launch.py ​​포트:=/dev/ttyUSB1 # Verify ros2 주제 hz /joint_states # Should be ~100 Hz ros2 주제 hz /orca_hand/joint_states # Should be ~100 Hz
2

Juqiao 장갑 드라이버 시작

장갑 ROS2 노드를 실행합니다. 녹음 세션을 시작하기 전에 200Hz 데이터가 흐르는지 확인하십시오.

# Terminal 3: Juqiao Glove ros2 실행 juqiao_glove_ros2 글러브.launch.py ​​포트:=/dev/ttyACM0 # Verify pressure data is live ros2 주제 hz /juqiao_glove/tactile_array # Should be ~200 Hz ros2 주제 echo /juqiao_glove/grasp_region # Should print region strings
3

카메라 실행

손목 및 머리 위 보기를 위해 카메라 노드를 시작합니다. 이미지 주제가 목표 프레임 속도(일반적으로 30fps)로 게시되고 있는지 확인하세요.

# Wrist camera (USB) ros2 run usb_cam usb_cam_node_exe --ros-args -p video_device:=/dev/video0 -p 프레임 속도:=30.0 # Overhead camera (GigE example) ros2 실행 카메라_ros2 gige_camera.launch.py ​​ip:=192.168.1.100 # Verify ros2 주제 hz /wrist_camera/image_raw ros2 주제 hz /overhead_camera/image_raw
4

모든 스트림이 동기화되었는지 확인

사용 ros2 주제 목록 필요한 모든 주제가 있는지 확인하십시오. 에피소드를 녹화하기 전에 양식 전반에 걸쳐 타임스탬프가 20ms 이내에 있는지 확인하세요.

ros2 주제 목록 | grep -E "관절|촉각|이미지|파악" # Expected topics: # /joint_states (arm, ~100 Hz) # /orca_hand/joint_states (hand, ~100 Hz) # /juqiao_glove/tactile_array (glove, ~200 Hz) # /juqiao_glove/grasp_region (glove, ~200 Hz) # /wrist_camera/image_raw (camera, 30 Hz) # /overhead_camera/image_raw (camera, 30 Hz)
5

LeRobot으로 데이터 세트 기록

LeRobot의 기록 스크립트를 사용하세요. 그만큼 --촉각 주제 플래그는 관절 상태 및 이미지와 함께 장갑 압력 스트림을 데이터 세트 열로 추가합니다.

# Record 50 episodes; press Enter to start each, Space to stop python -m lerobot.scripts.record \ --robot-path lerobot/configs/robot/orca_hand.yaml \ --fps 30\ --repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --tags "juqiao 장갑,촉각,조작" \ --준비 시간-초 2 \ --에피소드 시간-s 30 \ --재설정 시간-s 5 \ --num-에피소드 50 \ --푸시-허브 \ --tactile-topic /juqiao_glove/tactile_array \ --촉각 키 촉각_압력
LeRobot --tactile-topic 플래그가 아직 없나요? 동기화 및 데이터 세트 스키마를 자동으로 처리하는 SVRC 다중 모드 레코더 래퍼를 사용합니다. pip install robotscenter[레코더]
6

푸시하기 전에 에피소드를 검토하세요.

HuggingFace Hub에 참여하기 전에 히트맵 오버레이로 각 에피소드를 재생하여 촉각 데이터 품질을 확인하세요.

# Replay and overlay heatmap on video python -m robotscenter.scripts.review_episode \ --dataset-path ./data/orca_grasp_tactile \ --에피소드 인덱스 0 \ --오버레이-촉각 \ --촉각 키 촉각_압력 # Discard bad episodes python -m lerobot.scripts.delete_episodes \ --dataset-path ./data/orca_grasp_tactile \ --에피소드 3 7 12 # episode indices to discard
7

HuggingFace 허브로 푸시

검증된 데이터세트를 업로드하세요. 데이터 세트 카드는 촉각을 포함한 양식 설명으로 자동 생성됩니다.

Huggingface-cli 로그인 # first time only python -m lerobot.scripts.push_dataset \ --dataset-path ./data/orca_grasp_tactile \ --repo-id $HUGGINGFACE_USER/orca_grasp_tactile # Verify upload 파이썬 -c " 데이터 세트에서 import load_dataset ds = load_dataset('$HUGGINGFACE_USER/orca_grasp_tactile', 분할='기차') 인쇄(ds.column_names) 인쇄(ds.features['tactile_press']) "
참조

데이터세트 스키마

데이터세트의 각 프레임에는 다음 열이 포함되어 있습니다. 모든 배열은 float32 Parquet 열로 저장됩니다. MP4 비디오 시퀀스로 이미지.

모양 / 종류설명
관찰.상태 float32[6] 로봇 팔 관절 위치(라디안). 인덱스 6은 6-DOF 암을 사용하는 경우 그리퍼 조리개입니다.
관찰.손_상태 float32[17] Orca 손 관절 위치(라디안), 17 DOF. 손재주가 없으면 생략하세요. 메타데이터의 공동 이름별로 라벨이 지정됩니다.
관찰.촉각_압력 float32[64] Juqiao Glove는 노드당 압력을 0.0(접촉 없음)부터 1.0(전체 크기)까지 정규화했습니다. 로봇 프레임 속도와 일치하도록 200Hz 다운샘플링.
관찰.촉각_압력_원시 단위16[64] 원시 16비트 ADC 값. 재보정 후 재정규화를 위해 보존합니다. 선택 과목; 데이터세트 크기를 줄이려면 생략하세요.
관찰.파악_지역 str 활성 접촉 지역 휴리스틱: "손바닥 안에 감추다", "무지", "색인", "가운데", "반지", "핑키", 또는 "" (연락 없음).
관찰.이미지.손목 uint8[H, W, 3] MP4 비디오 시퀀스로 저장되는 30fps의 손목 카메라 RGB 프레임입니다.
관찰.이미지.오버헤드 uint8[H, W, 3] 30fps의 오버헤드 카메라 RGB 프레임.
행동 float32[6 또는 23] 팔(6) 및 선택적으로 손(17)의 대상 관절 위치입니다. 모양은 손재주가 있는지 여부에 따라 달라집니다.
언어_지시 str 작업 설명(예: "계란을 깨지 않고 집으세요". 언어 조건에 따른 정책 교육을 활성화합니다.
에피소드_색인 정수 데이터 세트 내의 에피소드 번호입니다.
프레임_인덱스 정수 에피소드 내의 프레임 번호(0-인덱스)입니다.
타임스탬프 float64 에피소드 시작 후 경과된 시간(초)입니다.

촉각적 다운샘플링

장갑은 200Hz로 스트리밍됩니다. 로봇과 카메라는 일반적으로 30~100Hz에서 작동합니다. 레코더는 가장 가까운 타임스탬프 일치를 사용하여 프레임을 정렬합니다. 전체 200Hz 촉각 스트림을 별도의 배열로 보존하려면:

# Store full-rate tactile as a variable-length array per frame python -m robotscenter.scripts.record \ --촉각 모드 full_rate # default is "matched" (one per robot frame) # This produces a ragged column: observation.tactile_sequence # shape per row: float32[N, 64] where N varies (typically 6-7 frames at 200Hz/30fps)
품질

에피소드 품질 체크리스트

데이터세트에 포함하기 전에 각 에피소드를 이러한 기준에 따라 검토하세요. 하나의 나쁜 에피소드는 정책 훈련을 저하시키는 가짜 촉각 패턴을 도입할 수 있습니다.

  • 촉각 스트림은 연속적이며 프레임 간격이 없습니다. 확인하다 프레임.시퀀스 건너뛰지 않고 증가합니다. 프레임 드랍은 촉각 기둥에 반복되는 값으로 나타납니다.
  • 정지 상태의 기준선은 0에 가깝습니다(< 0.03). 에피소드 시작 시(접촉 전) 최대 압력 노드는 0.03 미만이어야 합니다. 정지 상태에서 드리프트가 0.05를 초과하면 장갑에 재보정이 필요함을 나타냅니다.
  • 접촉 이벤트는 비디오에서 눈에 보이는 파악과 일치합니다. 다음으로 재생 --오버레이-촉각. 압력 스파이크(최대 노드 > 0.4)는 손목 카메라의 눈에 보이는 그리퍼 폐쇄와 일치해야 합니다.
  • 파악 영역은 접촉 단계에서 일관됩니다. 파악_지역 각 잡는 동안 하나 또는 두 개의 영역에서 안정화되어야 합니다(예: "손바닥 안에 감추다" + "색인"). 빠르게 변화하는 영역은 장갑 정렬이 잘못되었거나 신호가 시끄럽다는 것을 나타냅니다.
  • 로봇 상태에 따른 장갑 대기 시간 < 20 ms 촉각 이벤트 시작을 그리퍼 속도 스파이크와 비교합니다. 지연 시간 > 20ms는 USB 허브 정체를 나타냅니다. 장갑을 호스트 USB 포트에 직접 연결하십시오.
  • 언어 교육은 시연된 과제와 일치합니다. 언어 조건 데이터 세트의 경우 에피소드 시작 시 입력한 지침이 운영자가 실제로 시연한 내용을 정확하게 설명하는지 확인하세요.
  • 로봇 동작에 케이블 간섭이 없음 1.5m USB 케이블은 조작자의 손 움직임을 제한하거나 에피소드 중에 장갑을 벗겨서는 안 됩니다. 팔뚝에 있는 케이블 관리 클립을 사용하세요.
정책교육

촉각 관찰을 통한 훈련

촉각 입력을 사용하는 정책은 일반적으로 비전 전용 기준에 비해 접촉에 민감한 작업(깨지기 쉬운 물체 처리, 말뚝 삽입, 천 접기)에서 15~30% 개선됩니다.

# ACT policy with tactile observations (SVRC fork adds tactile encoder) python -m lerobot.scripts.train \ --dataset-repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --정책 행위 \ --policy.observation_keys \ "관찰.이미지.손목" \ "관찰.이미지.오버헤드" \ "관찰.상태" \ "관찰.손_상태" \ "관찰.촉각_압력" \ --output-dir 출력/act_tactile # The tactile encoder maps float32[64] → latent via a small MLP # No special architecture changes required for ACT or Diffusion Policy
# Diffusion Policy with tactile (identical --observation_keys, different policy flag) python -m lerobot.scripts.train \ --dataset-repo-id $HUGGINGFACE_USER/orca_grasp_tactile \ --정책 확산 \ --policy.observation_keys \ "관찰.이미지.손목" \ "관찰.상태" \ "관찰.촉각_압력" \ --output-dir 출력/확산_촉각
팁: 평가 시 촉각을 제거합니다. 통과하다 관찰.촉각_압력 = 0(64) 추론 중에 정책이 촉각과 시각에 얼마나 의존하는지 측정합니다. 이를 통해 작업에 촉각이 필요한지 또는 비전이 충분한지 식별합니다.