핸드-아이 캘리브레이션 결과 불량 (수동 로봇 자세 입력 오류)

문제

핸드-아이 캘리브레이션 결과가 만족스럽지 못합니다(나쁘거나 미흡함). 다음과 같은 조합 중 하나가 나타날 수 있습니다.

핸드-아이 캘리브레이션 변환

핸드-아이 캘리브레이션 잔차

프로젝션 검증

터치 테스트

나쁜

나쁜

나쁜

위험한

합리적인

나쁜

나쁜

나쁜

합리적인

보통

나쁜

나쁜

합리적인

좋은

불량함

보통

잘못된 핸드-아이 캘리브레이션 결과의 예

핸드-아이 캘리브레이션 행렬은 여러 값이 물리적 측정값과 지나치게 큰 차이를 보이므로 정확하지 않은 것으로 보입니다. 이러한 차이는 해당 설정에서 합리적이지 않습니다.

핸드-아이 변환 매트릭스

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입니다. 이 단계에서는 좌표계 정의에 따라 달라지는 부호(+/-)는 무시하고, 거리 자체에만 집중합니다.

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

보정 잔차 또한 예상보다 상당히 크며, 두 자릿수 정도 더 높습니다.

잔차

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

프로젝션을 통한 검증이 실패했는데, 이는 핸드-아이 캘리브래이션이 정확하지 않으며 터치 테스트가 심각하게 실패할 것임을 시사합니다.

../../_images/projection_verification_bad.png
핸드-아이 캘리브레이션 결과가 미흡한 예시

핸드-아이 캘리브레이션 행렬은 합리적이며 대략적인 수동 측정에서 예상되는 결과와 일치합니다(아래 표 및 이미지 참조).

핸드-아이 변환 매트릭스

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

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

보정 잔차가 허용 가능한 범위 내에 있으므로 최적화가 성공적으로 수렴되었음을 나타냅니다.

잔차

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

프로젝션 검증은 기술적으로는 성공적이지만, 결과적인 오차가 여전히 허용 가능한 수준을 넘어섰습니다. 프로젝션 검증은 매우 신중하게 접근해야 하는데, 핸드-아이 캘리브레이션이 잘못되었더라도 프로젝션 오차가 허용 가능한 것처럼 보일 수 있기 때문입니다.

../../_images/projection_verification_poor.png

터치 테스트 결과가 만족스럽지 못합니다(나쁘거나 기준치에 미달).

터치 테스트 도구의 끝부분이 ArUco 마커를 너무 세게 누릅니다.

터치 테스트 도구의 끝부분이 ArUco 마커를 살짝 누릅니다.

잠재적 원인

로봇 컨트롤러에서 PC로 로봇 자세를 복사하는 과정에서 사람의 실수(오타)가 발생했습니다.

로봇 포즈에 오타가 있으면 포즈-이미지 쌍이 일관성을 잃게 되어 핸드-아이 캘리브레이션에 필요한 기하학적 가정이 깨집니다. 작은 숫자 하나라도 잘못되면 포즈가 심하게 왜곡되어 전체 최적화 과정이 잘못된 방향으로 흘러가게 되고, 결과적으로 잔차가 커지고 변환이 비현실적으로 변하며 전반적으로 만족스럽지 못한 캘리브레이션 결과가 나옵니다.

잠재적 해결책

  1. 로봇 컨트롤러에서 PC로 포즈를 수동으로 복사하는 경우, 오타가 없는지 값을 다시 한번 확인하십시오.

  2. 로봇 컨트롤러에서 Zivid 핸드-아이 캘리브레이션용 변환 행렬로 로봇 포즈를 변환할 때 올바른 회전 규칙을 사용해야 합니다.

  3. 동일한 데이터셋을 사용하여 핸드-아이 캘리브레이션을 반복합니다.

  4. 핸드-아이 캘리브레이션 결과(변환, 잔차, 프로젝션)를 확인합니다.

  5. (핸드-아이 캘리브레이션 결과가 양호한 경우) 터치 테스트를 실행합니다.

../../_images/touching-test-result-aruco.jpg
문제 재현 방법 (잘못된 핸드-아이 캘리브레이션)

좋은 데이터셋

아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.

../../_images/hand-eye-calibration-small-movements-dataset-only-11.png

보정 결과는 다음과 같습니다.

핸드-아이 변환 매트릭스

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

핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.

../../_images/touch_test_correct.png

터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.

데이터셋 불량 (이동 오류가 많음)

수동 로봇 자세 입력 시 발생하는 사람의 오타를 시뮬레이션하기 위해, 정상 데이터셋의 한 자세에 큰 변환 오차를 도입했습니다. 변환 벡터의 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

프로젝션을 통한 검증이 실패했는데, 이는 손과 눈 사이의 협응력이 정확하지 않으며 터치 테스트에서도 심각한 오류가 발생할 가능성이 높다는 것을 시사합니다. 따라서 안전상의 이유로 터치 테스트는 생략되었습니다.

../../_images/projection_verification_bad.png

비교

아래 표에서는 핸드-아이 캘리브레이션 행렬(변환 값)과 핸드-아이 캘리브레이션 잔차 간의 결과를 비교합니다.

핸드-아이 캘리브레이션 행렬의 변환 값

데이터셋

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

문제 재현 (미미한 핸드-아이 협응력 부족)

좋은 데이터셋

아래 이미지에 표시된 데이터 세트를 사용하여 핸드-아이 캘리브레이션이 성공적으로 수행되었습니다.

../../_images/hand-eye-calibration-small-movements-dataset-only-11.png

보정 결과는 다음과 같습니다.

핸드-아이 변환 매트릭스

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

핸드-아이 캘리브레이션은 터치 테스트를 통해 검증되었습니다.

../../_images/touch_test_correct.png

터치 테스트가 성공적으로 완료되어 핸드-아이 캘리브레이션이 정확하고 정밀하게 조정되었음을 확인했습니다.

잘못된 데이터 세트

수동 로봇 자세 입력 시 발생하는 사람의 오타를 시뮬레이션하기 위해, 기존 데이터셋에 세 가지 다른 방식으로 오류를 도입하여 세 가지 새로운 데이터셋을 생성했습니다.

롤-피치-요 각도 중 한 포즈에서 작은 각도 오차(소수점 뒤 첫 번째 숫자)가 발생했습니다. 요 값은 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 마커의 중심에 위치해야 합니다.