R&D
CENTER

Hand-Eye 캘리브레이션 — 카메라가 본 곳으로 로봇을 보내는 법

카메라는 자기 좌표로 '여기 있다'고 말하고, 로봇은 자기 좌표로만 움직입니다. 둘 사이의 변환을 구하는 Hand-Eye 캘리브레이션의 개념과 절차, 정확도를 높이는 요령을 설명합니다.

심화5 분0 조회
이 강의의 핵심
  1. 좌표계는 로봇 베이스, 로봇 손끝(플랜지/TCP), 카메라, 물체 네 개를 구분합니다.
  2. 카메라가 로봇에 달리면 eye-in-hand, 바깥에 고정되면 eye-to-hand이며 구하는 변환이 다릅니다.
  3. 여러 자세에서 기준물을 찍어 AX = XB 문제를 풀어 변환 X를 구합니다. Tsai, Park 등 여러 풀이법이 있습니다.
  4. 자세마다 회전을 크게 다르게 주고, 결과를 잔차(RMS)로 검증하는 것이 정확도의 핵심입니다.

비전이 버섯 하나를 찾아 "카메라 기준으로 (12, −40, 380) mm에 있다"고 알려 줍니다. 로봇이 그곳으로 가려면 이 값을 로봇 베이스 기준 좌표로 바꿔야 합니다. 이 변환을 구하는 작업이 Hand-Eye 캘리브레이션입니다. 이 값이 1 mm 틀리면 모든 파지가 1 mm씩 어긋납니다.

네 개의 좌표계와 변환

Base로봇 베이스 Flange로봇 손끝 Camera카메라 Object물체 T_base←flange로봇이 알려 줌 X = T_flange←cam캘리브레이션으로 구함 T_cam←obj비전이 측정 T_base←obj = T_base←flange · X · T_cam←obj
카메라가 로봇 손끝에 달린 eye-in-hand 구성. 로봇 자세와 비전 측정값 사이를 잇는 X 하나만 알면 물체의 로봇 좌표가 나옵니다.

변환은 위치(3개)와 회전(3개)을 함께 담은 4×4 행렬로 표현합니다. 세 변환 중 둘은 이미 압니다.

  • 베이스 → 손끝: 로봇 컨트롤러가 관절 각도로 계산해 실시간으로 알려 줍니다.
  • 카메라 → 물체: 비전이 측정합니다.
  • 손끝 → 카메라 (X): 카메라를 어떻게 달았는지에 달린 값이라 아무도 모릅니다. 이것을 구하는 것이 캘리브레이션입니다.

eye-in-hand와 eye-to-hand

  • eye-in-hand — 카메라가 로봇 손끝에 달려 함께 움직입니다. 여러 위치에서 가까이 찍을 수 있어 넓은 영역과 세밀한 검사에 유리합니다. 구하는 값은 손끝 → 카메라.
  • eye-to-hand — 카메라가 작업대 위에 고정되어 있습니다. 로봇이 움직이는 동안에도 계속 찍을 수 있습니다. 구하는 값은 베이스 → 카메라.

RoboVision은 두 구성을 모두 지원합니다.

AX = XB — 왜 여러 자세가 필요한가

캘리브레이션 판(체스보드 등)을 고정해 두고, 로봇을 여러 자세로 움직이며 판을 찍습니다. 두 자세 사이에서 로봇 손끝이 움직인 양을 A, 그 사이 카메라가 본 판의 움직임을 B라고 하면, 둘은 같은 강체 운동을 다른 좌표로 본 것이므로 AX = XB가 성립합니다. 미지수 X는 6자유도라 자세 쌍 하나로는 풀리지 않고, 회전축이 서로 다른 자세가 여러 개 필요합니다.

이 식을 푸는 방법은 여러 가지입니다. RoboVision은 OpenCV의 다섯 가지 풀이법(Tsai, Park, Horaud, Andreff, Daniilidis)을 모두 제공해, 같은 데이터로 결과를 비교할 수 있습니다. 회전과 이동을 따로 푸는 방법(Tsai, Park)과 한 번에 푸는 방법(Daniilidis의 듀얼 쿼터니언 등)은 노이즈에 대한 성질이 조금씩 다릅니다.

판 없이 보정하기

현장에서는 판을 놓기 어려운 경우가 있습니다. fineAi는 다른 방법도 씁니다.

  • 그리퍼 기반 보정 — 판 대신 그리퍼 자체를 카메라로 찍어 보정합니다. RoboVision에서 RMS 0.50 mm를 얻었습니다.
  • TCP 점 맞춤 — eye-to-hand에서 로봇 손끝을 여러 위치로 옮기며 3D 카메라로 그 위치를 찍고, 두 점 집합을 가장 잘 겹치는 회전·이동을 Kabsch 알고리즘으로 구합니다. 끝에 구를 달고 구 중심을 맞추면 더 정밀합니다. Digital Twin Pick&Place가 이 방식을 씁니다.

정확도를 높이는 요령

  1. 회전을 크게, 다양하게 — 자세들 사이의 회전축이 서로 많이 달라야 합니다. 평행 이동만 하면 X의 회전 성분이 잘 정해지지 않습니다.
  2. 자세를 충분히 — 최소 개수보다 넉넉히(10~20개) 찍어 노이즈를 평균냅니다.
  3. 시야 전체를 쓰기 — 판이 화면 가운데에만 찍히면 렌즈 왜곡이 큰 가장자리의 오차가 숨습니다.
  4. 카메라 내부 보정 먼저 — 렌즈 왜곡과 초점 거리(내부 파라미터)가 틀리면 Hand-Eye도 틀립니다.
  5. 잔차로 검증 — 결과 X로 각 자세의 판 위치를 다시 계산해 잔차(RMS)를 봅니다. 특정 자세만 크게 튀면 그 자세를 빼고 다시 풉니다.
  6. 기구가 바뀌면 다시 — 카메라 브래킷을 건드렸거나 충돌이 있었다면 다시 보정합니다. 운영 중에는 예측 위치와 실측 위치의 차이를 모아 작은 보정값을 갱신하는 자가 보정도 씁니다.