AI-POWERED DOCS
What do you want to know?
Nhiều Chế Độ Xem Trong Một Recipe Duy Nhất
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 nhìn hoặc chế độ xem khác nhau mà không cần chuyển sang recipe khác. Có nhiều lý do để thực hiện đ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 các góc của một bộ phận (ví dụ: 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 ô tô). Trong trường hợp này, phương pháp này giúp tránh phải huấn luyện cùng một model (hiện diện/vắng mặt đinh tán) nhiều lần trên các recipe khác nhau.
Ví dụ sau đây là một phiên bản đơn giản với hai chế độ xem 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 không giới hạn các loại kiểm tra và chế độ xem. Trong kiểm tra này, chúng ta sẽ tìm kiế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, và 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.
![]() | ![]() |
|---|---|
| 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ì tạo một recipe cho mỗi mặt, do các bố cục khác nhau, chúng ta sẽ kết hợp cả hai mặt vào một recipe để không cần huấn luyện cùng một model hiện diện/vắng mặt hai lần.
-
Tạo một recipe mới. Trong trường hợp này, đó là recipe classification nhưng cùng nguyên tắc này có thể được sử dụng với segmentation.
-
Thiết lập Template Image và Alignment cho chế độ xem đầu tiên:
Aligner không khả dụng khi kiểm tra nhiều hơn một chế độ xem 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.

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

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

- Sử dụng 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.

Đố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 chế độ xem khác nhau mà bạn muốn kiểm tra.
- Gắn nhãn và huấn luyện model classification bằng hình ảnh từ cả mặt A và mặt 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.
![]() | ![]() |
|---|---|
| Gắn nhãn mặt A (Pass) | Gắn nhãn mặt A (Fail) |
![]() | ![]() |
| Gắn nhãn mặt B (Pass) | Gắn nhãn mặt B (Fail) |
Cấu Hình Logic Node-RED
-
Điều hướng đến IO Block (Configure IO từ Recipe Editor) để mở Node-RED flow của bạn.
-
Tạo một nguồn để thông báo cho OV80i biết mặt nào đang được kiểm tra.
Đây có thể là dữ liệu vị trí robot, thông tin từ PLC, hoặc bất kỳ thứ gì khác mà bạn muốn sử dụng. Trong ví dụ dưới đây, chúng ta sẽ mô phỏng điều này bằng cách sử dụng hai Inject node, một node gửi chuỗi "A" và một node gửi chuỗi "B".
- Vì dữ liệu mặt đi vào có thể là tức 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 Flow variable, biến này sẽ duy trì cho đến khi thông tin mặt tiếp theo được nhận. Kết nối nguồn dữ liệu của bạn với một function block chứa đoạn code sau:
flow.set('side',msg.payload);
return msg;

- 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 khung Flow variable. Khung 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ỏ.

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

Đố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 chế độ xem khác nhau mà bạn muốn kiểm tra.
- Kết nối mỗi port đầu ra của switch với một Classification Block Logic block, và cấu hình mỗi block theo các quy tắc bạn muốn kiểm tra cho mặt đó. Switch node sẽ chỉ định tuyến tin nhắn đến một trong các node tại một thời điểm. Hình ảnh dưới đây hiển thị cấu hình cho port 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 kiểm tra được định tuyến qua node này.

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

Kiểm Tra Recipe
Bây giờ Node-RED flow đã được cấu hình, đã đến lúc kiểm tra recipe từ đầu đến cuối.
- Đầu tiên, chúng ta sẽ gửi lệnh mặt A bằng cách sử dụng inject node của Node-RED. Sau đó chúng ta sẽ sử dụng HMI để kiểm tra một sản phẩm tốt. Lưu ý rằng, mặc dù một trong các vùng của mặt B bị fail, toàn bộ kiểm tra vẫn pass.

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

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

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

Chúc mừng! Bây giờ bạn đã biết cách sử dụng một recipe và model trên nhiều chế độ xem 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ẽ tiết kiệm cho bạn đáng kể thời gian vốn sẽ phải dành để huấn luyện nhiều model thực hiện cùng một kiểm tra, chỉ trên các chế độ xem khác nhau





