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$$
가 유도된다.
'공부 > Robotics' 카테고리의 다른 글
칼만필터(Kalman Filter) (3) | 2023.05.15 |
---|---|
3차원에서 물체의 이동을 표현하기 위한 기초 <Lie Theory> (0) | 2023.04.29 |