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 精密觀察。