Skip to main content

AI-POWERED DOCS

What do you want to know?

Nhiều Khung Hình Trong Một Recipe Duy Nhất

OV10i Note

OV10i chỉ hỗ trợ các mô hình classification. Các tính năng segmentation được đề cập trên trang này có sẵn trên các camera OV20iOV80i.

Hướng dẫn này chỉ cho bạn cách thiết lập một recipe duy nhất có thể kiểm tra các bộ phận, góc độ hoặc khung hình khác nhau mà không cần chuyển đổi sang các recipe khác. Có nhiều lý do để làm điều này, nhưng hai trường hợp sử dụng chính là:

  • khi không có đủ thời gian giữa các lần chụp để đổi recipe,
  • khi thực hiện cùng một kiểm tra trên nhiều bộ phận hoặc nhiều góc độ của một bộ phận (ví dụ: kiểm tra sự hiện diện/vắng mặt của các đinh tán ở năm vị trí khác nhau trên thân xe). Trong trường hợp này, phương pháp này tránh phải huấn luyện cùng một mô hình (sự hiện diện/vắng mặt của đinh tán) nhiều lần qua các recipe khác nhau.
note

Ví dụ sau đây là một phiên bản đơn giản với hai khung hình và một loại kiểm tra, nhưng bạn có thể sử dụng kỹ thuật tương tự cho số lượng loại kiểm tra và khung hình không giới hạn. Trong lần kiểm tra này, chúng ta sẽ tìm sự hiện diện/vắng mặt của các mũi khoan trên hai mặt của một hộp đựng mũi khoan. Một mặt có năm mũi khoan ở phía dưới, mặt còn lại có tám mũi khoan ở cả phía trên và phía dưới. Chúng ta sẽ gọi mặt có 16 mũi khoan là mặt A, và mặt có 5 mũi khoan là mặt B.

Side ASide B
Mặt A (16 mũi khoan)Mặt B (5 mũi khoan)

Tạo và Huấn Luyện Một Recipe Mới

Thay vì một recipe cho mỗi mặt, do các cách bố trí khác nhau, chúng ta sẽ kết hợp cả hai mặt vào một recipe để không cần phải huấn luyện cùng một mô hình presence/absence hai lần.

  1. Tạo một recipe mới. Trong trường hợp này, đó là một recipe classification nhưng nguyên tắc tương tự có thể được áp dụng cho segmentation.

  2. Thiết lập Template Image và Alignment cho khung hình đầu tiên:

note

Aligner không khả dụng khi kiểm tra nhiều hơn một khung hình trên cùng một recipe. Template Image và Aligner chỉ được sử dụng để thiết lập hình ảnh cơ sở cho Inspection Setup.

Template image and alignment- Side A

  1. Vẽ các ROI cho mặt A. Đặt tên sao cho giúp xác định chúng thuộc mặt nào. Trong trường hợp này, chúng tôi đã đặt tên các ROI là A1-A16.

ROIs - Side A

  1. Quay lại Template Image và Alignment để thay thế hình ảnh bằng mặt B, từ ảnh chụp mới hoặc từ thư viện.

Template image and alignment- Side B

  1. Sử dụng các biểu tượng khóa bên cạnh mỗi ROI để tránh di chuyển bất kỳ ROI nào từ mặt A, sau đó vẽ và đặt tên cho các ROI của mặt B.

ROIs - Side B

note

Đối với các recipe phức tạp hơn, lặp lại quy trình này cho bao nhiêu khung hình khác nhau mà bạn muốn kiểm tra.

  1. Gán nhãn và huấn luyện mô hình classification bằng cách sử dụng hình ảnh từ cả mặt A và B. Khi chụp và gán nhãn mặt A, không gán nhãn các ROI của mặt B và ngược lại.
Side A pass labelsSide A fail labels
Gán nhãn mặt A (Pass)Gán nhãn mặt A (Fail)
Side B pass labelsSide B fail labels
Gán nhãn mặt B (Pass)Gán nhãn mặt B (Fail)

Cấu Hình Logic Node-RED

  1. Điều hướng đến IO Block (Configure IO từ Recipe Editor) để mở luồng Node-RED của bạn.

  2. Tạo một nguồn để báo cho OV10i biết mặt nào hiện đang được kiểm tra.

note

