Hand-eye 캘리브레이션
카메라가 로봇 어디에 어떤 각도로 달려 있는지를 측정합니다. 이 값이 있어야 카메라가 본 장애물이 로봇 좌표계에 맞게 놓이고, 스택 기동 때 장애물 인식이 켜집니다. 왼쪽 트리의 캘리브레이션 묶음은 현재 세션이 카메라 모델을 알려 줄 때만 보입니다 — 카메라가 설정돼 있고 카메라를 켜고 기동한 경우입니다.
묶음 아래 두 항목이 두 화면입니다 — 현재 값 · 새 측정. 묶음을 처음 열면 현재 값 이 보입니다.
새 측정
캘리브레이션 보드(ChArUco 또는 체커보드)를 로봇 앞에 고정해 두고 진행합니다. 보드 사양은 지원팀이 보드와 함께 알려 드립니다. 새 측정 탭을 열면 가운데 캔버스 자리에 캘리브레이션 스테이지가 나타납니다 — 조준 단계부터 카메라 화면이 크게 보이고, 진행 중에는 단계·검출 안내와 중단 아이콘 버튼이 그 화면에 있습니다. 왼쪽 탭은 보드 사양·조준·계획·결과·저장을 맡습니다. 1024px 보다 좁은 화면에서는 왼쪽 패널이 겹쳐 열리는데, 닫아 두어도 조준·계획 단계의 진행 안내 한 줄은 스테이지에 보입니다.

