9.77 카메라-로봇 간 좌표 변환 (Hand-Eye Calibration)

9.77 카메라-로봇 간 좌표 변환 (Hand-Eye Calibration)

1. 손-눈 캘리브레이션의 개념

손-눈 캘리브레이션(Hand-Eye Calibration)은 로봇의 손목(또는 다른 부위)에 부착된 카메라와 로봇의 좌표계 사이의 상대적 변환 관계를 결정하는 과정이다. “손(hand)“은 매니퓰레이터의 말단 장치, “눈(eye)“은 카메라를 의미한다. 이 캘리브레이션은 비전 기반 로봇 제어, 자동화 작업, 시각적 서보잉(visual servoing)의 핵심 전제이다.

2. 캘리브레이션의 두 구성

2.1 Eye-in-Hand (손에 눈)

카메라가 매니퓰레이터의 말단 장치 또는 손목에 부착되어 매니퓰레이터와 함께 움직이는 구성이다. 카메라가 작업물에 접근하여 가까이서 관찰할 수 있는 장점이 있다. 작업 중인 부위를 직접 볼 수 있어 정밀 조작에 적합하다.

이 구성에서 결정해야 할 미지수는 매니퓰레이터의 말단 좌표계 \{E\}에서 카메라 좌표계 \{C\}로의 변환 {}^E\mathbf{T}_C이다.

2.2 Eye-to-Hand (눈이 손을 봄)

카메라가 작업 환경에 고정되어 매니퓰레이터를 외부에서 관찰하는 구성이다. 카메라가 작업 영역 전체를 한눈에 볼 수 있어 작업물의 위치와 방향을 파악하기에 적합하다.

이 구성에서 결정해야 할 미지수는 매니퓰레이터의 베이스 좌표계 \{B\}와 카메라 좌표계 \{C\} 사이의 변환 {}^B\mathbf{T}_C이다.

본 절에서는 더 일반적인 Eye-in-Hand 구성을 중심으로 설명한다.

3. 손-눈 캘리브레이션 방정식

손-눈 캘리브레이션의 표준 수학적 표현은 다음의 행렬 방정식이다.

\mathbf{A}\mathbf{X} = \mathbf{X}\mathbf{B}

여기서

  • \mathbf{A}: 매니퓰레이터의 두 자세 사이의 상대 변환
  • \mathbf{B}: 카메라의 두 자세 사이의 상대 변환
  • \mathbf{X}: 손-눈 변환 (미지수)

4. 방정식의 유도

캘리브레이션 보드(보통 체커보드)가 작업 환경에 고정되어 있다고 가정한다. 매니퓰레이터를 두 가지 자세로 움직여서 각 자세에서 카메라로 보드를 촬영한다.

4.1 자세 1과 자세 2의 관계

매니퓰레이터의 두 자세를 {}^B\mathbf{T}_{E,1}{}^B\mathbf{T}_{E,2}로 표기한다. 이들은 매니퓰레이터의 순기구학으로부터 알려진 값이다.

카메라가 본 보드의 자세를 {}^C\mathbf{T}_{P,1}{}^C\mathbf{T}_{P,2}로 표기한다. 여기서 \{P\}는 캘리브레이션 보드의 좌표계이다. 카메라 캘리브레이션 알고리즘으로 추정된다.

4.2 보드의 위치 불변성

캘리브레이션 보드는 환경에 고정되어 있으므로, 매니퓰레이터의 자세와 무관하게 고정된 위치를 가진다. 이를 베이스 좌표계에서 표현하면

{}^B\mathbf{T}_P = {}^B\mathbf{T}_{E,1} \cdot {}^E\mathbf{T}_C \cdot {}^C\mathbf{T}_{P,1} = {}^B\mathbf{T}_{E,2} \cdot {}^E\mathbf{T}_C \cdot {}^C\mathbf{T}_{P,2}

4.3 방정식의 정리

위 식을 정리하면

({}^B\mathbf{T}_{E,1})^{-1} \cdot {}^B\mathbf{T}_{E,2} \cdot \mathbf{X} = \mathbf{X} \cdot {}^C\mathbf{T}_{P,1} \cdot ({}^C\mathbf{T}_{P,2})^{-1}

여기서 \mathbf{X} = {}^E\mathbf{T}_C이고

\mathbf{A} = ({}^B\mathbf{T}_{E,1})^{-1} \cdot {}^B\mathbf{T}_{E,2}

