6.2 정량 진단

6.2.1 지연과 jitter

하나의 프레임이 행동이 되기까지 다음 타임스탬프를 기록한다.

기호사건
tct_c카메라 exposure 또는 캡처 완료
trt_r애플리케이션 수신
ti0,ti1t_i^0,t_i^1추론 시작/끝
tst_s모터 명령 송신
tmt_m모터 상태에서 움직임 관측

핵심 지표는 평균만이 아니다.

Tsense=tr−tc,Tinfer=ti1−ti0,Te2e=tm−tc.T_{sense}=t_r-t_c,\quad T_{infer}=t_i^1-t_i^0,\quad T_{e2e}=t_m-t_c.

p50은 보통 경험, p95/p99는 드문 위험 지연을 보여준다. 다만 20개 표본의 p99는 사실상 최댓값 근처의 보간값일 뿐 tail latency를 안정적으로 추정하지 못한다. latency는 episode 수와 별개로 충분한 control tick/frame 표본을 모으고 n, max, deadline miss를 함께 보고한다. 작은 표본의 p95/p99는 탐색적 값으로만 취급한다. 시간원(clock domain)이 다르면 NTP/PTP 동기화 또는 동일 프로세스의 monotonic timestamp를 사용한다. 음수 지연은 로봇이 미래를 본 것이 아니라 시계가 정합되지 않았다는 신호다.

code/sim2real_diagnostics.py는 CSV의 latency와 성공 결과를 요약한다. 예상 CSV schema는 episode_id,condition,success,capture_ns,receive_ns,infer_start_ns,infer_end_ns,send_ns,motion_ns다.

6.2.2 백래시와 deadband

백래시는 명령 방향이 바뀐 뒤 모터축은 움직여도 출력 링크가 늦게 움직이는 구간이다. 측정 절차는 다음과 같다.

  1. 안전한 중간 자세에서 한 관절만 선택한다.
  2. 작은 양의 증가를 여러 번 명령하고 외부 표식 또는 엔코더로 출력 움직임을 기록한다.
  3. 방향을 반대로 바꿔 출력이 실제로 반전되기까지의 명령 누적량을 측정한다.
  4. 속도와 payload 조건을 반복한다.

방향 전환 지연을 각도 차이로 환산해 backlash band를 얻는다. 정책 출력에 무조건 역보상을 더하면 노이즈에서 채터링이 생길 수 있다. 동일 방향 접근, 속도 저감, 히스테리시스 모델, 접촉 전 최종 시각 보정을 우선 검토한다.

6.2.3 마찰과 그리퍼

시뮬레이션의 마찰 계수를 임의로 “성공할 때까지” 높이지 않는다. 동일 재질 쌍과 접촉 조건에서 다음을 기록한다.

  • 경사면에서 미끄러지기 시작하는 임계각 θ\theta: μs≈tan⁡θ\mu_s\approx\tan\theta
  • 일정 하중에서 미끄러짐 속도
  • 그리퍼 명령값과 물체 유지 성공률
  • 물체 질량, 표면, 접촉 면적, 그리퍼 패드 상태

저가형 그리퍼에 힘 센서가 없다면 “명령 위치가 덜 닫혔다”는 사실은 파지력의 직접 측정이 아니다. 물체 걸림과 진짜 파지를 구분할 추가 관측이 필요하다.

6.2.4 카메라 외부 파라미터

Eye-to-Hand에서는 베이스와 고정 카메라 사이 변환, Eye-in-Hand에서는 엔드이펙터와 카메라 사이 변환을 추정한다. Hand-eye calibration은 보통

AX=XBAX=XB

형태의 여러 pose 쌍을 푼다. Tsai와 Lenz는 카메라와 로봇의 상대 운동으로 3D hand-eye 관계를 구하는 고전적 방법을 제시했다.[Tsai and Lenz, 1989]

한 개의 reprojection error 숫자만 보지 않는다. 작업 공간 전체에 보드를 배치하고 다음을 확인한다.

  • 중앙과 모서리의 reprojection residual
  • 거리/방향별 pose residual
  • 장착 나사를 다시 조인 뒤 반복성
  • 온도와 케이블 장력 변화
  • TF의 프레임 방향과 timestamp
이 장의 예제 코드·설정 파일 (10)

이 장의 자가 점검·가상실습