기술 필드 노트 #10 · 2026년 10월

센서 시계를 믿을 수 있나? 스테레오+IMU 에고센트릭 리그의 프레임·스테레오·IMU 시간 실측

기술노트 #10 · 타임스탬프 무결성과 카메라–IMU 정렬 (ODL-EGO S1 촬영 리그)

로봇 학습 파이프라인은 영상과 관성 데이터를 합칠 때 모든 프레임의 시각이 정확하고, 두 카메라와 IMU의 시간·방향이 서로 맞는다고 가정합니다. R8 스테레오+IMU 장비 1대로 찍은 녹화 13개(0.6시간, 스테레오 쌍 67,746개)에서 영상 안에 들어 있는 프레임별 노출 시각을 꺼내 이 가정을 확인했습니다. 누락된 프레임은 없었고, 좌우 노출 시작 시각은 항상 56µs 이내였으며, IMU는 같은 시계로 약 501.5Hz로 끊김 없이 기록됐습니다. 벽 타깃 앞에서 리그를 손으로 돌린 세션으로 카메라–IMU 회전을 다시 구한 결과 공장값과 0.63° 차이, 시간 차는 0ms였습니다(공장값 0.66ms). 주의할 점 하나: 두 카메라가 서로 다른 노출 시간을 고르면 노출 중앙 시각이 최대 1.2ms 벌어졌습니다.

135,498개 중 0개누락 프레임
56µs 이하 (중앙값 15µs)좌우 노출 시작 차이
약 501.5Hz, 최대 간격 2.11ms, 번호 끊김 0회IMU 스트림
0.63°카메라–IMU 회전 (공장값 대비)
0ms (약 ±5ms)카메라→IMU 시간 차

왜 중요한가

잘못된 타임스탬프는 눈에 보이지 않는다

프레임 하나가 빠지거나, 좌우가 몇 ms 어긋나거나, IMU에 빈 구간이 있어도 영상을 볼 때는 티가 나지 않습니다. 그런데 이런 문제는 움직이는 손의 스테레오 깊이, 시각-관성 위치 추정, 센서 시각에 맞춘 동작 라벨을 모두 망가뜨립니다. 데이터 구매자는 납품 파일만으로 이걸 확인하기 어렵습니다.

이 노트는 ODL-EGO S1 녹화를 납품하기 전에 무엇을 검사하는지, 그리고 2026-10-26 캘리브레이션 촬영일의 수치가 어땠는지를 기록합니다.

데이터

타임스탬프는 어디서 나오나

R8 장비는 각 카메라의 영상 프레임마다 H.264 스트림 안에 작은 헤더(SEI 메시지)를 넣습니다. 여기에 장비 시계 기준 노출 시작 시각, 노출 시간, 스트로브 번호가 들어 있습니다. IMU 파일(ZXIMU v6, 40바이트 레코드)에는 같은 시계 기준의 자이로·가속도 샘플이 있습니다. 녹화 13개에서 둘 다 꺼냈습니다: 프레임 135,498개, 스테레오 쌍 67,746개, 자이로 1,095,094개와 같은 수의 가속도 샘플.

거리 측정 녹화 1개(145221)는 IMU 파일 없이 전달되어 영상 시간만 평가했습니다.

측정 방법

녹화마다 네 가지 검사

1) 프레임 연속성: 연속한 노출 중앙 시각 간격(정상 33.33ms)과 스트로브 번호가 1씩 증가하는지. 2) 스테레오 정렬: 모든 쌍의 오른쪽−왼쪽 노출 시작·노출 중앙 시각 차이. 3) IMU 무결성: 샘플 간격, 레코드 번호 끊김, 영상이 IMU 시간 범위 안에 있는지. 4) 카메라–IMU 정렬: 76초 세션에서 벽에 붙인 타깃 앞에서 리그를 손으로 돌렸습니다. 약 0.35초 떨어진 두 프레임 사이의 카메라 회전을 타깃 자세(OpenCV PnP)로 구하고, 같은 구간의 자이로를 적분한 회전과 비교했습니다. 시간 차를 −40~+40ms로 바꿔 가며, 자이로 회전을 카메라 회전에 가장 잘 맞추는 회전을 찾았습니다.