- 캡처 방식 을 고르세요. 수동 은 프리드라이브(FREEDRIVE)로 카메라를 손으로 옮겨 가며 자세 약 18~26개를 직접 만듭니다. 자율 구동(기본값) 은 보드를 한 번 조준하고 이동을 승인하면, 로봇이 두 번째 시드와 계획한 자세를 스스로 구동합니다. 카메라를 다시 단 직후 저장된 값과 실제가 크게 다르면 마운트 확인에서 멈출 수 있습니다 — 그때는 수동으로 먼저 측정하세요.
- 보드 종류·칸수·칸 변 길이(mm)와 목표 샘플 수를 입력하세요. ChArUco 보드는 마커 변 길이(mm)와 ArUco 딕셔너리도 필요합니다. 로봇에 현재 값이 있으면 그 측정에 쓴 보드 사양으로 미리 채워집니다. 사양이 맞지 않으면 다음 단계로 넘어가지 않습니다.
- 조준 단계에서 가운데 카메라 화면의 안내선에 맞춰 보드가 화면 중앙·0.5–0.7 m 에 오도록 로봇을 움직이세요. jog 조작 패널은 오른쪽 3D 뷰 아래에 있습니다 — 3D 뷰가 접혀 있으면 상단의 3D 뷰 펼치기를 누르세요.
- 자율 구동이면 시드 캡처 시작 을 누릅니다. 시드는 두 시점에서 찍습니다 — 한 시점만으로는 카메라 마운트 이상과 보드 이동을 구분할 수 없기 때문입니다.
- 첫 시드 는 조준한 자세에서 찍고, 로봇은 움직이지 않습니다. 보드까지의 거리와 화면 중심에서 벗어난 각도를 구동 시작 때와 같은 기준으로 확인해, 벗어나면 어느 쪽으로 맞출지 영어 안내가 나옵니다. 그동안 jog 로 맞출 수 있고, 기준을 통과한 채 멈춰야 찍힙니다(150초 안에).
- 첫 시드가 찍히면 두 번째 시드 이동 승인 카드가 나옵니다. 카메라가 보드 중심을 바라본 채 조금 돌아가는 이동이고, 카드에 툴 끝의 이동 거리·위아래 방향·회전 각과 예상 시간이 보입니다. 60초 안에 이동 승인 → 이동 확인 을 누르면 카운트다운 뒤 로봇이 천천히 움직여 두 번째 시드를 찍고, 다시 카운트다운 뒤 같은 경로로 처음 자세로 돌아옵니다. 돌아온 뒤 툴 끝 위치를 다시 재서 처음 자세와 5 mm 또는 5° 넘게 다르면 성공으로 치지 않고 멈춥니다(조준으로). 두 번째 시점에서 쓸 수 있는 보드 뷰를 얻지 못하면(카메라 마운트가 설정과 크게 다름 · 보드 크기 설정 오류 · 반사나 가림 · 영상 끊김 등) 처음 자세로 돌아온 뒤 멈춥니다.
- 이어서 계획 생성이 최대 3분 걸리고, 끝나면 구동 시작 을 눌러야 로봇이 구동합니다 — 자동으로 시작하지 않습니다.
- 시드 캡처·두 번째 시드 이동·계획 생성 중에는 진행 안내 옆과 가운데 화면 아래의 취소 로 멈출 수 있습니다. 카운트다운 중 취소하면 로봇이 움직이지 않고, 이동 중 취소하면 그 자리에 멈춥니다(브레이크는 걸지 않습니다). 브레이크까지 걸려면 하단의 정지, 비상정지는 물리 E-Stop 버튼입니다. 계획 단계의 뒤로 는 조준 단계로 돌아갑니다.
- 진행 단계는 가운데 화면에 시드 대기 → 샘플 수집 → 계산 순으로 표시되고, 보드 검출 상태와 다음에 할 일을 안내합니다 — 이 안내 문장은 영어로 나옵니다. 도중에 화면 아래의 중단(아이콘 버튼)으로 끝낼 수 있습니다 — 자율 구동 중이면 이동 중이어도 로봇이 그 자리에 멈추고(브레이크는 걸지 않습니다) 측정이 끝납니다. 브레이크까지 걸려면 하단 로봇 제어 바 오른쪽 끝의 정지 를 누르세요. 비상정지는 물리 E-Stop 버튼입니다.
- 결과 화면에서 잔차와 판정을 확인하세요. 판정은 통과 또는 기준 미달 이고, 직접 중단한 측정은 중단됨 으로 표시됩니다. 기준 미달이어도 운영자 확인 아래 저장할 수는 있지만, 다시 측정하는 쪽을 권합니다 — 기준 미달 기록으로는 실기 확인을 할 수 없습니다.
- 필요하면 라벨 (선택) 을 입력하고 적용(재시작 후) 을 누르세요. 라벨을 비워 두면 카메라 모델과 날짜로 이름이 붙습니다(예:
zedxm-2026-10-01-v1, 같은 날 두 번째는-v2). 라벨은 영문·숫자만 이름에 반영됩니다 — 한글만으로 된 라벨은 기록에는 그대로 남고, 이름은 라벨을 비웠을 때처럼 날짜로 붙습니다. 버튼 위에는 이 로봇의 지금 값과 바뀔 값(이전 → 새 측정값)이 보입니다. 이름은 저장 뒤 현재 값 에서 바꿀 수 있습니다. 저장 뒤에도 결과 복사 로 결과 전문을 복사할 수 있습니다. 저장 결과는 알림으로도 뜨며, 실패하면 사유가 버튼 위에 남습니다. 저장 중 연결이 끊기면 저장 여부를 확인할 수 없으니 현재 값 에서 확인하세요. 적용하지 못한 결과는 로봇 스택을 다시 시작해도 남아 현재 값 의 적용 안 된 결과 에서 적용할 수 있습니다.
실패 뒤 다시 하기
측정이 실패하면 결과 화면의 버튼이 실패 원인에 따라 다시 시작할 지점을 고릅니다. 다시 할 필요가 없는 단계는 건너뜁니다.
| 버튼 | 언제 | 이어지는 곳 |
|---|---|---|
| 같은 계획으로 다시 구동 | 계획은 그대로 쓸 수 있는 실패 — 중단, 작업 점유, 이동 실패, 시드 대기 시간 초과, 기준 미달(같은 자세로 한 번 더 측정해 봅니다) 등 | 계획 단계의 구동 시작 직전. 구동을 시작하면 로봇이 보드 위치를 다시 확인하고, 보드가 계획 때보다 많이 움직였으면 구동하지 않습니다 |
| 조준부터 다시 | 계획 자체가 맞지 않는 실패 — 보드가 움직임, 도달 가능한 자세나 회전 폭 부족, 모은 샘플로 해를 구하지 못함, 계획 없음 | 조준 단계. 시드를 새로 잡아 계획을 다시 만듭니다 |
| 보드 사양부터 다시 | 보드 사양이 실제 보드와 다름 | 보드 사양 폼 |
수동 측정에는 계획이 없으므로 조준부터 다시 또는 보드 사양부터 다시 만 나옵니다.
구동 전 계획 단계(시드 캡처·두 번째 시드 이동·계획 생성)가 실패하면 계획 단계의 다시 시도 가 지금 자세에서 첫 시드부터 다시 찍습니다. 두 번째 시드 이동이 끝나지 않았거나, 돌아온 자세가 처음 자세와 다르거나 확인되지 않거나, 그 이동 중에 연결이 끊겼으면 로봇이 처음 자세가 아닐 수 있습니다. 시드 캡처·계획 생성 중에 끊겼으면 로봇은 움직이지 않았으니 다시 시도 그대로입니다. 취소하면 메시지가 로봇 위치를 알려 줍니다. 로봇이 처음 자세가 아닐 수 있는 경우와 취소한 경우 버튼이 조준으로 바뀝니다 — 로봇 상태와 카메라 케이블을 확인하고 jog 로 다시 조준한 뒤 시작하세요.
구동 종료를 확인하지 못했을 때
구동 중 연결이 끊기거나 로봇의 이동 결과가 확인되지 않으면 가운데 화면이 그 사실과 원인 후보(E-Stop · 로봇 모드 변경 · 컨트롤러 오류 · 이동 시간 초과 · 서버 연결 끊김)를 한 곳에 알립니다. 로봇이 다시 움직일 수 있으니 E-Stop 으로 구동을 차단한 뒤 E-Stop 으로 구동을 차단했습니다 를 누르세요. 누르기 전에는 화면 잠금이 남고 계획 단계의 구동 시작 도 잠깁니다. 이 확인은 화면의 잠금만 풉니다 — 이전 세션이 끝났는지는 확인되지 않으므로, plem 화면에서 S 키로 로봇 스택을 정지한 뒤 다시 S 키로 시작한 다음 E-Stop 을 해제하세요.
보드 주변을 비우고 비상정지에 손이 닿는 위치에서 진행하세요. 구동 중에는 사이드바의 다른 그룹·탭, 도움말, 하단의 Job 실행·재실행·이어서 실행, 하단의 로봇 모드(BRAKED · TRAJ · FREE), jog 조작 패널이 잠기고(중단하거나 끝난 뒤에 열립니다), 좁은 화면에서는 사이드바가 닫힙니다 — 3D 열 접기·펼치기와 하단 오른쪽 끝의 정지 버튼은 잠기지 않습니다(물리 E-Stop 버튼은 화면 잠금과 무관합니다). 두 번째 시드 이동 중에도 같이 잠깁니다(취소하거나 끝난 뒤에 열립니다). 구동 중, 시드 캡처·이동·계획 생성 중, 또는 저장하지 않은 결과가 있을 때 페이지를 새로고침하거나 닫으려 하면 브라우저가 한 번 더 묻습니다 — 새로고침하면 이 화면은 처음부터 다시 시작하고, 진행 중이던 시드 캡처·이동·계획 생성은 서버가 취소합니다(이동 중이면 로봇이 그 자리에 멈춥니다). 진행 중인 측정은 서버에 연결된 화면이 하나도 남지 않을 때만 취소됩니다 — 다른 화면(다른 Pendant 탭 등)이 연결돼 있으면 측정이 계속될 수 있으니, 로봇이 움직이면 E-Stop 을 누르세요.
저장한 값은 다음 기동부터 적용됩니다. 저장 완료 화면은 저장됨 — 재시작 후 적용 과 바뀐 값(이전 → 새)을 보여 줍니다. plem 화면에서 S 키로 로봇 스택을 정지한 뒤 다시 S 키로 시작하면 현재 값 의 표시가 재시작 필요 에서 실행 중 으로 바뀝니다. 재시작 전에는 실기 확인이 거부되므로, 저장 완료 화면에는 실기 확인 버튼이 없습니다 — 현재 값 보기 로 카드로 가세요.
실기 확인
현재 값 카드의 실기 확인 버튼으로 엽니다(현재 값이 정상 기록일 때만 보입니다). 오른쪽 위 닫기 로 닫습니다. 창 위쪽에 현재 값과 그 표시(실행 중 · 재시작 필요)가, 옆(좁은 화면에서는 아래)에 광학 프레임과 병진·회전 잔차가 나오고, 기준 미달·기록 파일 없음·손상된 기록이면 그 사유가 함께 보입니다. 카메라(Camera)만 켜져 있으면 충돌 회피(cuMotion)·환경 맵(nvblox)을 끈 구성에서도 쓸 수 있습니다.
카메라 화면에서 보드 위 한 점을 누르면 로봇이 그 점 위 2 cm 로 툴 끝을 옮깁니다. 이동 을 누르면 카운트다운(「N초 후 이동합니다」)이 끝난 뒤 움직이고, 카운트다운 중 취소 하면 움직이지 않습니다. 실기 확인 화면의 안내와 거부 사유는 한국어로 나오고, 서버의 영어 문장은 거부 사유 아래 작은 줄로만 보입니다. 툴 끝이 누른 점 바로 위에 오는지 보세요 — 옆으로 빗나간 만큼이 캘리브레이션 오차입니다(보드 칸 크기를 자로 씁니다). 대각선 코너 2~3곳을 반복해 보기를 권합니다. 다음 점을 누르기 전에는 툴을 몇 cm 위로 올리세요 — 툴이 보드 가까이 있으면 옆 점으로 가는 길이 보드에 너무 가까워져 이동이 거부됩니다. 기준을 통과하고 보드 사양이 기록된 값에서만 쓸 수 있고, 그렇지 않으면 누르기 전에 잠기고 사유가 보입니다. 저장이나 「이 값 사용」 뒤에는 스택을 다시 시작해야 합니다. 이동 중 연결이 끊기면 취소가 전달되지 않았을 수 있으니, 로봇이 움직이면 E-Stop 을 누르세요.
현재 값
연결된 로봇의 Hand-eye 캘리브레이션 카드입니다. 위쪽 현재 값 에 이 로봇이 쓰는 값이, 아래 기록 에 바꿔 쓸 수 있는 다른 값이 최근 측정순으로 나옵니다. 다른 로봇의 값은 이 카드에서 보거나 바꾸지 않습니다 — plem 화면의 로봇 설정에서 바꿉니다.

