Index
2026-08-13 – 2026-08-14 — Research

손목 카메라 self-calibration 가능성 + HiFi-UMI 저자 응답 실사

UMI | 캘리브레이션 미공개 상태에서 fisheye를 펴거나 대상 로봇 카메라에 맞출 수 있는가

TL;DR

93.4%
반대손 화각 안(200° 가정)
144°/200°
head/hand HFoV (저자 확인)
12cm
그리퍼 링크 길이
4/4
아티팩트 요청 전부 거절

1 배경 / 목적

X-WAM 컨버터에서 손목 카메라를 crop만 하고 rectify하지 않기로 잠정 결정했는데, 사용자로부터 두 가지 타당한 반박이 나왔다: (a) 펴는 각도/방향은 하이퍼파라미터로 조절 가능한 것 아닌가, (b) intrinsic은 저자에게 요청하면 되는 것 아닌가. crop이라는 선택이 "안 해봐서" 내린 결론인지 "해봐도 안 되는" 결론인지 구분해야 했다.

기존 한계: Canny edge chain sagitta/L로 view별 왜곡을 정량 측정하려 했으나 프레임당 직선 후보가 8~30개뿐이고 노이즈와 구분이 안 돼 실패 — "head가 더 rectilinear에 가깝다"는 주장을 할 근거가 없었다.

2 작업 내용

2.1 왜 캘리브레이션 없이는 펼 수 없는가

undistortion에는 intrinsics(fx,fy,cx,cy) + distortion coeff(KB4 k1..k4 등)가 필요하다. repo 전체 파일 구성을 재확인(mp4 2,388 / parquet 1,194 / json 1,194 / README / .gitattributes / _SUCCESS 398) — URDF·CAD·mesh·캘리브레이션 전무. info.json / modality.json에도 없음. rectilinear 투영은 r = f·tan(θ)이고 θ→90°에서 발산하므로, 200° full FOV(half-angle 100°)는 평면에 원리적으로 표현 불가 — 부분 창(sub-window)만 펼 수 있다.

2.2 self-calibration 정식화 (신규 발견)

핵심 관찰: 손 카메라는 손에 강체 고정돼 있고, 반대쪽 손의 6D pose를 3mm 정확도로 이미 알고 있다. 게다가 hand frame 원점이 README상 "at the fingertip"이므로, 반대쪽 손 프레임의 원점 자체가 이미지에서 그 fingertip만 검출하면 미지의 물체 구조 없이 3D↔2D 대응이 바로 생긴다.

정식화: 미지수 = 손 카메라 intrinsics K, distortion D(fisheye면 KB4 k1..k4), 손→카메라 고정 extrinsic T_hc (6 DoF) 매 프레임 알려진 값 = T_rel = T_thishand⁻¹ · T_otherhand (양손 pose에서 정확히 계산) 가장 깨끗한 변형: fingertip 3D 위치(원점) -> 이미지 검출 -> 화각 전역 수만 개 대응 -> K,D,T_hc 직접 추정 부트스트랩: 대략의 K로 예측 위치 투영 -> 검출 탐색 범위 축소 -> 반복 정제 일반 변형: known-motion SfM(bundle adjustment)으로 {K, D, T_hc, 그리퍼 3D 구조} 동시 추정

head_main은 더 어렵다 — head pose가 export되지 않아 3D 대응을 바로 못 만든다. 양손 fingertip 2점의 3D 상대 배치는 알므로 프레임별 head pose와 K를 joint BA로 풀 수는 있으나(원 논문의 SLAM을 재현하는 셈) 비용이 크다. 손 카메라부터 하는 것이 맞다.

2.3 실측 — 반대쪽 손이 실제로 화각 안에 들어오는가

chunk-0000, 478,810 프레임 전체에서 양손 간 거리와 상대 각도를 측정했다.

양손 거리 p10 0.092 / p50 0.206 / p90 0.346 m 왼손 forward축 기준 오른손 각도 p10 33° / p50 63° / p90 90° 50° 이내 (FOV 100° 가정) 26.3% 70° 이내 (FOV 140° 가정) 66.8% 100° 이내 (FOV 200° 가정) 93.4% 오른손 forward축 기준 왼손 각도 p50 66°, 100° 이내 90.6%

2.4 가상 카메라 리샘플링 — 각도/FOV는 실제로 하이퍼파라미터다

K, D, T_hc가 확보되면 임의의 가상 핀홀 뷰를 렌더할 수 있다: fisheye 픽셀 → (D⁻¹) 단위 광선 → R_v 회전 → K_v 투영. 사전계산한 map으로 cv2.remap 한 번, 프레임당 비용 무시 가능. T_hc가 나오면 가상 카메라를 그리퍼 프레임 기준으로 정의할 수 있다 — 이는 로봇 손목 카메라를 규정하는 방식과 정확히 같으므로, "대상 로봇 손목 카메라에 맞춘다" = R_v, FOV_v를 그 장착 자세·렌즈로 두는 것이 된다. 하나의 fisheye 프레임에서 여러 가상 뷰를 뽑을 수 있어 200°는 오히려 view augmentation 자산이 된다.

2.5 저자 문의 (HF Community, 병행 진행)