\mathbf{B} = {}^C\mathbf{T}_{P,1} \cdot ({}^C\mathbf{T}_{P,2})^{-1}

이며, 표준 형태 \mathbf{A}\mathbf{X} = \mathbf{X}\mathbf{B}가 성립한다.

5. 방정식의 해법

\mathbf{A}\mathbf{X} = \mathbf{X}\mathbf{B} 방정식을 푸는 다양한 방법이 존재한다.

5.1 Tsai-Lenz 방법 (1989)

가장 고전적이고 널리 사용되는 방법이다. 회전 부분과 병진 부분을 분리하여 순차적으로 해결한다.

회전 부분: \mathbf{R}_A\mathbf{R}_X = \mathbf{R}_X\mathbf{R}_B를 풀어 \mathbf{R}_X를 얻는다.

병진 부분: 회전이 결정된 후 \mathbf{R}_A\mathbf{t}_X + \mathbf{t}_A = \mathbf{R}_X\mathbf{t}_B + \mathbf{t}_X를 풀어 \mathbf{t}_X를 얻는다.

5.2 Park-Martin 방법 (1994)

리 군 이론을 활용한 방법이다. 회전을 축-각도 표현으로 다루며, 더 정확한 해를 산출할 수 있다.

5.3 Daniilidis 방법 (1999)

듀얼 쿼터니언(dual quaternion)을 사용하여 회전과 병진을 동시에 푼다. 회전과 병진의 결합을 자연스럽게 처리한다.

5.4 비선형 최적화

위의 닫힌 형태 해법으로 초기 추정을 얻은 후, 비선형 최적화로 정제한다. 모든 측정 데이터의 잔차를 최소화한다.

6. 데이터 수집 절차

손-눈 캘리브레이션의 일반적 절차는 다음과 같다.

6.1 단계: 캘리브레이션 보드 준비

체커보드, ArUco 마커, 또는 다른 카메라 캘리브레이션 보드를 준비한다. 작업 환경에 고정한다.

6.2 단계: 매니퓰레이터를 다양한 자세로 이동

매니퓰레이터를 여러 다양한 자세(통상 10-30개)로 이동시킨다. 자세는 회전과 병진이 모두 변해야 하며, 다양성이 클수록 캘리브레이션 정확도가 향상된다.

6.3 단계: 각 자세에서 카메라 촬영

각 자세에서 카메라로 보드를 촬영한다. 매니퓰레이터의 관절 각과 이미지를 함께 기록한다.

6.4 단계: 카메라 캘리브레이션

각 이미지에 대해 카메라의 보드에 대한 자세 {}^C\mathbf{T}_P를 계산한다. 이는 PnP(Perspective-n-Point) 알고리즘으로 수행된다.

6.5 단계: 매니퓰레이터의 자세 계산

매니퓰레이터의 순기구학으로 각 자세의 {}^B\mathbf{T}_E를 계산한다.

6.6 단계: \mathbf{A}\mathbf{B} 행렬 구성

인접한 자세 쌍에 대해 \mathbf{A}_i = {}^B\mathbf{T}_{E,i}^{-1}{}^B\mathbf{T}_{E,i+1}\mathbf{B}_i = {}^C\mathbf{T}_{P,i}({}^C\mathbf{T}_{P,i+1})^{-1}을 계산한다.

6.7 단계: 방정식의 해

\mathbf{A}_i\mathbf{X} = \mathbf{X}\mathbf{B}_i의 여러 인스턴스를 결합하여 \mathbf{X}를 추정한다.

6.8 단계: 검증

추정된 \mathbf{X}를 사용하여 캘리브레이션 데이터의 잔차를 계산한다. 잔차가 충분히 작으면 캘리브레이션이 성공이다.

7. 자세 선택의 중요성

캘리브레이션의 정확도는 매니퓰레이터의 자세 선택에 크게 의존한다.

7.1 회전 다양성

자세들 사이의 상대 회전이 다양해야 한다. 모든 자세가 같은 축 주위로 회전하면 캘리브레이션 문제가 잘 정의되지 않는다.

7.2 병진 다양성

자세들 사이의 상대 병진도 다양해야 한다. 카메라의 외부 매개변수가 정확히 결정되도록 한다.

7.3 작업 영역 활용

캘리브레이션 자세가 매니퓰레이터의 작업 영역 전체를 활용해야 한다. 좁은 영역에서만 측정한 캘리브레이션은 그 영역 외에서 정확도가 떨어진다.

7.4 자세 수

