핸드-아이 캘리브레이션 불량으로 인해 터치 테스트를 수행하는 것이 안전하지 않습니다 (미터 단위 사용, 밀리미터 단위 사용 안 함).
문제
핸드-아이 캘리브레이션 결과가 좋지 않아 터치 테스트를 진행하기에 안전하지 않습니다.
핸드-아이 캘리브레이션 변환 |
핸드-아이 캘리브레이션 잔차 |
프로젝션 검증 |
터치 테스트 |
|---|---|---|---|
나쁜 |
나쁜 |
나쁜 |
위험한 |
잘못된 핸드-아이 캘리브레이션 결과의 예
핸드-아이 캘리브레이션 행렬은 여러 값이 물리적 측정값과 지나치게 큰 차이를 보이므로 정확하지 않은 것으로 보입니다. 이러한 차이는 해당 설정에서 합리적이지 않습니다.
0.971 |
-0.214 |
-0.108 |
-1.683 |
-0.019 |
0.380 |
-0.925 |
375.305 |
0.239 |
0.900 |
0.365 |
457.970 |
0 |
0 |
0 |
1 |
457.970이라는 값은 대략 130mm이고, 375.305라는 값은 대략 90mm입니다. 이 단계에서는 좌표계 정의에 따라 달라지는 부호(+/-)는 무시하고, 거리 자체에만 집중합니다.
보정 잔차 또한 예상보다 상당히 크며, 두 자릿수 정도 더 높습니다.
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
전송 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
14 |
5.247 |
12.851 |
135.333 |
760.322 |
소형 로봇의 경우 잔차가 1mm 미만 범위에 있을 것으로 예상되며, 대형 로봇의 경우 잔차가 1mm 범위에 있을 수 있습니다. 잔차의 회전 성분은 1도 미만 범위에 있을 것으로 예상됩니다.
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.948 |
760.322 |
2 |
0.746 |
92.317 |
3 |
2.557 |
177.495 |
4 |
9.364 |
167.930 |
5 |
10.202 |
174.986 |
6 |
0.951 |
55.776 |
7 |
10.514 |
65.690 |
8 |
12.851 |
69.575 |
9 |
2.470 |
70.544 |
10 |
2.625 |
81.236 |
11 |
0.927 |
43.069 |
12 |
2.134 |
32.829 |
13 |
10.851 |
44.558 |
14 |
6.316 |
58.329 |
프로젝션을 통한 검증이 실패했는데, 이는 핸드-아이 캘리브레이션이 정확하지 않으며 터치 테스트가 심각하게 실패할 것임을 시사합니다.
잠재적 원인
핸드-아이 캘리브레이션을 위한 로봇 자세(이동 구성 요소)는 미터 단위로 제공됩니다.
대부분의 산업용 로봇은 로봇 자세의 기본 단위로 미터(m)를 사용합니다. 그러나 Zivid 포인트 클라우드는 밀리미터(mm) 단위로 제공됩니다. 정확한 핸드-아이 캘리브레이션을 위해서는 로봇 자세 입력값과 포인트 클라우드의 단위가 동일해야 합니다. 로봇 자세는 미터 단위이고 포인트 클라우드는 밀리미터 단위인 경우, 핸드-아이 변환 행렬이 완전히 잘못된 핸드-아이 캘리브레이션 결과가 도출될 수밖에 없습니다.
경고
ROS는 SI 단위를 표준으로 사용하므로 ROS 토픽에서 로봇 자세를 가져올 때 미터 단위를 사용합니다. ROS를 통해 로봇 자세를 수집하는 경우, 핸드-아이 캘리브레이션을 실행하기 전에 변환 성분을 밀리미터로 변환해야 합니다.
잠재적 해결책
로봇의 자세 입력값은 밀리미터 단위여야 합니다.
참고: 로봇 자세의 이동 성분이 미터 단위인 경우, 해당 값을 1000으로 나누면 밀리미터 단위로 변환할 수 있습니다.
동일한 데이터셋(로봇 자세는 밀리미터 단위)을 사용하여 핸드-아이 캘리브레이션을 반복합니다.
핸드-아이 캘리브레이션 결과 (변환, 잔차, 프로젝션) 를 확인합니다.
(핸드-아이 캘리브레이션 결과가 양호한 경우) 터치 테스트를 실행합니다.
문제 재현 방법 (로봇 자세가 밀리미터 대신 미터로 표시됨)
좋은 데이터셋
아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.
보정 결과는 다음과 같습니다.
0.999 |
-0.004 |
0.043 |
-55.476 |
0.004 |
1.000 |
0.013 |
-91.613 |
-0.043 |
-0.013 |
0.999 |
128.667 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
전송 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
14 |
0.019 |
0.029 |
0.144 |
0.222 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.026 |
0.071 |
2 |
0.013 |
0.218 |
3 |
0.020 |
0.146 |
4 |
0.026 |
0.222 |
5 |
0.026 |
0.181 |
6 |
0.007 |
0.114 |
7 |
0.007 |
0.128 |
8 |
0.015 |
0.066 |
9 |
0.023 |
0.110 |
10 |
0.010 |
0.113 |
11 |
0.024 |
0.149 |
12 |
0.023 |
0.175 |
13 |
0.029 |
0.184 |
14 |
0.022 |
0.132 |
핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.
터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.
잘못된 데이터셋 (로봇 자세가 밀리미터가 아닌 미터 단위로 표시됨)
이 문제를 시뮬레이션하기 위해, 핸드-아이 캘리브레이션 데이터셋에 있는 입력 로봇 포즈의 변환 벡터를 밀리미터에서 미터로 변환했습니다. 그런 다음, 수정된 로봇 포즈를 사용하여 동일한 데이터셋에서 핸드-아이 캘리브레이션을 다시 수행했습니다.
보정 결과는 다음과 같습니다.
0.971 |
-0.214 |
-0.108 |
-1.683 |
-0.019 |
0.380 |
-0.925 |
375.305 |
0.239 |
0.900 |
0.365 |
457.970 |
0 |
0 |
0 |
1 |
N (포즈) |
회전 평균 (°) |
최대 회전각(°) |
전송 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|
14 |
5.247 |
12.851 |
135.333 |
760.322 |
전체 잔차
포즈 |
회전 (°) |
이동 (mm) |
|---|---|---|
1 |
0.948 |
760.322 |
2 |
0.746 |
92.317 |
3 |
2.557 |
177.495 |
4 |
9.364 |
167.930 |
5 |
10.202 |
174.986 |
6 |
0.951 |
55.776 |
7 |
10.514 |
65.690 |
8 |
12.851 |
69.575 |
9 |
2.470 |
70.544 |
10 |
2.625 |
81.236 |
11 |
0.927 |
43.069 |
12 |
2.134 |
32.829 |
13 |
10.851 |
44.558 |
14 |
6.316 |
58.329 |
프로젝션을 통한 검증에 실패했는데, 이는 핸드-아이 캘리브레이션이 정확하지 않아 터치 테스트에서 심각한 오류가 발생할 가능성이 높다는 것을 시사합니다. 따라서 안전상의 이유로 터치 테스트는 생략되었습니다.
비교
아래 표에서는 핸드-아이 캘리브레이션 행렬(변환 값)과 핸드-아이 캘리브레이션 잔차 결과를 비교합니다.
데이터셋 |
X (mm) |
Y(mm) |
Z(mm) |
|---|---|---|---|
좋음 (포즈는 mm 단위) |
-55.476 |
-91.613 |
128.667 |
나쁜 (m 단위 포즈) |
-1.683 |
375.305 |
457.970 |
Δ (좋음 - 나쁨) |
-53.793 |
-466.918 |
-329.303 |
데이터셋 |
N |
회전 평균 (°) |
최대 회전각(°) |
전송 평균(mm) |
최대 이동 거리(mm) |
|---|---|---|---|---|---|
좋음 (포즈는 mm 단위) |
14 |
0.019 |
0.029 |
0.144 |
0.222 |
나쁜 (m 단위 포즈) |
14 |
5.247 |
12.851 |
135.333 |
760.322 |