아무렇게나 쓰는 RECORD
article thumbnail

Introduction

Hand-Eye Calibration를 구글에 검색해보면 다음과 같이 나온다

 

Hand-eye calibration is used to relate what the camera (“eye”) sees to where the robot arm (“hand”) moves.
Eye-in-hand calibration is a process for determining the relative position and orientation of a robot-mounted camera with respect to the robot’s end-effector.

 

즉 카메라가 부착된 로봇팔을 움직일 때, 로봇의 앤드이펙터와 Camera의 위치관계와 방향관계를 구하는 것이다. 

이것이 왜 필요한가?

로봇은 자신의 위치를 정확히 파악해야한다. 이를 눈(카메라) 앞에 보이는 이미지를 보고 판단해야하는데, 카메라가 End-Effector의 중심에 위치하기 어려울 뿐만아니라 아무리 자로 정확히 측정해서 위치시키더라도 결국은 정확하지 않다. 이를 위해 Hand-Eye Calibration 이 필요한 것이다.

 

참고 및 출처

 

Formula

Camera 의 Calibration은 다양한 방식이 있지만, 여기서는 Target-based 방식으로 진행하며 Target(Marker)은 체커보드를 사용한다. 아래와 같은 그림이다.

 

 

Hand-Eye Calibration의 기본 수식은 다음과 같다.

$$AX=XB$$

앞으로 정말로 많이 보게 될 식이다.

Hand-Eye Calibration에서 뿐만 아니라, 두 물체간의 Relation를 구할 때 많이 사용된다고 한다. 

이 수식에서 A,B,X 는 모드 4x4 변환행렬(Transform Matrix)이다. 위 그림에서 화살표 방향을 잘보면 벡터의 합으로 생각할 수도 있다(내 개인적인 생각이지만). 

 

아래 그림을 보자

행렬곱은 선형변환을 의미하고, 곱해진 순서대로 벡터를 볼 수 있다.

$AX=XB$에서 A→X2 로 생각을 하고, XB는 X1→B 순서로 생각할 수 있다. 물론 X1과 X2는 같다(End-Effector와 Camera의 위치는 고정). 즉 둘다 빨간색 화살표를 의미하기 때문에, 같은 $AX=XB$ 이다.

물론 저 식이 유도된 과정은 그게 아니지만, 나는 저런식으로 개념을 이해했다. 

 

이제 한번 저 식이 유도된 과정을 살펴보자.

우선 각 Notation을 짚고가자. 아 그리고 앞으로는  End-Effector를 Hand 라고 쓸 것이다.

 

$A$: Transform each camera pose

$B$: Transform each hand pose

$X$: Transform between camera and hand

$T_{a}^{b}$: Transform between a and b

 

우선 로봇이 time1 과 time2에서 Maker 를 본다고 생각하자. 

그리고 로봇의 본체(Base)와 로봇의 Hand, 카메라, Marker에 각각 좌표계가 있다고 가정하자.

(그림이 이상하지만 양해바랍니다ㅠㅠ)

여기서 도출할 수 있는 식이 있다.

$$T_{M}^{B}=T_{H_1}^{B}XT_{M}^{C_1} \tag{1}$$

$$T_{M}^{B}=T_{H_2}^{B}XT_{M}^{C_2} \tag{2}$$

위에서 처음 설명했던 벡터 합 느낌이다.

 

(1)와 (2)의 RMS 를 같다고 식을 세운다.

$$T_{H_1}^{B}XT_{M}^{C_1}=T_{H_2}^{B}XT_{M}^{C_2} \tag{3}$$

 

그리고 다음과 같이 전개한다.

$$T_{B}^{H_1} \cdot T_{H_1}^{B}XT_{M}^{C_1} \cdot T_{C_2}^{M}=T_{B}^{H_1} \cdot T_{H_2}^{B}XT_{M}^{C_2} \cdot T_{C_2}^{M}  \tag{4}$$

 

$$XT_{M}^{C_1}T_{C_2}^{M}=T_{B}^{H_1}T_{H_2}^{B}X \tag{5}$$

 

최종적으로는 다음과 같이 나온다

$$XT_{C_2}^{C_1}=T_{H_2}^{H_1}X $$

 

$T_{H_2}^{H_1}=A$ 이고 $T_{C_2}^{C_1}=B$ 가 되기 때문에 결국은

 

$$AX = XB$$

 

가 유도된다. 

profile

아무렇게나 쓰는 RECORD

@Aiden_Kim

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!