2D 카메라는 세상을 평면으로 찍습니다. 상자 안에 겹겹이 쌓인 부품 중 맨 위의 것을 집으려면, 또는 용접 비드가 충분히 볼록한지 확인하려면 높이가 필요합니다. 3D 카메라는 픽셀마다 거리를 함께 재서, 장면을 점들의 집합인 포인트 클라우드로 돌려줍니다.
3D 카메라의 종류
fineAi RoboVision은 다음 3D 카메라를 지원합니다.
- 패턴광(구조광) 방식 — Zivid, Photoneo, EpicEye Pixel Pro. 프로젝터로 줄무늬 패턴을 비추고, 패턴이 물체 표면에서 휘는 모양으로 거리를 계산합니다. 정지한 물체를 정밀하게 찍는 데 적합합니다.
- 레이저 방식 — EpicEye Laser M V3. 반사가 심하거나 어두운 표면에서도 안정적입니다.
이 카메라들은 정렬된(organized) 포인트 클라우드를 내보냅니다. 점들이 영상의 픽셀 격자 순서대로 놓여 있어, 2D 영상의 좌표와 3D 점을 바로 대응시킬 수 있습니다. 2D에서 YOLO로 찾은 물체 영역을 그대로 3D 점으로 옮길 수 있다는 뜻입니다. 저장은 보통 PLY 파일로 합니다.
처리 흐름
- ROI(관심 영역) — 작업대나 상자 안처럼 필요한 공간만 남깁니다.
- 다운샘플 — 일정한 간격의 격자(voxel)마다 점 하나만 남겨 점 수를 줄입니다. 이후 계산이 몇 배 빨라집니다.
- 노이즈 제거 — 주변 점들과 동떨어진 점(공중에 뜬 점)을 지웁니다.
- 법선 계산 — 점마다 주변 점들로 작은 평면을 맞춰 표면 방향을 구합니다. 파지 방향을 정할 때 씁니다.
- 평면 분리 — 가장 큰 평면(바닥, 작업대)을 찾아 지웁니다. 흔히 RANSAC처럼 무작위 표본으로 평면을 맞춰 보는 방법을 씁니다. 남은 점들이 물체입니다.
- 물체 분할 — 서로 가까운 점끼리 묶어 물체 하나하나로 나눕니다.
- 정합(Registration) — 미리 등록한 템플릿 모델을 각 물체에 맞춰 **3D 자세(위치 + 회전)**를 구합니다.
정합 결과는 카메라 좌표입니다. 로봇이 쓰려면 로봇 좌표로 바꿔야 하는데, 이 변환이 Hand-Eye 캘리브레이션입니다.
여러 방향에서 찍어 잇기
큰 물체나 굽은 표면은 한 번에 다 보이지 않습니다. RoboVision은 로봇 팔 끝에 카메라를 달고 궤적을 따라 이동하며 찍습니다. 찍는 순간마다 로봇이 알려 주는 카메라 자세를 기록해 두었다가, 그 자세를 이용해 여러 장을 하나로 잇습니다(pose-guided stitching). 영상끼리 특징점을 맞추는 방식보다 특징이 없는 매끈한 표면에서도 안정적입니다.
용접 비드 검사
용접선은 2D 영상으로는 모양만 보이지만, 3D로 보면 단면 프로파일을 잴 수 있습니다. RoboVision은 비드 단면에서 다음 값을 mm 단위로 계산합니다.
- 다리 길이(leg), 목 두께(throat)
- 비드 폭·높이, 볼록·오목 정도
- 언더컷 깊이
이 값을 ISO 5817 품질 등급(B/C/D)의 정량 기준과 비교해 등급을 매기고, 결함별 OK/NG 사유를 리포트로 남깁니다.
2D와 3D, 무엇을 쓸까
| 질문 | 2D | 3D |
|---|---|---|
| 표면에 긁힘·이물이 있는가 | ✓ 적합 | 해상도가 낮아 불리 |
| 높이·평탄도·부피가 기준 안인가 | 어려움 | ✓ 적합 |
| 겹쳐 쌓인 물체를 집을 수 있는가 | 어려움 | ✓ 적합 |
| 처리 속도가 매우 빨라야 하는가 | ✓ 유리 | 상대적으로 느림 |
실제 셀에서는 둘을 함께 씁니다. 2D로 무엇이 어디 있는지 빠르게 찾고, 그 영역만 3D로 정밀하게 봅니다.