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

문제

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

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

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

프로젝션 검증

터치 테스트

나쁜

나쁜

나쁜

위험한

합리적인

나쁜

나쁜

나쁜

합리적인

보통

나쁜

나쁜

합리적인

좋은

불량함

보통

If manually-entered robot poses contain typos, double-check the values (or the rotation convention used) and repeat the hand-eye calibration (see Potential Solution below).

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

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

핸드-아이 변환 매트릭스

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

For this setup, the value 794.894 is expected to be approximately 130 mm, and the value 17.581 is expected to be roughly 90 mm (the expected values depend on your camera-to-calibration-object geometry). At this stage we ignore the sign (+/-), because it depends on the coordinate-system definitions; we focus only on the distances.

../../_images/eye_in_hand_approximate_hand_eye_matrix.png

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

잔차

N (포즈)

회전 평균 (°)

최대 회전각(°)

이동 평균(mm)

최대 이동 거리(mm)

11

2.855

10.677

102.330

405.720

For smaller robots, we expect the residuals to be in the sub-millimeter range, while for larger robots, the residuals can be in the millimeter range. As for the rotational component of the residuals, we expect them to be in the sub-degree range.

전체 잔차
잔차

포즈

회전 (°)

이동 (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

Verification by Projection fails, which suggests that the hand-eye calibration is not correct, and that the touch test will fail badly.

../../_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

For smaller robots, we expect the residuals to be in the sub-millimeter range, while for larger robots, the residuals can be in the millimeter range. As for the rotational component of the residuals, we expect them to be in the sub-degree range.

전체 잔차
잔차

포즈

회전 (°)

이동 (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

Verification by Projection technically succeeds, but the resulting error is still too large to be acceptable. Projection verification error can seem acceptable even if the hand-eye calibration is incorrect, so treat a passing result with caution.

../../_images/projection_verification_poor.png

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

Bad Touch Test

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

Marginal Touch Test

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

잠재적 원인

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

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

잠재적 해결책

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

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

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

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

  5. Run the touch test (if the hand-eye calibration results are good).

../../_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

The Hand-Eye calibration was verified with a touch test.

../../_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

Verification by Projection failed, which suggests that the hand-eye calibration is not correct, and that the touch test will fail badly. Therefore, the touch test was skipped for safety reasons.

../../_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

The Hand-Eye calibration was verified with a touch test.

../../_images/touch_test_correct.png

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

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

Small Angle Error

롤-피치-요 각도 중 한 포즈에서 작은 각도 오차(소수점 뒤 첫 번째 숫자)가 발생했습니다. 요 값은 6.82°에서 6.22°로 변경되었습니다(소수점 뒤 첫 번째 숫자 8 → 2).

The calibration resulted in the following hand-eye matrix and residuals:

핸드-아이 변환 매트릭스

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

잔차

데이터셋

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

Comparison with Good Dataset

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

데이터셋

X (mm)

Y(mm)

Z(mm)

좋은

-55.598

-90.654

129.044

불량 (작은 각도 오차)

-57.032

-90.899

129.580

Δ (좋음 - 나쁨)

1.434

0.244

-0.536

잔차

데이터셋

N

회전 평균 (°)

최대 회전각(°)

이동 평균(mm)

최대 이동 거리(mm)

좋은

11

0.025

0.054

0.109

0.192

불량 (작은 각도 오차)

11

0.104

0.536

0.256

0.877

터치 테스트

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

Large Angle Error

롤-피치-요 각도 중 하나에 대해 큰 각도 오차(첫 번째 자릿수)가 발생했습니다. 요 값은 6.93°에서 3.93°로 변경되었습니다(첫 번째 정수 자릿수 6 → 3).

The calibration resulted in the following hand-eye matrix and residuals:

핸드-아이 변환 매트릭스

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

잔차

데이터셋

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

Comparison with Good Dataset

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

데이터셋

X (mm)

Y(mm)

Z(mm)

좋은

-55.598

-90.654

129.044

불량 (큰 각도 오차)

-58.558

-87.455

131.117

Δ (좋음 - 나쁨)

2.960

-3.199

-2.073

잔차

데이터셋

N

회전 평균 (°)

최대 회전각(°)

이동 평균(mm)

최대 이동 거리(mm)

좋은

11

0.025

0.054

0.109

0.192

불량 (큰 각도 오차)

11

0.505

2.742

0.966

4.393

터치 테스트

터치 테스트 도구의 끝부분이 ArUco 마커에 닿지 않습니다.

Small Translation Error

한 포즈의 변환 벡터 값 중 하나에서 작은 변환 오류(소수점 뒤 첫 번째 숫자)가 발생했습니다. X 값이 -48.81에서 -48.21로 변경되었습니다(소수점 뒤 첫 번째 숫자 8 → 2).

The calibration resulted in the following hand-eye matrix and residuals:

핸드-아이 변환 매트릭스

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.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

Comparison with Good Dataset

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

데이터셋

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.027

0.059

0.160

0.388

터치 테스트

터치 테스트를 위한 도구는 ArUco 마커의 중심에 위치해야 합니다.