\hat R_{ci} = \arg\min_R \sum_k \lVert \theta^{cam}_k - R\,\theta^{imu}_k(\delta t) \rVert^2

결과 1

프레임: 빠진 것 없음, 좌우 노출은 함께 시작

녹화 13개 모두 프레임 간격이 정확히 33.33ms였고 35.4ms를 넘는 간격이 없었으며 스트로브 번호도 끊기지 않았습니다. 누락 프레임 0개입니다. 좌우 노출 시작 시각 차이는 67,746쌍 전부에서 최대 56µs였습니다.

노출 중앙 시각 차이의 중앙값은 20.5µs입니다. 오후 녹화는 모두 최대 51µs였습니다. 밝은 창을 마주한 오전 녹화 1개에서는 두 카메라가 서로 다른 노출 시간(최대 2.4ms 차이)을 골라 중앙 시각이 최대 1.23ms 벌어졌고, 그 녹화의 22%가 80µs를 넘었습니다.

오른쪽−왼쪽 노출 중앙 시각 차이 히스토그램, 약 20µs에 집중
스테레오 67,746쌍의 오른쪽−왼쪽 노출 중앙 시각 차이(로그 눈금, 80µs 초과는 오른쪽 끝에 합산).
녹화프레임 좌/우누락스트로브 번호 연속좌우 중앙 시각차 중앙값(µs)좌우 중앙 시각차 최대(µs)IMU 주기(Hz)IMU 최대 간격(µs)
124235_000009000/90000예20.544501.502111
124235_000019000/90000예20.5470501.502111
124235_000029000/90000예21.0532501.502111
124235_000035625/56240예21.51234501.502111
142800_000007122/71220예20.548501.762110
143229_000009000/90000예20.543501.502111
143229_000016733/67340예20.546501.502111
145221_000002252/22520예20.538IMU 파일 미전달—
145446_000001289/12880예20.544501.502106
145719_000002271/22710예20.538501.762109
145935_000002468/24670예20.541501.502110
150150_000001945/19460예20.548501.502111
150437_000002044/20450예20.551501.502109

결과 2

IMU: 끊김 없고 영상과 같은 시계

모든 IMU 파일이 약 501.5Hz로 기록됐고, 최대 간격은 2.11ms, 레코드 번호 끊김은 없었습니다. 영상은 첫 IMU 샘플보다 3.1–4.5ms 늦게 시작해 IMU 범위 안에서 끝났습니다. 즉 모든 프레임의 앞뒤에 IMU 샘플이 있습니다.

결과 3

카메라–IMU 회전과 시간 차가 공장 파일과 일치

프레임 쌍 123개 중 111개(쌍당 회전 중앙값 31°)를 사용했을 때 회전 잔차는 0ms에서 가장 작았고, -6~+4ms 범위에서 최솟값의 10% 이내였습니다. 공장 캘리브레이션 값은 0.66ms입니다. 추정한 회전은 공장 회전과 0.63° 차이입니다(부트스트랩 95% 구간 0.41–0.90°).

앞서 느린 머리 움직임(중앙값 약 6°/s)으로 시도했을 때는 회전을 구하지 못했습니다. 0.35초 사이에 약 30°를 돌리는 의도적인 빠른 회전이 필요했습니다. 촬영 절차의 교훈으로 함께 기록합니다.

시간 차 후보별 회전 잔차 곡선, 0ms에서 최소
시간 차 후보에 따른 자이로 적분 회전과 카메라 측정 회전 사이 잔차 중앙값.
항목이번 측정공장 캘리브레이션 파일
카메라(왼쪽)–IMU 회전공장값과 0.63° 차이 (부트스트랩 95%: 0.41–0.90°)단위행렬과 0.25° 차이
카메라→IMU 시간 차0ms (최솟값의 10% 이내 범위: -6~+4ms)0.66ms
사용한 회전 쌍 / 전체111 / 123 (쌍당 회전 중앙값 30.8°)—
회전 잔차 중앙값0.80°—

