핸드-아이 캘리브레이션 결과 불량 (수동 로봇 자세 입력 오류)
문제
핸드-아이 캘리브레이션 결과가 만족스럽지 못합니다(나쁘거나 미흡함). 다음과 같은 조합 중 하나가 나타날 수 있습니다.
핸드-아이 캘리브레이션 변환 |
핸드-아이 캘리브레이션 잔차 |
프로젝션 검증 |
터치 테스트 |
|---|---|---|---|
나쁜 |
나쁜 |
나쁜 |
위험한 |
합리적인 |
나쁜 |
나쁜 |
나쁜 |
합리적인 |
보통 |
나쁜 |
나쁜 |
합리적인 |
좋은 |
불량함 |
보통 |
잘못된 핸드-아이 캘리브레이션 결과의 예
핸드-아이 캘리브레이션 행렬은 여러 값이 물리적 측정값과 지나치게 큰 차이를 보이므로 정확하지 않은 것으로 보입니다. 이러한 차이는 해당 설정에서 합리적이지 않습니다.
0.609 |
0.177 |
0.773 |
-467.320 |
-0.109 |
0.984 |
-0.140 |
17.581 |
-0.785 |
0.001 |
0.619 |
794.894 |
0 |
0 |
0 |
1 |
794.894라는 값은 대략 130mm이고, 17.581이라는 값은 대략 90mm입니다. 이 단계에서는 좌표계 정의에 따라 달라지는 부호(+/-)는 무시하고, 거리 자체에만 집중합니다.
보정 잔차 또한 예상보다 상당히 크며, 두 자릿수 정도 더 높습니다.
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
11 |
2.855 |
10.677 |
102.330 |
405.720 |
소형 로봇의 경우 잔차가 1mm 미만 범위에 있을 것으로 예상되며, 대형 로봇의 경우 잔차가 1mm 범위에 있을 수 있습니다. 잔차의 회전 성분은 1도 미만 범위에 있을 것으로 예상됩니다.
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
1.685 |
405.720 |
2 |
1.816 |
90.325 |
3 |
0.215 |
74.578 |
4 |
1.901 |
143.061 |
5 |
2.296 |
21.398 |
6 |
10.678 |
94.157 |
7 |
5.541 |
102.133 |
8 |
0.235 |
40.173 |
9 |
3.979 |
48.811 |
10 |
1.894 |
76.962 |
11 |
1.177 |
28.309 |
프로젝션을 통한 검증이 실패했는데, 이는 핸드-아이 캘리브래이션이 정확하지 않으며 터치 테스트가 심각하게 실패할 것임을 시사합니다.
핸드-아이 캘리브레이션 결과가 미흡한 예시
핸드-아이 캘리브레이션 행렬은 합리적이며 대략적인 수동 측정에서 예상되는 결과와 일치합니다(아래 표 및 이미지 참조).
0.999 |
-0.003 |
0.040 |
-54.871 |
0.002 |
0.999 |
0.029 |
-90.920 |
-0.040 |
-0.029 |
0.999 |
128.709 |
0 |
0 |
0 |
1 |
보정 잔차가 허용 가능한 범위 내에 있으므로 최적화가 성공적으로 수렴되었음을 나타냅니다.
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
11 |
0.027 |
0.059 |
0.160 |
0.388 |
소형 로봇의 경우 잔차가 1mm 미만 범위에 있을 것으로 예상되며, 대형 로봇의 경우 잔차가 1mm 범위에 있을 수 있습니다. 잔차의 회전 성분은 1도 미만 범위에 있을 것으로 예상됩니다.
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.025 |
0.388 |
2 |
0.016 |
0.270 |
3 |
0.021 |
0.098 |
4 |
0.028 |
0.197 |
5 |
0.014 |
0.057 |
6 |
0.056 |
0.154 |
7 |
0.018 |
0.086 |
8 |
0.019 |
0.230 |
9 |
0.031 |
0.074 |
10 |
0.059 |
0.167 |
11 |
0.015 |
0.043 |
프로젝션 검증은 기술적으로는 성공적이지만, 결과적인 오차가 여전히 허용 가능한 수준을 넘어섰습니다. 프로젝션 검증은 매우 신중하게 접근해야 하는데, 핸드-아이 캘리브레이션이 잘못되었더라도 프로젝션 오차가 허용 가능한 것처럼 보일 수 있기 때문입니다.
터치 테스트 결과가 만족스럽지 못합니다(나쁘거나 기준치에 미달).
터치 테스트 도구의 끝부분이 ArUco 마커를 너무 세게 누릅니다.
터치 테스트 도구의 끝부분이 ArUco 마커를 살짝 누릅니다.
잠재적 원인
로봇 컨트롤러에서 PC로 로봇 자세를 복사하는 과정에서 사람의 실수(오타)가 발생했습니다.
로봇 포즈에 오타가 있으면 포즈-이미지 쌍이 일관성을 잃게 되어 핸드-아이 캘리브레이션에 필요한 기하학적 가정이 깨집니다. 작은 숫자 하나라도 잘못되면 포즈가 심하게 왜곡되어 전체 최적화 과정이 잘못된 방향으로 흘러가게 되고, 결과적으로 잔차가 커지고 변환이 비현실적으로 변하며 전반적으로 만족스럽지 못한 캘리브레이션 결과가 나옵니다.
잠재적 해결책
로봇 컨트롤러에서 PC로 포즈를 수동으로 복사하는 경우, 오타가 없는지 값을 다시 한번 확인하십시오.
로봇 컨트롤러에서 Zivid 핸드-아이 캘리브레이션용 변환 행렬로 로봇 포즈를 변환할 때 올바른 회전 규칙을 사용해야 합니다.
동일한 데이터셋을 사용하여 핸드-아이 캘리브레이션을 반복합니다.
핸드-아이 캘리브레이션 결과(변환, 잔차, 프로젝션)를 확인합니다.
(핸드-아이 캘리브레이션 결과가 양호한 경우) 터치 테스트를 실행합니다.
문제 재현 방법 (잘못된 핸드-아이 캘리브레이션)
좋은 데이터셋
아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.
보정 결과는 다음과 같습니다.
0.999 |
-0.002 |
0.041 |
-55.598 |
0.001 |
0.999 |
0.028 |
-90.654 |
-0.041 |
-0.028 |
0.999 |
129.044 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
11 |
0.025 |
0.054 |
0.109 |
0.192 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.025 |
0.388 |
2 |
0.016 |
0.270 |
3 |
0.021 |
0.098 |
4 |
0.028 |
0.197 |
5 |
0.014 |
0.057 |
6 |
0.056 |
0.154 |
7 |
0.018 |
0.086 |
8 |
0.019 |
0.230 |
9 |
0.031 |
0.074 |
10 |
0.059 |
0.167 |
11 |
0.015 |
0.043 |
핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.
터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.
데이터셋 불량 (이동 오류가 많음)
수동 로봇 자세 입력 시 발생하는 사람의 오타를 시뮬레이션하기 위해, 정상 데이터셋의 한 자세에 큰 변환 오차를 도입했습니다. 변환 벡터의 X 값을 -742.58mm에서 -142.58mm로 변경했습니다(첫 번째 정수 자릿수: 7 → 1).
보정 결과는 다음과 같습니다.
0.609 |
0.177 |
0.773 |
-467.320 |
-0.109 |
0.984 |
-0.140 |
17.581 |
-0.785 |
0.001 |
0.619 |
794.894 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
11 |
2.855 |
10.677 |
102.330 |
405.720 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
1.685 |
405.720 |
2 |
1.816 |
90.325 |
3 |
0.215 |
74.578 |
4 |
1.901 |
143.061 |
5 |
2.296 |
21.398 |
6 |
10.678 |
94.157 |
7 |
5.541 |
102.133 |
8 |
0.235 |
40.173 |
9 |
3.979 |
48.811 |
10 |
1.894 |
76.962 |
11 |
1.177 |
28.309 |
프로젝션을 통한 검증이 실패했는데, 이는 손과 눈 사이의 협응력이 정확하지 않으며 터치 테스트에서도 심각한 오류가 발생할 가능성이 높다는 것을 시사합니다. 따라서 안전상의 이유로 터치 테스트는 생략되었습니다.
비교
아래 표에서는 핸드-아이 캘리브레이션 행렬(변환 값)과 핸드-아이 캘리브레이션 잔차 간의 결과를 비교합니다.
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
좋은 |
-55.598 |
-90.654 |
129.044 |
이동 오류 심각 |
-467.320 |
17.581 |
794.894 |
Δ (좋음 - 나쁨) |
411.722 |
-108.235 |
-665.850 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
좋은 |
11 |
0.025 |
0.054 |
0.109 |
0.192 |
이동 오류 심각 |
11 |
2.855 |
10.677 |
102.330 |
405.720 |
문제 재현 (미미한 핸드-아이 협응력 부족)
좋은 데이터셋
아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.
보정 결과는 다음과 같습니다.
0.999 |
-0.002 |
0.041 |
-55.598 |
0.001 |
0.999 |
0.028 |
-90.654 |
-0.041 |
-0.028 |
0.999 |
129.044 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
11 |
0.025 |
0.054 |
0.109 |
0.192 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.025 |
0.388 |
2 |
0.016 |
0.270 |
3 |
0.021 |
0.098 |
4 |
0.028 |
0.197 |
5 |
0.014 |
0.057 |
6 |
0.056 |
0.154 |
7 |
0.018 |
0.086 |
8 |
0.019 |
0.230 |
9 |
0.031 |
0.074 |
10 |
0.059 |
0.167 |
11 |
0.015 |
0.043 |
핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.
터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.
잘못된 데이터 세트
수동 로봇 자세 입력 시 발생하는 사람의 오타를 시뮬레이션하기 위해, 기존 데이터셋에 세 가지 다른 방식으로 오류를 도입하여 세 가지 새로운 데이터셋을 생성했습니다.
롤-피치-요 각도 중 한 포즈에서 작은 각도 오차(소수점 뒤 첫 번째 숫자)가 발생했습니다. 요 값은 6.82°에서 6.22°로 변경되었습니다(소수점 뒤 첫 번째 숫자 8 → 2).
롤-피치-요 각도 중 하나에 대해 큰 각도 오차(첫 번째 자릿수)가 발생했습니다. 요 값은 6.93°에서 3.93°로 변경되었습니다(첫 번째 정수 자릿수 6 → 3).
한 포즈의 변환 벡터 값 중 하나에서 작은 변환 오류(소수점 뒤 첫 번째 숫자)가 발생했습니다. X 값이 -48.81에서 -48.21로 변경되었습니다(소수점 뒤 첫 번째 숫자 8 → 2).
보정 결과 다음과 같은 핸드-아이 매트릭스와 잔차가 얻어졌습니다.
0.999 |
-0.002 |
0.044 |
-57.032 |
0.001 |
1.000 |
0.029 |
-90.899 |
-0.044 |
-0.029 |
0.999 |
129.580 |
0 |
0 |
0 |
1 |
0.999 |
0.005 |
0.047 |
-58.558 |
-0.006 |
1.000 |
0.029 |
-87.455 |
-0.047 |
-0.029 |
0.998 |
131.117 |
0 |
0 |
0 |
1 |
0.999 |
-0.003 |
0.040 |
-54.871 |
0.002 |
1.000 |
0.029 |
-90.920 |
-0.040 |
-0.029 |
0.999 |
128.709 |
0 |
0 |
0 |
1 |
잔차
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
작은 각도 오차 |
11 |
0.104 |
0.536 |
0.256 |
0.877 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.536334 |
0.877 |
2 |
0.055345 |
0.431 |
3 |
0.057495 |
0.189 |
4 |
0.064677 |
0.301 |
5 |
0.054738 |
0.115 |
6 |
0.059730 |
0.029 |
7 |
0.070040 |
0.238 |
8 |
0.062262 |
0.119 |
9 |
0.060767 |
0.069 |
10 |
0.060585 |
0.288 |
11 |
0.062108 |
0.160 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
큰 각도 오차 |
11 |
0.505 |
2.742 |
0.966 |
4.393 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
2.742018 |
4.393 |
2 |
0.280878 |
1.050 |
3 |
0.269892 |
0.750 |
4 |
0.288396 |
1.053 |
5 |
0.291592 |
0.435 |
6 |
0.247856 |
0.691 |
7 |
0.315325 |
0.886 |
8 |
0.278548 |
0.410 |
9 |
0.297165 |
0.382 |
10 |
0.262904 |
0.314 |
11 |
0.285421 |
0.262 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
작은 이동 오류 |
11 |
0.027 |
0.059 |
0.160 |
0.388 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.025433 |
0.388 |
2 |
0.016149 |
0.270 |
3 |
0.021316 |
0.098 |
4 |
0.027773 |
0.197 |
5 |
0.013938 |
0.057 |
6 |
0.056120 |
0.154 |
7 |
0.018387 |
0.086 |
8 |
0.019042 |
0.230 |
9 |
0.031110 |
0.074 |
10 |
0.059334 |
0.167 |
11 |
0.014671 |
0.043 |
비교
아래 표에서는 핸드-아이 캘리브레이션 행렬(변환 값)과 핸드-아이 캘리브레이션 잔차 간의 결과를 비교합니다.
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
좋은 |
-55.598 |
-90.654 |
129.044 |
불량 (작은 각도 오차) |
-57.032 |
-90.899 |
129.580 |
Δ (좋음 - 나쁨) |
1.434 |
0.244 |
-0.536 |
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
좋은 |
-55.598 |
-90.654 |
129.044 |
불량 (큰 각도 오차) |
-58.558 |
-87.455 |
131.117 |
Δ (좋음 - 나쁨) |
2.960 |
-3.199 |
-2.073 |
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
좋은 |
-55.598 |
-90.654 |
129.044 |
이동 오류 (작은 이동 오류) |
-54.871 |
-90.920 |
128.709 |
Δ (좋음 - 나쁨) |
-0.727 |
0.265 |
0.335 |
잔차
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
좋은 |
11 |
0.025 |
0.054 |
0.109 |
0.192 |
불량 (작은 각도 오차) |
11 |
0.104 |
0.536 |
0.256 |
0.877 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
좋은 |
11 |
0.025 |
0.054 |
0.109 |
0.192 |
불량 (큰 각도 오차) |
11 |
0.505 |
2.742 |
0.966 |
4.393 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
좋은 |
11 |
0.025 |
0.054 |
0.109 |
0.192 |
이동 오류 (작은 이동 오류) |
11 |
0.027 |
0.059 |
0.160 |
0.388 |
터치 테스트
터치 테스트 도구의 끝부분이 ArUco 마커에 닿지 않습니다.
터치 테스트 도구의 끝부분이 ArUco 마커를 너무 세게 누릅니다.
터치 테스트를 위한 도구는 ArUco 마커의 중심에 위치해야 합니다.