일반적으로 10개 이상, 20개 이상의 자세가 권장된다. 자세가 많을수록 노이즈에 강건한 캘리브레이션을 얻을 수 있다.

8. 캘리브레이션의 정확도

캘리브레이션의 정확도는 여러 요인에 의해 결정된다.

8.1 카메라 내부 매개변수의 정확도

카메라 자체의 내부 매개변수 캘리브레이션이 부정확하면 {}^C\mathbf{T}_P가 부정확해져 손-눈 캘리브레이션도 부정확해진다.

8.2 매니퓰레이터의 운동학 정확도

매니퓰레이터의 명목 DH 매개변수가 실제와 차이가 있으면 {}^B\mathbf{T}_E가 부정확하다. 이는 캘리브레이션의 체계적 오차로 나타난다.

8.3 보드 측정의 노이즈

카메라가 본 보드의 자세 추정에 노이즈가 포함되며, 이는 캘리브레이션 결과에 전파된다.

8.4 매니퓰레이터의 진동과 백래시

매니퓰레이터의 기계적 백래시나 진동이 자세의 정확한 측정을 방해한다.

9. 캘리브레이션 결과의 활용

캘리브레이션이 완료되면 다음의 응용이 가능해진다.

9.1 비전 기반 객체 인식

카메라로 검출한 객체의 3차원 위치를 매니퓰레이터의 좌표계로 변환하여 그립 명령을 생성한다.

{}^B\mathbf{p}_{\text{object}} = {}^B\mathbf{T}_E \cdot {}^E\mathbf{T}_C \cdot {}^C\mathbf{p}_{\text{object}}

9.2 시각적 서보잉

카메라의 영상 피드백을 사용하여 매니퓰레이터를 정밀하게 제어한다. 손-눈 변환이 영상 정보와 매니퓰레이터 운동의 연결을 제공한다.

9.3 작업물 위치 자동 검출

매번 작업물의 정확한 위치를 수동으로 지정할 필요 없이, 카메라가 자동으로 검출한 위치를 매니퓰레이터의 좌표계로 변환한다.

9.4 손동작 안내

증강 현실 시스템에서 사용자의 손동작을 카메라로 추적하고, 매니퓰레이터의 동작을 안내하는 데 사용된다.

10. 다른 캘리브레이션과의 차이

10.1 카메라 내부 매개변수 캘리브레이션

이는 카메라의 초점 거리, 주점, 왜곡 계수 등을 결정하는 것이다. 손-눈 캘리브레이션과는 별개의 과정이다.

10.2 매니퓰레이터의 운동학 캘리브레이션

이는 매니퓰레이터의 DH 매개변수를 정밀하게 결정하는 것이다. 손-눈 캘리브레이션의 정확도를 결정하는 전제 조건이다.

10.3 동시 캘리브레이션

일부 고급 방법에서는 손-눈 변환과 매니퓰레이터의 운동학 매개변수를 동시에 최적화한다. 이는 더 정확한 결과를 제공하지만 복잡한 알고리즘이 필요하다.

11. 캘리브레이션의 라이브러리

손-눈 캘리브레이션을 위한 다양한 오픈 소스 라이브러리가 있다.

  • OpenCV: solvePnPcalibrateHandEye 함수 제공
  • ROS: easy_handeye 패키지
  • Visp: ViSP 라이브러리의 Hand-Eye 모듈
  • MoveIt: ROS의 매니퓰레이터 계획 라이브러리에 통합

이러한 라이브러리는 검증된 알고리즘을 제공하므로, 직접 구현하기보다는 이를 활용하는 것이 권장된다.

12. 참고 문헌

  • Tsai, R. Y., & Lenz, R. K. (1989). “A New Technique for Fully Autonomous and Efficient 3D Robotics Hand/Eye Calibration.” IEEE Transactions on Robotics and Automation, 5(3), 345–358.
  • Park, F. C., & Martin, B. J. (1994). “Robot Sensor Calibration: Solving AX = XB on the Euclidean Group.” IEEE Transactions on Robotics and Automation, 10(5), 717–721.
  • Daniilidis, K. (1999). “Hand-Eye Calibration Using Dual Quaternions.” International Journal of Robotics Research, 18(3), 286–298.
  • Strobl, K. H., & Hirzinger, G. (2006). “Optimal Hand-Eye Calibration.” IROS 2006, 4647–4653.
  • Horaud, R., & Dornaika, F. (1995). “Hand-Eye Calibration.” International Journal of Robotics Research, 14(3), 195–210.

version: 1.0