터치 테스트는 핸드-아이 캘리브레이션 불량 (캘리브레이션판 이동 또는 위치 변경) 으로 인해 안전하지 않으므로 수행할 수 없습니다.
문제
핸드-아이 캘리브레이션 결과가 좋지 않아 터치 테스트를 진행하기에 안전하지 않습니다.
핸드-아이 캘리브레이션 변환 |
핸드-아이 캘리브레이션 잔차 |
프로젝션 검증 |
터치 테스트 |
|---|---|---|---|
나쁜 |
나쁜 |
나쁜 |
위험한 |
잘못된 핸드-아이 캘리브레이션 결과의 예
핸드-아이 캘리브레이션 행렬이 실제 측정값과 예상보다 큰 차이를 보이기 때문에 정확하지 않은 것 같습니다. 차이가 아주 크지는 않지만, 이 설정에서 합리적이라고 여겨지는 범위를 벗어납니다.
0.994 |
0.040 |
0.099 |
-84.190 |
-0.042 |
0.999 |
0.021 |
-84.129 |
-0.098 |
-0.025 |
0.995 |
147.697 |
0 |
0 |
0 |
1 |
147.697이라는 값은 대략 130mm이고, -84.129라는 값은 대략 90mm입니다. 이 단계에서는 부호(+/-)는 좌표계 정의에 따라 달라지므로 무시하고, 거리 자체에만 집중합니다.
보정 잔차 또한 예상보다 상당히 큰데, 대략 한 자릿수 정도 더 높습니다.
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
13 |
2.449 |
5.590 |
4.626 |
10.946 |
소형 로봇의 경우 잔차가 1mm 미만 범위에 있을 것으로 예상되며, 대형 로봇의 경우 잔차가 1mm 범위에 있을 수 있습니다. 잔차의 회전 성분은 1도 미만 범위에 있을 것으로 예상됩니다.
전체 잔차
포즈 |
회전 (°) |
이동량 (mm) |
|---|---|---|
1 |
5.590 |
10.946 |
2 |
4.864 |
6.151 |
3 |
5.294 |
5.707 |
4 |
1.682 |
7.975 |
5 |
1.537 |
4.446 |
6 |
1.570 |
6.958 |
7 |
1.738 |
2.492 |
8 |
0.950 |
2.917 |
9 |
1.973 |
5.113 |
10 |
1.546 |
0.831 |
11 |
1.851 |
0.773 |
12 |
1.701 |
3.509 |
13 |
1.544 |
2.329 |
프로젝션 검증은 기술적으로는 성공적이지만, 결과적인 오차가 여전히 허용 가능한 수준을 넘어섰습니다. 프로젝션 검증은 매우 신중하게 접근해야 하는데, 핸드-아이 캘리브레이션이 잘못되었더라도 프로젝션 오차가 허용 가능한 것처럼 보일 수 있기 때문입니다.
이러한 결과는 핸드-아이 캘리브레이션이 정확하지 않으며, 터치 테스트를 시도할 경우 실패할 가능성이 높다는 것을 강력하게 시사합니다.
가능한 원인
- Eye-in-Hand:
데이터셋 수집 중에 보정판이 움직였습니다.
- Eye-to-Hand:
데이터셋 수집 중에 카메라 또는 캘리브레이션 보드가 움직였습니다.
데이터셋 획득 중 캘리브레이션 보드 (Eye-in-Hand) 또는 카메라/보드-플랜지 (Eye-to-Hand)의 움직임은 핸드-아이 캘리브레이션이 의존하는 강체 기하학적 가정을 깨뜨립니다. 이로 인해 프레임마다 로봇과 카메라 간의 관계가 일관되지 않게 되어, 솔버가 물리적 설정과 일치하지 않는 핸드-아이 변환으로 수렴하게 됩니다.
결과적으로 잔차가 크고, 프로젝션 정확도가 떨어지며, 핸드-아이 캘리브레이션 행렬의 거리가 실제 형상과 다를 수 있습니다. 심각한 경우에는 변환 결과로 인해 충돌 위험이 발생하여 터치 테스트 검증이 안전하지 않게 될 수 있습니다.
가능한 해결책
카메라와 캘리브레이션 보드가 단단히 고정되어 데이터 수집 중 움직이지 않도록 하십시오.
동일한 데이터셋을 사용하여 핸드-아이 캘리브레이션을 반복합니다.
핸드-아이 캘리브레이션 결과(변환, 잔차, 프로젝션)를 확인합니다.
(핸드-아이 캘리브레이션 결과가 양호한 경우) 터치 테스트를 실행합니다.
문제 재현 (캘리브레이션판을 의도적으로 이동시킴)
좋은 데이터셋
아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.
보정 결과는 다음과 같습니다.
0.999 |
-0.004 |
0.043 |
-55.936 |
0.003 |
0.999 |
0.013 |
-91.919 |
-0.043 |
-0.013 |
0.998 |
128.086 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
14 |
0.022 |
0.034 |
0.180 |
0.338 |
전체 잔차
포즈 |
회전 (°) |
이동량 (mm) |
|---|---|---|
1 |
0.017 |
0.163 |
2 |
0.008 |
0.135 |
3 |
0.028 |
0.172 |
4 |
0.009 |
0.053 |
5 |
0.031 |
0.236 |
6 |
0.006 |
0.060 |
7 |
0.009 |
0.154 |
8 |
0.015 |
0.102 |
9 |
0.031 |
0.147 |
10 |
0.009 |
0.145 |
11 |
0.030 |
0.249 |
12 |
0.023 |
0.152 |
13 |
0.034 |
0.255 |
14 |
0.031 |
0.169 |
핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.
터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.
데이터셋 오류 (핸드-아이 설정 오류)
이 문제를 시뮬레이션하기 위해 데이터셋 획득 과정에서 보정판을 의도적으로 두 번의 캡처 사이에 이동시켰습니다(아래 이미지 참조).
보정 결과는 다음과 같습니다.
0.994 |
0.040 |
0.099 |
-84.190 |
-0.042 |
0.999 |
0.021 |
-84.129 |
-0.098 |
-0.025 |
0.995 |
147.697 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
13 |
2.449 |
5.590 |
4.626 |
10.946 |
전체 잔차
포즈 |
회전 (°) |
이동량 (mm) |
|---|---|---|
1 |
5.590 |
10.946 |
2 |
4.864 |
6.151 |
3 |
5.294 |
5.707 |
4 |
1.682 |
7.975 |
5 |
1.537 |
4.446 |
6 |
1.570 |
6.958 |
7 |
1.738 |
2.492 |
8 |
0.950 |
2.917 |
9 |
1.973 |
5.113 |
10 |
1.546 |
0.831 |
11 |
1.851 |
0.773 |
12 |
1.701 |
3.509 |
13 |
1.544 |
2.329 |
프로젝션 검증은 기술적으로는 성공했지만, 결과적인 오차가 허용 가능한 수준을 넘어 너무 컸습니다. 프로젝션 검증은 매우 신중하게 접근해야 하는데, 핸드-아이 캘리브레이션이 잘못되었더라도 프로젝션 오차가 허용 가능한 것처럼 보일 수 있기 때문입니다.
이러한 결과는 핸드-아이 캘리브레이션이 정확하지 않으며, 터치 테스트를 시도할 경우 실패할 가능성이 높다는 것을 강력하게 시사하므로 안전상의 이유로 터치 테스트는 생략되었습니다.
비교
아래 표에서는 핸드-아이 변환 행렬(변환 값)과 핸드-아이 보정 잔차 결과를 비교합니다.
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
양호 (보드 안정적) |
-55.936 |
-91.919 |
128.086 |
나쁨 (보드 이동됨) |
-84.190 |
-84.129 |
147.697 |
Δ (좋음 - 나쁨) |
28.254 |
-7.790 |
-19.611 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
이동 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
양호 (보드 안정적) |
14 |
0.022 |
0.034 |
0.180 |
0.338 |
나쁨 (보드 이동됨) |
13 |
2.449 |
5.590 |
4.626 |
10.946 |