CoolFace
Datasetpublic

Najongs/meca500-needle-insertion

Meca500 니들 삽입 데이터셋 (아이팬텀 트로카) Mecademic Meca500 R3 6축 로봇으로 수집한 아이팬텀(eye phantom) 니들 삽입 실기 시연 데이터. 카메라 3대 + (일부) 광섬유 OCT·힘 센서를 동기 기록했습니다. 1,281 에피소드 · 438,156 프레임 · 145 GB — 전량 실물 로봇 수집분입니다. 서브셋 서브셋 에피소드 프레임 크기 센서 수집 기간 Eye_trocar/ 990 344,181 102.9 GB 834개에 OCT A-line + 힘 2026-01-06 ~ 01-21 Red_point/ 291 93,975 42.4 GB 없음 2025-12-22 ~ 2026-01-04 Eye_trocar — 아이팬텀의 트로카에 니들을 정렬·삽입하는 본 태스크. 날짜 폴더(260106~`260121) 아래 있고, 260106은 작업자별 하위 폴더 (1_KTY… See the full description on the dataset page: https://huggingface.co/datasets/Najongs/meca500-needle-insertion.

sourceHugging Facecc-by-nc-4.0updated 7d agoView on Hugging Face
0likes84downloads
Dataset Card

Meca500 니들 삽입 데이터셋 (아이팬텀 트로카)

Mecademic Meca500 R3 6축 로봇으로 수집한 아이팬텀(eye phantom) 니들 삽입 실기 시연 데이터. 카메라 3대 + (일부) 광섬유 OCT·힘 센서를 동기 기록했습니다.

1,281 에피소드 · 438,156 프레임 · 145 GB — 전량 실물 로봇 수집분입니다.

서브셋

서브셋에피소드프레임크기센서수집 기간
Eye_trocar/990344,181102.9 GB834개에 OCT A-line + 힘2026-01-06 ~ 01-21
Red_point/29193,97542.4 GB없음2025-12-22 ~ 2026-01-04
  • Eye_trocar — 아이팬텀의 트로카에 니들을 정렬·삽입하는 본 태스크. 날짜 폴더(260106~260121) 아래 있고, 260106은 작업자별 하위 폴더 (1_KTY 1_MIN 2_JYT 3_KHC 4_DHH)로 더 나뉩니다. `260106`(156개)만 센서가 없고 나머지 834개는 전부 OCT·힘 센서를 포함합니다.
  • Red_point — 선행 단계. 평면 위 빨간 점 타겟으로 접근·정렬만 연습한 세션.

HDF5 스키마

에피소드 하나가 파일 하나(episode_<YYYYMMDD>_<HHMMSS>.h5)입니다. T = 프레임 수.

형태설명
action(T, 6)목표 6DoF 명령
observations/ee_pose(T, 6)엔드이펙터 포즈 (x,y,z + 자세)
observations/qpos(T, 6)관절각
observations/images/camera1..3(T,) 또는 (T,480,640,3)3뷰 RGB 640×480
timestamp(T,)프레임 타임스탬프
observations/sensor/aline(N, 1025)OCT A-line — 카메라와 다른 고속 레이트
observations/sensor/force(N,)힘 신호 (A-line과 동일 레이트)
observations/sensor/timestamp(N,)센서 타임스탬프 — 이걸로 프레임과 정렬
이미지 인코딩이 두 가지입니다. 대부분(1,243개)은 dtype=objectJPEG 바이트가 들어 있고, Red_point의 38개만 raw `uint8` `(T,480,640,3)`입니다. dtype으로 분기하세요. 마찬가지로 대부분 float32이나 raw인 38개는 float64입니다.
센서는 카메라보다 훨씬 빠릅니다. alineNT보다 수십 배 큽니다 (예: T=219 · N=11,617). 반드시 observations/sensor/timestamptimestamp로 정렬하세요 — 인덱스를 맞춰 자르면 안 됩니다.

읽기 예시

python
import h5py, numpy as np, io
from PIL import Image

with h5py.File("Eye_trocar/260121/episode_20260121_094356.h5", "r") as f:
    action = f["action"][:]                    # (T, 6)
    qpos   = f["observations/qpos"][:]         # (T, 6)
    cam1   = f["observations/images/camera1"]

    if cam1.dtype == object:                   # JPEG 바이트
        frame = np.array(Image.open(io.BytesIO(bytes(cam1[0]))))
    else:                                      # raw uint8
        frame = cam1[0]

    if "observations/sensor" in f:             # 있는 에피소드에서만
        aline = f["observations/sensor/aline"][:]        # (N, 1025)
        st    = f["observations/sensor/timestamp"][:]    # (N,)
        # 프레임 i에 대응하는 센서 인덱스
        idx = np.searchsorted(st, f["timestamp"][:])

일부만 받으려면:

python
from huggingface_hub import snapshot_download
snapshot_download("Najongs/meca500-needle-insertion", repo_type="dataset",
                  allow_patterns="Eye_trocar/260121/*")

수집 환경

  • 로봇: Mecademic Meca500 R3 (6DoF), 광학 브레드보드 위 고정
  • 타겟: 3D 프린팅 아이팬텀 + 트로카. 리프트 스테이지로 높이 조절
  • 카메라 3대 고정 (측면 전경 / 상단 근접 / 상단 광각), 640×480
  • 센서: 니들 끝단 통합 광섬유 — OCT A-line 1025 bin + 힘
  • 프레임에 사람은 등장하지 않습니다 (장비·팬텀만 촬영)

관련 저장소

모델·학습 코드(Insertion_VLAv4, LeRobot 기반)와 계보 문서(VLA)는 미발표라 비공개입니다. 공개된 것은 같은 연구실의 포즈추정 릴리스뿐입니다 — `Najongs/DINObotPose`.

연구 전반은 지식 그래프에서 볼 수 있습니다.

인용

미발표 연구입니다. 사용 시 저자에게 연락 바랍니다.

라이선스

CC BY-NC 4.0 — 비영리 목적의 연구 사용을 허용합니다.


Jongyeol Na — Researcher, KIRO · M.S. DGIST, IROM Lab GitHub · Knowledge graph · W&B