HF dataset Community에 4개 스레드로 문의했다. simple-world-lab HF org는 models 0개, datasets 1개. 논문(arXiv:2607.25895, 2026-07-28, 교신 Minglei Li)에 GitHub 링크·"code available" 문구 없음 — 가중치/학습 코드는 미공개 상태.

#요청저자 답변
1 (07-31)URDF"end-effector frame이 fingertip에 정의돼 있어 full URDF가 꼭 필요하지 않다" — 미제공
2 (08-07)intrinsics/extrinsics, CAD"디바이스마다 다르고 샘플별 정확한 값을 주기 어렵다" — 미제공
3 (08-11)distortion 파라미터"暂时没有哦 (현재 없음)"
4 (08-11)head pose, 카메라 사양"head-camera trajectory는 이번 배치에 미포함" — 단 HFoV는 답변

3 결과 (수치)

3.1 캘리브레이션 요청은 실패, 그러나 세 가지는 확보

1. intrinsics는 self-calibration이 유일한 경로로 확정 — 저자가 "디바이스마다 다르고 샘플별 정확한 값을 주기 어렵다"고 명시. 단일 캘리브레이션 세트가 존재하지 않으므로 fingertip 기반 self-calibration이 fallback이 아니라 유일한 경로가 된다.
2. 카메라 HFoV 확정 — hand 카메라 200°, head 카메라 144°(head도 광각). rectilinear 리샘플 시 입체각 보존율:
원본→90°→120°→144°
head 144°42%72%100%
hand 200°25%43%
head를 120°로 펴면 72%가 남는다 — hand(43%)보다 훨씬 유리하다.
3. 그리퍼 기하를 CAD 없이 확보 — 저자: "그리퍼 mesh/CAD는 학습·시각화 어디에도 안 쓴다. 단순 기하 도형만 사용한다 — fingertip에서 회전축까지 거리 약 12cm, 두 손가락이 대칭으로 회전하며 최대 개구각은 손가락당 약 35°." 최대 개구 폭 ≈ 2×12cm×sin35° = 13.8cm. 검증: 35°=0.611rad ↔ 실측 gripper max 0.600rad=34.4° — 일치. 데이터의 gripper_angle_rad가 손가락당 회전각임이 확정됨.

3.2 정량 측정 실패는 실패로 기록 (정직하게)

Canny edge chain 기반 왜곡 측정은 결론 못 냄: view 간 차이(head_main 0.056 ~ right_hand_up 0.107)가 노이즈와 구분되지 않았다. 이 수치로 "head가 rectilinear에 가깝다"고 주장하지 않는다. 대신 저자 답변(HFoV 144°/200°)으로 이 질문 자체가 해소됐다.

4 Takeaway

의미

"캘리브레이션이 없으니 fisheye는 못 편다"는 결론은 절반만 맞다. 저자로부터 직접 받을 수는 없지만, 데이터셋 자체가 self-calibration에 필요한 재료(반대쪽 손의 정확한 6D pose, fingertip 원점 정의)를 이미 포함하고 있다. 즉 "정보를 잃는다"는 프레이밍을 뒤집을 수 있다 — crop은 버리는 게 아니라 어느 25~43%를 남길지 고르는 것이고, 가상 카메라 경로가 확보되면 그 선택 자체가 다운스트림 목적(policy 배포용 대상 로봇 손목 카메라 매칭)에 맞춰 조정 가능한 하이퍼파라미터가 된다.

다만 지금 X-WAM 컨버터는 self-calibration을 파일럿조차 하지 않은 상태에서 crop(0.7673, 144°)으로 갔다 — 저자가 확인해준 HFoV 수치 덕분에 "무료 옵션"으로 정당화됐을 뿐, self-calibration 경로 자체는 아직 미실행이다. 그리퍼 외형 domain gap(§4의 다른 카드 참조)에 대한 완화 수단(반대쪽 지향 가상 카메라, 고정 마스크, cross-painting)도 self-calibration 없이는 열리지 않는다.

5 Next Steps

미해결 한계

self-calibration은 아직 파일럿조차 안 한 제안 단계다. fingertip 검출기 정확도, 화각 가장자리 fisheye 왜곡이 검출 정확도에 미치는 영향, per-recording 캘리브레이션 편차(디바이스마다 다르다는 저자 언급과 일치)가 전부 미검증. head_main은 head pose 미제공으로 별도 joint BA가 필요해 hand보다 훨씬 비싸다.

다음 작업

순서: ① 저자에 디바이스 단위 intrinsics 근사값 + shard→디바이스 매핑 재요청(비용 0, 병행) — "샘플별 정확한 값"은 거절했지만 "디바이스별 근사"는 거절하지 않았다. ② fingertip 검출 기반 self-calibration을 1 shard로 파일럿 (①이 오면 대조 검증, 안 와도 진행 가능). ③ K,D,T_hc 확보 후 가상 카메라 sweep(FOV×pitch) — 다운스트림 지표로 선택. ④ 그리퍼 마스킹 여부 ablation. ①②가 실패해도 손실은 파일럿 비용뿐이고, 성공하면 RoboTwin cross-embodiment 경로(다른 카드 참조)에서 "막혔다"고 판정한 시각 domain gap 완화 수단 상당수가 열린다.