Đây có thể là dữ liệu vị trí robot, thông tin từ PLC hoặc bất kỳ dữ liệu nào khác mà bạn muốn sử dụng. Trong ví dụ bên dưới, chúng ta sẽ mô phỏng điều này bằng cách sử dụng hai Inject nodes, một node gửi chuỗi "A" và một node gửi chuỗi "B".

  1. Vì dữ liệu mặt đầu vào có thể là tạm thời, nhưng chúng ta muốn kiểm tra xem mặt nào đang hoạt động, chúng ta sẽ lưu trữ dữ liệu trạng thái bằng cách sử dụng một Flow variable, giá trị này sẽ được giữ lại cho đến khi nhận được thông tin mặt tiếp theo. Kết nối nguồn dữ liệu của bạn với một function block chứa mã sau:
flow.set('side',msg.payload);
return msg;

Edit function node

  1. Bạn có thể kiểm tra xem dữ liệu mặt có được lưu trữ đúng cách hay không bằng cách mở thanh bên dữ liệu context, gửi một tin nhắn, sau đó nhấn refresh trên bảng Flow variable. Bảng dữ liệu flow sẽ chỉ cập nhật khi được làm mới thủ công bằng nút refresh nhỏ.

Context menu

  1. Sau khi dữ liệu mặt được lưu trữ đúng cách trong Flow variable, thêm một switch node được kết nối với All Block Outputs. Đây sẽ là block định tuyến tin nhắn có dữ liệu kiểm tra theo mặt nào đang hoạt động trong Flow variable. Cấu hình nó để xem Flow variable và định tuyến tin nhắn đến cổng 1 nếu A đang hoạt động và 2 nếu B đang hoạt động.

Edit switch node

note

Đối với các recipe phức tạp hơn, lặp lại quy trình này cho bao nhiêu khung hình khác nhau mà bạn muốn kiểm tra.

  1. Kết nối mỗi cổng đầu ra của switch với một Classification Block Logic block, và cấu hình mỗi cổng theo các quy tắc mà bạn muốn kiểm tra cho mặt đó. Switch node sẽ chỉ định tuyến một tin nhắn đến một trong các node tại một thời điểm. Hình ảnh bên dưới hiển thị cấu hình cho cổng mặt B của switch. Lưu ý rằng nó không tham chiếu đến bất kỳ ROI nào của mặt A, vì vậy logic sẽ bỏ qua kết quả của mặt đó khi việc kiểm tra được định tuyến qua node này.

Edit Classification Block Logic node

  1. Cuối cùng, kết nối các logic blocks với Inspection Pass/Fail block. Điều này cho phép các kết quả hiển thị trên HMI, cũng như được truyền đến bất kỳ PLC nào được kết nối hoặc các thành phần flow khác.

Node-RED Flow

Kiểm Thử Recipe

Bây giờ khi luồng Node-RED đã được cấu hình, đã đến lúc kiểm thử recipe từ đầu đến cuối.

  1. Đầu tiên, chúng ta sẽ gửi lệnh mặt A bằng inject node của Node-RED. Sau đó chúng ta sẽ sử dụng HMI để kiểm tra một bộ phận tốt. Lưu ý rằng, mặc dù một trong các vùng mặt B bị fail, toàn bộ kiểm tra vẫn pass.

HMI side A, pass

  1. Bây giờ khi chúng ta tháo một mũi khoan ở mặt A và kiểm tra lại, chúng ta nhận được kết quả fail như mong muốn.

HMI side A, fail

  1. Chuyển sang mặt B, chúng ta gửi tín hiệu B bằng cách sử dụng inject của Node-RED và refresh phần Flow variable trong ngăn dữ liệu context để đảm bảo rằng nó đã được lưu trữ.

Node-RED Flow B

  1. Bây giờ khi chúng ta lật sang mặt B của một bộ phận tốt, chúng ta thấy rằng việc kiểm tra pass mặc dù tất cả các vùng mặt A đều fail.

HMI side B, pass

Chúc mừng! Bây giờ bạn đã biết cách sử dụng một recipe và mô hình trên nhiều khung hình của một bộ phận. Điều này sẽ cho phép các kiểm tra phức tạp ở tốc độ cao và tích hợp chặt chẽ với robot. Nó cũng sẽ giúp bạn tiết kiệm đáng kể thời gian nếu phải huấn luyện nhiều mô hình thực hiện cùng một kiểm tra, chỉ khác nhau về các khung hình.