측정하고 아직 적용하지 않은 결과가 있으면 카드 맨 위 적용 안 된 결과 에 측정 시각·잔차·품질(통과 · 기준 미달)과 적용 버튼이 나옵니다. 결과는 로봇 기기에 남아 화면을 새로 고치거나 로봇 스택을 다시 시작해도 사라지지 않고, 적용 은 새 측정의 적용(재시작 후) 과 같이 새 기록으로 저장해 이 로봇의 현재 값으로 바꿉니다. 새 측정을 시작하거나 fine 보정 적용 으로 관절 보정을 적용하면 이 결과는 지워집니다(옛 관절 값으로 잰 결과이므로). 측정 때와 카메라 모델·로봇 모델·로봇 시리얼·툴 회전·F/T 센서 모델이 다르면 저장이 거부되니 다시 측정하세요 — 카메라는 모델로만 비교하므로 같은 모델로 바꾼 카메라는 구별하지 못합니다.
현재 값 옆의 표시가 적용 상태를 알려 줍니다.
| 표시 | 뜻 |
|---|---|
| 실행 중 | 지금 동작 중인 로봇 스택이 이 값으로 카메라 위치를 쓰고 있습니다 |
| 재시작 필요 | 값을 바꾸거나 해제한 뒤 아직 로봇 스택을 재시작하지 않았습니다. 재시작하면 적용됩니다 |
| (표시 없음) | 아직 판단할 수 없습니다(카메라 위치를 아직 받지 못함 등) |
현재 값에 문제가 있으면 카드가 먼저 알립니다.
- 다음 재시작에서 기동이 실패합니다 — 지금 값이 이 로봇과 맞지 않습니다(로봇 모델이 다르거나 기록이 손상됨). 사유가 영어 문장으로 함께 나옵니다. 해제 하거나 다른 값을 사용하세요.
- 다음 재시작부터 이 값 대신 기본 위치를 씁니다 — 카메라 모델이나 툴 회전이 측정 때와 다릅니다. 기동은 막지 않고, 카메라 기본 위치(툴 회전·F/T 센서를 따라감)로 돌아갑니다. 다시 측정할 때까지 인식 기능(nvblox 등)은 꺼집니다. 지금 구성에서 다시 측정하세요.
- 기록 파일 없음 · 기록이 손상됨 — 가리키는 기록을 읽을 수 없습니다. 해제 하세요.
- 다시 측정하기를 권장합니다 — 이 값을 측정한 뒤 로봇의 관절 오프셋·기구학 정보가 갱신되었습니다. 파일이 다시 써진 시각으로 판단하므로 내용이 같아도 표시될 수 있습니다. 경고일 뿐 막지는 않습니다. 같은 경우의 기록에는 재측정 권장 배지가 붙습니다.
- 카메라 설정이 없거나 서로 맞지 않습니다 — 사유가 영어 문장으로 함께 나옵니다. 로봇 › 설정 버튼으로 카메라를 설정하거나 다시 저장하세요.
| 동작 | 위치 | 하는 일 |
|---|---|---|
| 적용 | 적용 안 된 결과 | 측정하고 적용하지 않은 결과를 새 기록으로 저장해 현재 값으로 바꿉니다. 다음 기동부터 적용됩니다 |
| 재측정 | 카드 | 새 측정 으로 갑니다 |
| 실기 확인 | 카드 | 위의 확인 창을 엽니다 |
| 해제 | 카드 | 캘리브레이션 없이(공장 기본값) 동작하게 합니다. 다음 기동부터 적용됩니다 |
| 가져오기 | 카드 | 내보낸 YAML 을 기록으로 추가합니다. 가져온 값은 바로 쓰이지 않습니다 |
| 이 값 사용 | 기록의 ⋯ | 그 값을 이 로봇의 현재 값으로 바꿉니다. 다음 기동부터 적용됩니다 |
| 이름 변경 · 내보내기 | 기록의 ⋯ (현재 값도) | 이름을 바꾸거나 YAML 파일로 내려받습니다 |
| 폐기 | 기록의 ⋯ | 메뉴 안에서 한 번 더 확인한 뒤 지웁니다. 어느 로봇이든 쓰고 있는 값은 폐기할 수 없습니다(현재 값은 해제한 뒤) |
기록마다 품질(통과 · 기준 미달)과 측정 시각·잔차가 나오고, 다른 로봇이 쓰고 있으면 사용 중: <로봇> 이, 다른 로봇에서 측정했으면 다른 로봇(<시리얼>)에서 측정 이 함께 보입니다. 이 로봇에 쓸 수 없는 기록(다른 카메라·로봇 모델 등)은 숨기지 않고 흐리게, 사유와 함께 보여 줍니다 — 폐기·내보내기로 정리할 수 있게 하기 위해서입니다.