해석

데이터를 쓰는 쪽에 주는 의미

검증됨: 이 장비와 이 날짜 기준으로 프레임 시간, 좌우 노출 시작, IMU 연속성은 깨끗하고, 공장 카메라–IMU 값은 약 0.5°와 수 ms 이내로 확인됐습니다.

해석: 남은 시간 위험은 강한 역광에서 좌우 노출 시간이 달라지는 경우입니다. 손이 초속 1m로 움직이면 중앙 시각 1ms 차이는 약 1mm의 시차 오류가 됩니다. 그래서 본 촬영에서는 노출을 고정하고, 좌우 노출이 다른 녹화는 표시합니다.

  • 모든 녹화에 프레임 번호만이 아니라 프레임별 노출 시각을 함께 납품합니다.
  • 좌우 노출 시간이 0.1ms 넘게 다른 녹화는 표시합니다.
  • 캘리브레이션 점검마다 60–90초 빠른 회전 구간을 넣습니다.

연구의 한계

  • R8 스테레오+IMU 장비 1대, 실내 사무실 1곳, 하루(2026-10-26) 측정 결과이며 다른 장비 전체를 대표하지 않습니다.
  • 모든 측정은 자동 처리(OpenCV 검출·삼각측량·피팅)입니다. 사람이 독립적으로 다시 측정하지 않았으므로 알고리즘 기반 예비 분석(AI-only preliminary analysis)입니다.
  • 공장 캘리브레이션 파일은 제3자 자료이므로 평가에만 사용하고 재배포하지 않습니다. 원본 영상은 사람과 사무실 내부가 찍혀 있어 공개하지 않습니다.
  • 타임스탬프는 장비가 기록한 값이며, 외부 기준 시계가 없어 실제 세계 대비 절대 지연은 측정하지 않았습니다.
  • 카메라–IMU 검사는 76초 세션 1개와 왼쪽 카메라만 사용했고, 위치 차이(레버 암)는 추정하지 않았습니다.
  • 시간 차 해상도는 약 ±5ms입니다(-6~+4ms에서 최솟값이 평평함). 1ms 미만인 공장값을 이 해상도로 맞다 틀리다 판단할 수 없습니다.
  • 공장 파일의 IMU 잡음 값은 사전값이며 여기서 측정하지 않았습니다.

자주 묻는 질문

ODL-EGO S1 리그는 프레임이 빠지나요?

2026-10-26 녹화 13개(프레임 135,498개)를 프레임 간격과 스트로브 번호로 검사한 결과 빠진 프레임은 없었습니다.

두 카메라는 얼마나 맞춰져 있나요?

67,746쌍에서 노출 시작 차이는 최대 56µs였습니다. 두 카메라가 다른 노출 시간을 고르면 노출 중앙이 최대 1.2ms 벌어질 수 있어, 노출을 고정해 피합니다.

IMU는 영상과 같은 시계인가요?

네. 영상 프레임 시각과 IMU 샘플이 장비 시계를 공유합니다. 영상은 첫 IMU 샘플보다 3–5ms 늦게 시작하고, 모든 프레임 앞뒤에 IMU 샘플이 있습니다.

공장 카메라–IMU 캘리브레이션이 확인됐나요?

독립적으로 구한 회전이 공장값과 0.63° 차이였고, 시간 차는 0±약 5ms로 공장값 0.66ms와 맞습니다.

카메라–IMU 정렬을 확인하려면 어떤 움직임이 필요한가요?

타깃을 화면에 둔 채 세 축으로 빠르게 돌리는 움직임이 필요합니다. 이번 시험에서 느린 머리 움직임(약 6°/s)으로는 부족했습니다.

RESEARCH RESOURCES

기술자료 살펴보기

분석 코드, 데이터셋 및 평가 자료를 확인하세요.

우리 데이터로도 이렇게 측정해 볼까요?

스테레오+IMU·휴대폰 촬영 샘플을 요청하거나, 같은 검사를 귀사 장비 데이터로 의뢰하세요.

샘플 데이터 요청문의하기