Hand-Eye Calibration Solution

이 튜토리얼의 이전 부분에서는 핸드-아이 칼리브레이션이 해결해야 하는 문제를 제시했습니다. 이 자습서에서는 솔루션에 대한 배경 아이디어를 설명합니다. 핵심 아이디어는 Eye-to-hand 시스템과 Eye-in-hand 시스템에서 동일합니다. 따라서 우리는 먼저 Eye-to-hand의 구성에 대한 자세한 솔루션을 제공합니다. 그런 다음 Eye-in-hand의 구성과의 차이점을 설명합니다.

참고

핸드-아이 캘리브레이션을 수행하는 데에는 엔드 오브 암 툴링이 필요하지 않으며, (부착되어 있는 경우) 툴링의 자세를 알 필요도 없습니다. 툴 센터 포인트(TCP) 값은 핸드-아이 캘리브레이션 결과에 영향을 미치지 않습니다. 이 문서와 이후 튜토리얼에서 엔드 이펙터 라는 용어는 툴 플랜지(로봇의 마지막 링크)를 의미합니다.

핸드-아이 캘리브레이션 문제를 어떻게 해결할까요?

첫 번째 단계는 체커보드와 같은 캘리브레이션 대상을 선택하는 것입니다.


이 튜토리얼의 다음 부분에서는 캘리브레이션 객체(체커보드 및 ArUco 마커) 다룹니다.

../../../../_images/hand-eye-robot-and-calibration-board.png

캘리브레이션 대상은 기하학적 형상이 알려져 있으므로 카메라 이미지에서 감지할 수 있습니다.


또한 카메라 (\(H^{CAM}_{OBJ}\)) 에 대한 상대적인 자세를 추정할 수 있습니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose.png

카메라와 로봇 사이의 상대 포즈를 계산하려면(\(H^{ROB}_{CAM}\)), 어떻게든 포즈 사이의 원을 닫아야 합니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose.png

로봇 베이스에 대한 엔드 이펙터의 자세(\(H^{ROB}_{EE}\))는 로봇 컨트롤러에서 제공하는 것으로도 알려져 있습니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-and-rob-ee.png

포즈 원을 닫을 누락된 포즈는 엔드 이펙터를 기준으로 한 칼리브레이션 대상의 포즈입니다. (\(H^{EE}_{OBJ}\))

../../../../_images/hand-eye-robot-and-calibration-board-all-poses.png

이 자세를 없애거나 수정 하려면 보정 객체를 엔드 이펙터에 장착하면 됩니다.

../../../../_images/hand-eye-calibration-board-mounted-on-camera.png

이제 포즈 서클이 닫혔고 로봇에 대한 카메라의 포즈를 계산할 모든 것이 있는 것 같습니다(\(H^{ROB}_{CAM}\)). 그러나 그렇게 간단하지 않습니다.

../../../../_images/hand-eye-calibration-board-mounted-on-camera-with-poses.png

이는 상대적인 자세 (\(H^{EE}_{OBJ}\)) 를 완전히 제거 한 것은 아니기 때문입니다. 하지만 이를 고정시켜 로봇의 움직임 동안 엔드 이펙터에 대한 보정 객체의 자세 (\(H^{EE}_{OBJ}\)) 가 변하지 않도록 했습니다.


이를 통해 로봇을 다양한 자세로 움직일 수 있습니다.


각각의 경우에 대해, \(H^{ROB}_{CAM}\) 나머지 두 변수, 즉 알려진 자세의 함수로 표현될 수 있습니다.

  • 로봇에서 엔드 이펙터로 \(H^{ROB}_{EE}\)

  • 카메라에서 보정 객체로 \(H^{CAM}_{OBJ}\)

그리고 변하지 않는, 알 수 없는 자세 하나:

  • 엔드 이펙터에서 캘리브레이션 객체로 \(H^{EE}_{OBJ}\).

이 방정식 세트를 사용하면 Tsai의 방법과 같은 최적화 기술을 활용하여 원하는 포즈 \(H^{ROB}_{CAM}\) 를 계산할 수 있습니다.

../../../../_images/hand-eye-calibration-board-mounted-on-camera-with-all-poses.png

첫 번째 단계는 체커보드와 같은 캘리브레이션 대상을 선택하는 것입니다.


이 튜토리얼의 다음 부분에서는 캘리브레이션 객체(체커보드 및 ArUco 마커) 다룹니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-on-robot.png

캘리브레이션 대상은 기하학적 형상이 알려져 있으므로 카메라 이미지에서 감지할 수 있습니다.


또한 카메라 (\(H^{CAM}_{OBJ}\)) 에 대한 상대적인 자세를 추정할 수 있습니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-on-arm.png

카메라와 엔드 이펙터 (\(H^{EE}_{CAM}\)) 사이의 상대적인 자세를 계산하려면 두 자세 사이의 원을 닫아야 합니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-on-arm.png

로봇 베이스에 대한 엔드 이펙터의 자세(\(H^{ROB}_{EE}\))는 로봇 컨트롤러에서 제공하는 것으로도 알려져 있습니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-object-pose-and-rob-cam-pose-and-rob-ee-on-arm.png

포즈 원을 완성하는 데 필요한 누락된 포즈는 로봇 베이스에 대한 객체의 포즈 (\(H^{ROB}_{OBJ}\))입니다.

../../../../_images/hand-eye-robot-and-calibration-board-all-poses-on-arm.png

이 자세를 없애거나 고정하려면 캘리브레이션 대상을 단단히 장착해야 합니다.


이는 로봇의 움직임 동안 로봇 베이스 (\(H^{ROB}_{OBJ}\))에 대한 보정 객체의 자세가 일정하게 유지되도록 하기 위함입니다.

../../../../_images/hand-eye-robot-and-calibration-board-camera-on-robot-obj-pose.png

이제 포즈 서클을 닫고 엔드 이펙터 (\(H^{EE}_{CAM}\)) 에 대한 카메라의 포즈를 계산하는 데 필요한 모든 것이 갖춰졌습니다.


핸드-아이 캘리브레이션 과정 동안 로봇은 여러 가지 다른 자세로 이동합니다.


각각의 경우에 대해, \(H^{EE}_{CAM}\) 나머지 두 변수, 즉 알려진 자세의 함수로 표현될 수 있습니다.

  • 로봇에서 엔드 이펙터로 \(H^{ROB}_{EE}\)

  • 카메라에서 보정 객체로 \(H^{CAM}_{OBJ}\)

그리고 변하지 않는, 알 수 없는 자세 하나:

  • 로봇에서 객체로 \(H^{ROB}_{OBJ}\).

이 방정식 세트를 사용하면 Tsai의 방법과 같은 최적화 기법을 활용하여 원하는 자세 \(H^{EE}_{CAM}\) 를 계산할 수 있습니다.

../../../../_images/hand-eye-calibration-board-with-all-poses-eye-in-hand.png

이제 핸드-아이 캘리브레이션 문제를 해결하는 방법을 설명했으니 핸드-아이 캘리브레이션 객체 옵션에 대해 알아보겠습니다.