Nghiên cứu, thiết kế điều khiển hệ thống Robot phân loại sản phẩm ứng dụng xử lý ảnh. Xây dựng phần cứng cho hệ thống gồm PLC Mitsubishi iQR và các module để điều khiển 4 động cơ Servo MRJ4. Cấu hình các module và cơ cấu chấp hành. Cấu hình hệ thống camera, xử lý vấn đề nhiễu, ánh sáng,.... Xử lý ảnh để xác định các thông số của đối tượng từ đó xây dựng phương hướng điều khiển tay máy để gắp vật chính xác. Thiết kế giao diện điều khiển giám sát cho PC bằng ngôn ngữ C. Kết nối dữ liệu của hệ thống với phần mềm SQL server để quản lý dữ liệu.
Robot Kestrel
Tay máy Kestrel trong phạm vi đồ án của em có tất cả là 4 trục: trục X, trục
Hệ thống bao gồm trục Y, trục Z và trục cổ tay, với cơ cấu gắp bằng khí nén gắn cố định ở trục cổ tay Bốn trục được cấu tạo từ bốn động cơ servo, sử dụng cơ cấu truyền động bằng vít me Vòng quay của động cơ được truyền đến vít me qua khớp nối mềm, giúp giảm chấn khi servo hoạt động với tốc độ cao Khi vít me quay, đai ốc sẽ chuyển động thẳng, dẫn đến việc bàn máy tay gắp di chuyển theo.
Hình 1.4 Khung tay máy Kestrel
Trục X được gắn cố định trên khung robot, bao gồm hai trục dẫn hướng ở hai bên và một trục dẫn động bằng vít me, nhằm di chuyển cơ cấu định vị cho trục Y, trục Z và trục cổ tay.
Trục Y nằm trên cơ cấu định vị chạy dọc theo trục X, có 2 trục dẫn hướng và 1 trục dẫn động
Trục Z được bố trí trên cơ cấu định vị dọc theo trục Y, bao gồm 4 trục dẫn hướng và 1 trục dẫn động, nhằm nâng cao độ chính xác và ổn định tốc độ của tay máy.
Hình 1.5 Các thanh dẫn hướng của khung tay máy Kestrel
Trục cổ tay gắn trên trục Z thông qua khớp nối mềm, có thể thay đổi được tùy theo đối tượng tải
Hình 1.6 Tay máy trong hệ thống
Mặc dù đã cài đặt giới hạn dịch chuyển cho các trục X, Y, Z của bộ điều khiển vị trí RD77MS2, nhưng để đảm bảo an toàn cho hệ thống sau khi lắp đặt các cơ cấu chuyển động lên robot, nhóm đã lắp thêm các công tắc giới hạn hành trình Các đầu ra của công tắc này được kết nối với đầu vào của biến tần servo trên bảng điều khiển Khi các trục vượt quá giới hạn, công tắc hành trình sẽ gửi tín hiệu về bộ điều khiển để dừng hệ thống, giúp ngăn ngừa lỗi và đảm bảo hoạt động an toàn.
Hình 1.7 Công tắc hành trình trục X, Y
Thông số hoạt động của các trục:
- Trục cổ tay: Xoay tại chỗ
- Khả năng lặp lại bước di chuyển: có thể lặp lại các bước di chuyển nhỏ cỡ 0.1mm
- Khối lượng tối đa của tải cho phép: 2kg
- Tốc độ tối đa cho phép: 120 mm/s
- Độ phân giải encoder: 22 bit
6 Động cơ đồng bộ Servo Mitsubishi HG-KR053B
1.2.2.1 Giới thiệu chung về hệ servo xoay chiều
Trong ngành tự động hóa sản xuất hiện nay, điều khiển vị trí đóng vai trò quan trọng, đặc biệt trong các kỹ thuật gia công và lắp ráp.
Hệ thống động cơ servo, đặc biệt là AC servo, là thiết bị chuyên dụng cho việc điều khiển vị trí một cách chính xác AC servo thực hiện các lệnh điều khiển để khởi động và dừng tại vị trí mong muốn, cho phép thay đổi tốc độ nhanh chóng và điều chỉnh tốc độ phù hợp với các điều kiện khác nhau.
Hình 1.8 Sơ đồ thành phần của một hệ thống điều khiển servo đơn giản
Các thành phần của một hệ servo đơn giản gồm có:
Bộ điều khiển chuyển động là một thành phần quan trọng trong việc xây dựng quỹ đạo di chuyển, xác định các tham số như tốc độ và gia tốc của quá trình chuyển động, sau đó truyền tải thông tin này đến bộ điều khiển vị trí.
Bộ điều khiển vị trí và AC servo là hệ thống quan trọng trong việc điều khiển động cơ Bộ điều khiển vị trí gửi lệnh đến biến tần servo AC, giúp tăng cường độ chính xác của quá trình điều khiển Để đạt được điều này, encoder được lắp vào trục động cơ để cung cấp phản hồi tín hiệu về bộ điều khiển vị trí hoặc biến tần servo, nếu biến tần có đầu vào đọc xung encoder.
Động cơ servo thường được sử dụng bao gồm động cơ bước (Step motor) và động cơ xoay chiều đồng bộ kích từ nam châm vĩnh cửu (PMSM motor).
Hộp số, pulley, vít me và các cơ cấu cơ khí khác được sử dụng trong hệ thống điều khiển động cơ AC servo để chuyển đổi chuyển động thành các kiểu mong muốn như tịnh tiến hoặc quay Vị trí của trục động cơ được quy đổi về vị trí của cơ cấu, cho phép bộ điều khiển tính toán vị trí thực tế so với vị trí đặt Từ đó, hệ thống có thể điều chỉnh tốc độ, gia tốc và các thông số khác để tối ưu hóa lượng đặt xuống biến tần servo, đảm bảo độ chính xác trong điều khiển.
Encoder là thiết bị được lắp ở đầu phía sau trục động cơ, có chức năng đo và phản hồi tín hiệu xung để xác định vị trí tuyệt đối hoặc tương đối của trục động cơ, từ đó cung cấp thông tin về vị trí cho bộ điều khiển.
Trong đồ án này, hệ thống Servo xoay chiều của Mitsubishi được sử dụng, cung cấp một hệ thống điều khiển toàn diện từ cấp giám sát máy tính đến cấp chấp hành, cụ thể là Motor Servo.
Hình 1.9 Hình ảnh mô tả từng cấp mạng hệ thống Servo của hãng Mitsubishi
1.2.2.2 Động cơ Servo PMSM a Cấu trúc động cơ đồng bộ kích từ nam châm vĩnh cửu PMSM Servo và các đặc tính quan trọng
Servo PMSM là động cơ ba pha sử dụng lõi từ nam châm vĩnh cửu, thường được điều khiển bởi các bộ điều khiển chuyên dụng cùng hãng Động cơ này nổi bật với khả năng đáp ứng nhanh và chính xác, thích hợp cho các ứng dụng yêu cầu độ chính xác cao trong công nghiệp.
Servo PMSM mang lại khả năng điều khiển tốc độ và vị trí với độ chính xác cao Khác với các loại servo truyền thống, servo PMSM không sử dụng chổi than, do đó giảm thiểu tiếng ồn, rung động và không tạo ra bụi bẩn.
Hình 1.10 Cấu trúc động cơ Servo
Động cơ Servo PMSM bao gồm các thành phần chính như stator, rotor và bộ mã hóa encoder Stator được cấu tạo từ lõi và cuộn dây, tạo ra mô-men xoắn cần thiết cho quá trình quay rotor Việc áp dụng lõi sắt và chèn nhiều cuộn dây vào diện tích nhỏ giúp cung cấp lực mạnh mẽ Rotor là trục quay sử dụng nam châm vĩnh cửu, mang lại hiệu suất cao Đặc biệt, động cơ Servo PMSM nổi bật nhờ vào thuật toán điều khiển có kiểm soát, sử dụng phản hồi từ cảm biến tốc độ encoder, giúp cải thiện độ chính xác trong việc điều khiển vị trí và tốc độ.
Băng tải, cảm biến
Băng tải sử dụng trong đồ án được thiết kế và lắp ráp, có chiều dài 62 cm, chiều rộng 18 cm và chiều cao 15 cm Cấu tạo gồm:
- Động cơ: Động cơ một chiều kết hợp với hộp giảm tốc vuông góc dùng để truyền động cho băng tải
- Tang chủ động: được truyền động từ động cơ bằng puli dây đai văng
- Tang bị động: được kéo bởi băng tải do có cùng đường kính với tang chủ động
Hình 1.22 Cấu tạo băng tải
Encoder E6B2-CWZ5B của OMRON được sử dụng để theo dõi chuyển động của băng tải, giúp xác định vị trí của vật trên băng tải ngay cả khi băng tải bị kẹt hoặc chạy không ổn định Thiết bị này có những thông số cơ bản quan trọng cho việc giám sát và điều khiển hệ thống băng tải hiệu quả.
- Số xung trên vòng quay: 600p/r
- Kiểu đầu ra: NPN hở collector
Hình 1.23 Encoder của băng tải
Sơ đồ tổng quan kết nối encoder với đầu vào high-speed counter được thể hiện rõ ràng, cho phép ghép nối nguồn và tín hiệu cho một encoder 2 xung A trên bảng điều khiển PLC.
Hình 1.24 Sơ đồ ghép nối encoder
Bộ giảm áp Buck Converter là thiết bị DC-DC được sử dụng để điều khiển tốc độ động cơ băng tải Sau khi phân tích hệ thống băng tải, động cơ và khối lượng vật, tôi đã chọn mạch giảm áp Buck Converter model XL4005 XL4005 sử dụng IC chính XL4005, nổi bật với độ ổn định và hiệu năng cao, cho phép điều chỉnh điện áp đầu ra từ 1.25VDC đến 32VDC với dòng điện ngõ ra lên đến 5A, rất phù hợp cho các thiết bị yêu cầu dòng điện lớn Mạch còn tích hợp biến trở tinh chỉnh để điều chỉnh điện áp ngõ ra một cách chính xác.
Thông số kỹ thuật của XL4005:
• Điện áp ngõ ra: 1.25- 32VDC
• Nhiệt độ hoạt động: -40~ +85ºC
• Tần số hoạt động: 180kHz
• Bảo vệ ngắn mạch: Có (Tối đa 8A)
• Bảo vệ quá nhiệt: Tự động ngắt nếu quá nhiệt
• Bảo vệ phân cực ngược: Không
Cảm biến phát hiện vật
Hình 1.26 Cảm biến quang E3F-DS10C4
Cảm biến quang E3F-DS10C4 được lắp đặt trên băng tải nhằm phát hiện vật thể, từ đó gửi tín hiệu về PLC để thực hiện các thuật toán trong chương trình sẽ được trình bày ở phần sau.
Thông số kỹ thuật cơ bản của cảm biến:
- Nguồn điện cung cấp: 6- 36VDC
- Khoảng cách phát hiện: 5- 30 cm
- Dòng kích ngõ ra: 300 mA
- Ngõ ra dạng NPN cực thu hở giúp tùy biến được điện áp ngõ ra
- Kích thước: 1.8 cm x 7.0 cm
Hình 1.27 Băng tải sau khi lắp đặt hoàn chỉnh
Bộ điều khiển PLC iQ-R của hãng Mitsubishi
Giới thiệu về PLC iQ-R của Mitsubishi
Dòng PLC MELSEC iQ-R, được Mitsubishi phát triển và ra mắt vào năm 2014, là sản phẩm PLC mới nhất và hiện đại nhất của hãng Đây là dòng PLC tiên tiến nhất mà Mitsubishi từng sản xuất, mang tính cách mạng trong công nghệ tự động hóa.
Hình 1.28 Dòng PLC iQ-R của hãng Mitsubishi
Dòng PLC iQ-R của Mitsubishi Electric có nhiều cải tiến vượt trội so với thế hệ trước, với khả năng xử lý 419 lệnh trên 1ms và thời gian thực hiện lệnh LD cơ bản chỉ 0.98ns Dung lượng chương trình của dòng PLC này lên tới 1200K bước, hỗ trợ đồng bộ hóa vòng quét dữ liệu giữa PLC và mạng truyền thông, giảm thiểu độ trễ và nâng cao năng suất Hệ thống cũng cho phép sao lưu và phục hồi cấu hình tham số cùng dữ liệu của toàn bộ hệ thống PLC trong mạng, bao gồm các trạm kết nối qua CC-Link IE Field Đặc biệt, hệ thống xử lý tốc độ cao mới phát triển nhanh hơn 40 lần so với model trước (MELSEC Q), cho phép xử lý dữ liệu lớn giữa các mô-đun một cách hiệu quả Mitsubishi Electric áp dụng phương pháp tiếp cận ba điểm nhằm giảm tổng chi phí sở hữu (TCO), tăng độ tin cậy và tối ưu hóa việc tái sử dụng tài sản hiện có.
Hình 1.29 Ưu điểm vượt trội của dòng PLC iQ-R
Sê-ri MELSEC iQ-R đóng vai trò quan trọng trong việc kết nối các thế hệ tiếp theo trong lĩnh vực tự động hóa, góp phần thúc đẩy những tiến bộ mang tính cách mạng cho ngành sản xuất trong tương lai.
Dòng sản phẩm iQ-R của Mitsubishi sử dụng đế base để kết nối các module cần thiết vào một bus dữ liệu chung Bộ PLC iQ-R bao gồm các module được sắp xếp theo thứ tự từ trái qua phải: nguồn R61P, CPU R04EN, hai module RD77MS2, đầu ra số RY42NT2P và đầu vào số RX42C4.
Hình 1.30 Bộ PLC iQ-R thực tế của Mitsubishi Đặc điểm của một số module PLC dòng iQ-R
Dòng PLC iQ-R cho phép lắp ghép các module cần thiết thông qua một đế (base) vào cùng một bus dữ liệu Số lượng module có thể lắp thay đổi tùy thuộc vào dung lượng và kích thước khe cắm của thiết bị cơ sở Hiện tại, tôi đang sử dụng loại đế 8 khe cắm mang tên R38B.
Các thông số cơ bản của đế R38B:
Module nguồn R61P được sử dụng để cung cấp nguồn điện cho CPU, đầu ra, đầu vào và các module khác trên đế base
- Điện áp vận hành: 100- 240 VAC, 47- 63 Hz
- Dòng điện đầu ra định mức: 6.5A
Module CPU R04-EN là trái tim của hệ thống điều khiển, tích hợp nhiều tính năng cho các ứng dụng khác nhau Nó được kết hợp với module CC-link IE, hỗ trợ lên đến 4096 điểm I/O Bộ nhớ chương trình của CPU cho phép hệ thống chạy các chương trình dài tới 40K bước.
Ngoài ra Module CPU R04-EN có nhiều cách kết nối như dùng cáp USB hoặc cáp Ethernet để cấu hình hoặc nạp chương trình một cách dễ dàng
Hình 1.33 Cấu tạo bên ngoài của CPU R04-EN
Bảng 1.6 Mô tả một số chức năng, cấu tạo bên ngoài CPU R04-EN
Hiển thị trạng thái hoạt động và mức độ lỗi của CPU
PROGRAM RUN LED Hiển thị trạng thái hoạt động của chương trình điều khiển của PLC USER LED Hiện thị trạng thái do người lập trình cài đặt
BATTERY LED Hiển thị trạng thái pin
CARD READY LED Hiển thị trạng thái sẵn sàng của thẻ SD gắn kèm
CARD ACCESS LED Hiển thị trạng thái truy xuất dữ liệu của thẻ SD
FUNCTION LED Hiển thị trạng thái các hàm điều khiển cƣỡng bức đầu vào ra
SPEED LED Hiển thị trạng thái tốc độ và truyền thông của cổng Ethernet tích hợp SD/RD LED
SD memory card slot Khe cắm thẻ SD
SD memory card access control switch Ngắt truy xuất dữ liệu thẻ SD
RUN/STOP/RESET switch Điều khiển trạng thái hoạt động của CPU (chạy, dừng, khởi động lại)
Ethernet port (CPU P1) Cổng Ethernet tích hợp của CPU
USB port Cổng USB dùng cho lập trình hoặc truyền thông
Battery connector pin Giắc cắm pin dự phòng
Battery Pin dự phòng lưu dữ liệu thời gian và vùng bộ nhớ dữ liệu
LED cover Nắp che LED
Cassette cover Nắp che giắc kết nối SRAM cassette
USB cover Nắp che cổng USB
Network part Các cổng kết nối và hiển thị của CC-Link IE
Production information marking Thông tin sản phẩm
Module đầu vào số RX42C4 Được sử dụng để thu nhận tín hiệu logic đầu vào từ các nút bấm, công tắc, cảm biến,…
Hình 1.34 Module đầu vào số RX42C4 và sơ đồ chân giắc cắm
Một số thông số kỹ thuật của module đầu vào số RX42C4 được thể hiện trong bảng bên dưới:
Bảng 1.7 Thông số kỹ thuật của module RX42C4
Số điểm đầu vào Điện áp đầu vào định mức
Dòng điện đầu vào định mức
Bố trí tiếp điểm kết nối dây thông thường
Giao diện bên ngoài Đầu vào một chiều
(chung cực dương/chung cực âm)
Module đầu ra số RY42NT2P Được sử dụng để đưa tín hiệu điều khiển từ PLC xuống module điều khiển chuyển động và băng tải,…
Hình 1.35 Module đầu ra số RY42NT2P và sơ đồ chân giắc cắm
Thông số kỹ thuật của module đầu ra số RY42NT2P được thể hiện ở bảng bên dưới:
Bảng 1.8 Thông số kỹ thuật của module RY42NT2P
Số điểm đầu ra Điện áp tải định mức
Dòng tải tối đa (Dòng điện chuyển mạch định mức)
Bố trí tiếp điểm kết nối dây thông thường
Giao diện bên ngoài Đầu ra transistor
Module high speed counter RD62P2
Các thông số cơ bản của module RD62P2:
- Dòng điện, điện áp nguồn vào: dòng 7-10mA tại điện áp 5/12/24VDC
- Tốc độ đếm: Tối đa lên tới 200kpps
- Vùng đếm: 32 bit (từ -2147883648 đến 2147883647)
- Kiểu đếm: Đếm ngược và đếm thuận
Hình 1.36 Module high speed counter RD62P2
Tên và chức năng các bộ phận bên ngoài của module RD62P2 được mô tả chi tiết dưới bảng:
Bảng 1.9 Mô tả cấu tạo bên ngoài module RD62P2
Ký hiệu Tên Mô tả
(1) RUN LED Hiển thị tình trạng hoạt động
Nhấp nháy (chu kì 400ms): Được chọn làm module để thay đổi module trực tuyến
Tắt: Nguồn điện 5V bị gián đoạn hoặc cho phép thay thế mô-đun trong quá trình thay đổi mô- đun trực tuyến
(2) A LED On: Điện áp được cấp cho đầu vào xung pha A
(3) B LED On: Điện áp được cấp cho đầu vào xung pha B
(4) DEC LED On: Counter đang thực hiện đếm ngược
(5) FUNC LED On: Điện áp được cấp cho đầu vào chức năng
(6) Kết nối với thiết bị bên ngoài (40 chân) Đầu nối để kết nối với encoder và bộ điều khiển
(7) Số seri Số seri của module
Camera acA2500-14gm và hệ thống ánh sáng
Quá trình lắp đặt camera và căn chỉnh ánh sáng là yếu tố quan trọng ảnh hưởng đến độ chính xác của hệ thống Vision Chúng tôi đã cố định camera tại vị trí đầu băng tải, cách băng tải 70 cm Để đảm bảo ánh sáng phân bố đều, hệ thống ánh sáng được thiết lập bằng các dây LED và được điều chỉnh độ sáng một cách hợp lý.
Camera được lựa chọn cho hệ thống phân loại sản phẩm là camera acA 2500- 14gm
Hình 1.37 Camera acA2500-14gm Basler và được lắp đặt vào vị trí trên tay máy
- Tốc độ khung hình: 14fps
- Cảm biến đơn sắc/ màu: Đơn sắc
- Kích thước pixel ảnh (H x V): 2.2 àm x 2.2àm
- Độ phân giải ảnh (H x V Pixel): 2592 x 1944
Hình 1.38 Cổng kết nối camera
Chúng tôi sử dụng các chân I/O để cung cấp nguồn cho camera, kết nối camera với máy tính qua cổng Ethernet (giắc cắm 8 chân RJ-45) với tốc độ kết nối 100 Mbps.
Mô hình hệ thống Robot tay máy Kestrel
Sau khi lắp đặt hoàn chỉnh các bộ phận như băng tải, cơ cấu tay gắp và camera, nhóm đã tiến hành ghép nối chúng thành một hệ thống hoàn chỉnh Tiếp theo, quá trình chạy thử và kiểm tra được thực hiện để phát hiện lỗi và sai sót Kết quả kiểm tra cho thấy hệ thống vận hành ổn định và không có lỗi.
Mô hình hệ thống hoàn chỉnh được mô tả như hình:
Hình 1.39 Mô hình hê thống Robot tay máy Kestrel
THIẾT KẾ CHƯƠNG TRÌNH ĐIỀU KHIỂN
Mô tả công nghệ
Hệ thống Robot phân loại sản phẩm sử dụng công nghệ xử lý ảnh với Robot tay máy Kestrel bao gồm 4 trục X, Y, Z và CT Trong đó, trục CT là trục khớp tay quay, cho phép kết nối với nhiều thiết bị ngoại vi để phục vụ cho các mục đích khác nhau Hệ thống này sử dụng tay gắp bằng khí nén để thực hiện nhiệm vụ gắp sản phẩm, trong khi các trục X, Y, Z đảm nhiệm việc điều khiển tay gắp đến vị trí chính xác trong không gian giới hạn của khung tay máy.
Hình 2.1 Quỹ đạo lập trình cho tay máy Kestrel
Chu trình làm việc của hệ thống bắt đầu khi tay máy ở vị trí Home (gốc O) và nhấn nút Start trên giao diện máy tính được lập trình bằng C# trong Visual Studio Tay máy di chuyển đến vị trí chờ (điểm teaching 1), tương ứng với vị trí chụp ảnh A, trong khi băng tải hoạt động Khi vật đến vị trí cảm biến, băng tải dừng lại, PLC gửi tín hiệu để bắt đầu chụp và xử lý ảnh Hệ thống sẽ xác định chiều dài, góc lệch và tọa độ của vật Nếu vật không đáp ứng tiêu chí, tay gắp giữ nguyên ở vị trí A và băng tải tiếp tục chạy Ngược lại, nếu vật thỏa mãn, tay gắp sẽ di chuyển đến vị trí gắp vật (điểm B) và sau đó đến vị trí nhả vật (điểm C), hoàn thành một chu trình phân loại.
Hệ thống hoạt động lặp lại cho đến khi được dừng lại, với thứ tự các bước thực hiện được đánh số rõ ràng Quỹ đạo của từng bước có thể là đường thẳng hoặc đường tròn, tùy thuộc vào cài đặt trong mảng dữ liệu Ngoài việc lập trình để chạy, tay máy cũng có khả năng dừng quá trình bất cứ lúc nào theo yêu cầu của người điều khiển, sau đó hệ thống sẽ trở về vị trí Home Mỗi lần xử lý ảnh để phân loại vật, hệ thống sẽ cập nhật số liệu, và khi kết thúc, dữ liệu sẽ được lưu trữ trên SQL server cũng như cập nhật thông tin trên giao diện.
Lưu đồ chương trình điều khiển
Cấu trúc chương trình PLC trong phần mềm GX Work 3 bao gồm nhiều loại như chương trình chạy lần đầu, vòng quét chính, vòng quét theo chu kỳ cố định, ngắt và chương trình chờ gọi Vòng quét chính được chia thành các chương trình con để quản lý chức năng hệ thống hiệu quả hơn và thuận tiện cho làm việc nhóm.
- Chương trình bật biến tần servo sẵn sàng: Chương trình dùng để đưa biến tần servo vào trạng thái sẵn sàng cho hoạt động điều khiển chuyển động
Hình 2.2 Lưu đồ servo sẵn sàng
Chương trình Reset được thiết kế để khôi phục các lỗi của module RD77MS2 và biến tần servo, nhằm đảm bảo quá trình điều khiển vị trí không bị gián đoạn khi xảy ra sự cố (*phụ lục A3)
Hình 2.3 Lưu đồ chương trình reset trạng thái lỗi của RD77MS2
Chương trình JOG được sử dụng để điều khiển vị trí từng trục đến tọa độ mong muốn, từ đó xác định các điểm cần đến theo các trục Dữ liệu sẽ được nạp vào vùng nhớ D của PLC và sau đó chuyển vào vùng nhớ đệm của module RD77MS2, phục vụ cho quá trình tự động hóa (Thông tin chi tiết về lập trình có tại phụ lục A2)
Hình 2.4 Lưu đồ chương trình chạy JOG
Chương trình Teaching điểm là công cụ lưu trữ dữ liệu vị trí cần thiết cho chương trình Position Với module RD77MS2, mỗi trục có khả năng lưu trữ lên đến 600 điểm.
Hình 2.5 Lưu đồ chương trình Teaching
Chương trình Position là công cụ dùng để nạp dữ liệu điều khiển vị trí từ vùng nhớ D vào bộ nhớ đệm của các module RD77MS2, nhằm hỗ trợ cho chương trình điều khiển vị trí tự động Thông tin chi tiết về chương trình lập trình có thể tham khảo tại phụ lục A4.
Hình 2.6 Lưu đồ chương trình Position nạp dữ liệu điều khiển vào bộ nhớ đệm
Chương trình chạy tự động được phát triển dựa trên yêu cầu công nghệ, với lưu đồ thuật toán Grafcet đã được xây dựng cho chương trình điều khiển PLC.
Hình 2.7 Lưu đồ thuật toán Grafcet PLC cho chương trình chạy tự động
Dựa vào lưu đồ Grafcet, chúng ta sẽ tạo ra các hàm đóng (set) Si+ và hàm cắt (reset) Si- để xây dựng biến đầu ra Si tương ứng với mỗi trạng thái thứ i.
Từ các dữ liệu trên ta xây dựng được hàm logic
Chương trình về vị trí home là điểm gốc tọa độ để xác định các vị trí khác trong điều khiển Khi yêu cầu trở về vị trí home, chương trình sẽ kiểm tra trạng thái của các trục; nếu không có trục nào đang bận, cả bốn trục X, Y, Z, CT sẽ trở về tọa độ (0,0,0,0) (*Chi tiết lập trình xem tại phụ lục A4)
Hình 2.8 Chương trình về Home
Cài đặt thông số cho module PLC và biến tần Servo
To configure the RD77MS2 module, navigate to the Parameter section in the toolbar, select Module Information, and choose the desired RD77MS2 module Then, select the Simple Motion Module to open the MELSOFT Simple Motion Module Setting Function window Click on Parameter to begin setting the parameters.
Các tham số cần cài đặt trong mục Parameter được mô tả dưới bảng:
Bảng 2.1 Các tham số cần cài đặt cho module RD77MS2
The units for the X, Y, and Z axes are set to 0 mm, while the R axis is set to 2 degrees All motors share the same encoder resolution, resulting in a default value for pulses per rotation.
Số liệu 4194304 đề cập đến độ dịch chuyển trên một vòng quay của các trục X, Y, Z Cụ thể, bước răng của vít me cho trục X và Y là 3750 μm, trong khi đó trục Z có thông số khác.
2300 μm Với trục R, độ dịch chuyển là 360º Pr.4: Unit Magnification Tỉ số truyền cơ khí của cơ cấu, với tay máy được đặt là 1:1 Pr.9 và Pr.10: Acc.time và
Thời gian tăng tốc và giảm tốc của động cơ
Pr.12: Software upper limit Giới hạn hành trình trên bằng phần mềm
Pr.13: Software lower limit Giới hạn hành trình dưới bằng phần mềm
Pr.22: Input signal logic selection: upper limit and lower limit
Cài đặt tín hiệu logic cho các tín hiệu đầu vào của công tắc hành trình là cần thiết Trong bài viết này, chúng ta chỉ tập trung vào công tắc hành trình cho trục X và Y, với dạng logic được cài đặt là 0: Negative Logic (đầu vào sink).
Pr.116: FLS signal selection: Input type
Chọn đầu vào cho tín hiệu công tắc hành trình giới hạn trên Ở đây ta chọn 1: Servo Amplifier để sử dụng DI1 của giắc CN3 biến tần servo
40 làm đầu vào tín hiệu công tắc hành trình giới hạn trên
Pr.117: RLS signal selection: Input type
Chọn đầu vào cho tín hiệu công tắc hành trình giới hạn dưới bằng cách sử dụng Servo Amplifier Chúng ta sẽ sử dụng DI2 từ giắc CN3 của biến tần servo làm đầu vào cho tín hiệu công tắc hành trình này.
Trong bảng trên, Pr1 đến Pr4 đại diện cho các tham số cơ bản 1, trong khi Pr9 và Pr10 là các tham số cơ bản 2 Việc cài đặt những thông số này cần tuân theo thông số kỹ thuật của máy và hệ thống điều khiển Servo khi khởi động.
Còn các tham số còn lại trong bảng, cài những tham số này theo cấu hình hệ thống khi khởi động hệ thống
Cài đặt biến tần Servo MR-J4-10B
Cài đặt biến tần Servo được thực hiện tương tự như cài đặt cho module RD77MS2 thông qua cửa sổ ứng dụng MELSOFT Simple Motion Module Setting Function Để cài đặt thông số, người dùng cần click vào phần Servo Parameter Hai tham số quan trọng cần chú ý khi cài đặt biến tần bao gồm:
- Trong mục Component Parts: Điều chỉnh tham số pin (sau khi đã lắp pin vào biến tần) để sử dụng tín năng encoder tuyệt đối
Trong mục I/O, cần sửa giá trị tham số PD02 (Tín hiệu đầu vào tự động trên lựa chọn 2) để cho phép sử dụng DI1 và DI2 làm đầu vào cho tín hiệu công tắc giới hạn hành trình.
Cài đặt bộ nhớ chương trình
Danh sách địa chỉ bộ nhớ được sử dụng trong chương trình ladder để điều khiển tay máy được liệt kê chi tiết trong bảng:
Bảng 2.2 Danh sách địa chỉ bộ nhớ được sử dụng trong chương trình Ladder Địa chỉ Mô tả chức năng
M11 Bit yêu cầu thực hiện SET điểm Home (9001)
M12 Bit sẵn sàng chạy điểm Home (9002)
M20 Bit yêu cầu thực hiện chế độ chạy JOG trục X
M23 Bit yêu cầu thực hiện chế độ chạy JOG trục Y
M26 Bit yêu cầu thực hiện chế độ chạy JOG trục Z
M29 Bit yêu cầu thực hiện chế độ chạy JOG trục CT
D30 Thanh ghi lưu điểm teaching
D40 Thanh ghi ghi điểm Position
X21 Tín hiệu đồng bộ truyền thông module RD77MS2_1
X41 Tín hiệu đồng bộ truyền thông module RD77MS2_2
Y20 Tín hiệu PLC sẵn sàng cho module RD77MS2_1
Y40 Tín hiệu PLC sẵn sàng cho module RD77MS2_2
Biến tần gắn với module RD77MS2_1 được kích hoạt bởi Y21, trong khi Y41 cho phép hoạt động của biến tần với module RD77MS_2 Ngoài ra, Y68 đảm nhận chức năng điều khiển van khí nén để gắp và nhả vật.
D500 Tọa độ trục X xác định bởi RD77_1, 16 bit thấp
D501 Tọa độ trục X xác định bởi RD77_1, 16 bit cao
D502 Tọa độ trục Y xác định bởi RD77_1, 16 bit thấp
D503 Tọa độ trục Y xác định bởi RD77_1, 16 bit cao
D504 Tọa độ trục Z xác định bởi RD77_2, 16 bit thấp
D505 Tọa độ trục Z xác định bởi RD77_2, 16 bit cao
D506 Tọa độ trục R xác định bởi RD77_2, 16 bit thấp
D507 Tọa độ trục R xác định bởi RD77_2, 16 bit cao
M501 So sánh tọa độ điểm 1
M502 So sánh tọa độ điểm 2
M503 So sánh tọa độ điểm 3
M504 So sánh tọa độ điểm 4
M505 So sánh tọa độ điểm 5
U2\G2400 Tọa độ hiện tại trục X xác định bởi RD77_1
U2\G2500 Tọa độ hiện tại trục Y xác định bởi RD77_1
U4\G2400 Tọa độ hiện tại trục Z xác định bởi RD77_2
U4\G2500 Tọa độ hiện tại trục CT xác định bởi RD77_2
U2\G4348 Dữ liệu Teaching trục X xác định bởi RD77_1
U2\G4349 Vị trí Teaching trục X xác định bởi RD77_1
U2\G4448 Dữ liệu Teaching trục Y xác định bởi RD77_1
U2\G4449 Vị trí Teaching trục Y xác định bởi RD77_1
U4\G4348 Dữ liệu Teaching trục Z xác định bởi RD77_2
U4\G4349 Vị trí Teaching trục Z xác định bởi RD77_2
U4\G4448 Dữ liệu Teaching trục CT xác định bởi RD77_2
U4\G4449 Vị trí Teaching trục CT xác định bởi RD77_2
U2\G6006 Tọa độ vị trí 1 trên trục X xác định bởi RD77_1
U2\G7006 Tọa độ vị trí 1 trên trục Y xác định bởi RD77_1
U4\G6006 Tọa độ vị trí 1 trên trục Z xác định bởi RD77_2
U4\G7006 Tọa độ vị trí 1 trên trục CT xác định bởi RD77_2
U2\G6016 Tọa độ vị trí 2 trên trục X xác định bởi RD77_1
U2\G7016 Tọa độ vị trí 2 trên trục Y xác định bởi RD77_1
U4\G6016 Tọa độ vị trí 2 trên trục Z xác định bởi RD77_2
U4\G7016 Tọa độ vị trí 2 trên trục CT xác định bởi RD77_2
U2\G6026 Tọa độ vị trí 3 trên trục X xác định bởi RD77_1
Để cấu hình các tham số PLC cho việc cập nhật dữ liệu giám sát RD77MS2 vào các vùng nhớ D, cần chú ý đến các thông số như tốc độ các trục, độ lệch xung, mã lỗi, mã cảnh báo và trạng thái các trục Bên cạnh đó, cũng cần thiết lập các bit trung gian như M299, M400 (đã sẵn sàng chạy Auto), M700, M701, M702 (khi ấn StopAuto thì hệ thống tay máy sẽ về Home).
XỬ LÝ ẢNH PHÂN LOẠI SẢN PHẨM
Đặt vấn đề
Trong bài toán phân loại sản phẩm, công nghệ xử lý ảnh là yếu tố thiết yếu mà mọi hệ thống phân loại đều cần Có nhiều phương pháp xử lý ảnh, chẳng hạn như sử dụng camera để chụp mẫu vật, sau đó so sánh với hình ảnh đã lưu trữ để xác định chất lượng Nếu sản phẩm đạt yêu cầu, nó sẽ được chuyển sang giai đoạn đóng gói; ngược lại, nếu không đạt, sản phẩm sẽ bị loại bỏ và trở thành phế phẩm Tuy nhiên, trong thực tế, một số bài toán không cần áp dụng công nghệ phức tạp này, vì nó có thể làm tăng độ phức tạp và chi phí của hệ thống.
Trong đồ án này em dùng phương pháp phân loại vật dựa trên hình dạng và kich thước của nó Yêu cầu đặt ra như sau:
- Camera được gắn trên trục Y và sẽ chụp ảnh khi tay máy di chuyển đến vị trí chụp ảnh
Khi chụp ảnh, phần mềm sẽ xử lý để xác định xem mẫu vật có cần gắp hay không Nếu cần thiết, phần mềm sẽ cung cấp các dữ liệu quan trọng như tọa độ tâm, kích thước và góc lệch so với phương trục Y của vật trên băng tải.
- Quy đổi các thông tin trên sang tọa độ thực và xác định tọa độ thực của vật trong khung tọa độ tay máy
- Gửi các dữ liệu sau khi hoàn tất quá trình xử lý ảnh xuống PLC để điều khiển cơ cấu tay máy gắp vật cần phân loại
Sau khi hoàn thành việc gắp một vật, số lượng sản phẩm tăng thêm một và quy trình phân loại tiếp tục cho đến khi kết thúc ca làm việc Dữ liệu như thời gian làm việc, tên người vận hành máy và số lượng sản phẩm phân loại sẽ được lưu trữ trên SQL Server Cuối ngày, tổng số sản phẩm phân loại từ các ca làm việc cũng được ghi lại Chúng ta có thể truy xuất thông tin từ SQL Server để xem và tra cứu theo từng ngày trên Windows Form.
Nghiên cứu, tìm hiểu về xử lý ảnh
Tổng quan về xử lý ảnh
Xử lý ảnh là một lĩnh vực quan trọng trong thị giác máy tính, liên quan đến việc biến đổi hình ảnh ban đầu thành hình ảnh mới theo ý muốn của người sử dụng Quá trình này bao gồm phân tích, phân lớp đối tượng, cải thiện chất lượng hình ảnh, phân đoạn và tách biệt các thông tin hình ảnh, cũng như nhận dạng các đặc điểm trong ảnh.
Xử lý ảnh số là một lĩnh vực quan trọng trong tin học ứng dụng, liên quan đến việc sử dụng các phương pháp và kỹ thuật để biến đổi, truyền tải hoặc mã hóa các ảnh tự nhiên Trong khi xử lý dữ liệu bằng đồ họa tập trung vào các ảnh nhân tạo được tạo ra bởi chương trình, xử lý ảnh số chủ yếu nhằm nâng cao chất lượng và khả năng hiển thị của hình ảnh Mục đích chính của xử lý ảnh là cải thiện thông tin hình ảnh và tối ưu hóa việc truyền tải dữ liệu.
- Biến đổi làm tăng chất lượng ảnh
Nhận dạng và đánh giá nội dung ảnh là quá trình phân tích hình ảnh thành các phần có ý nghĩa, giúp phân biệt giữa các đối tượng khác nhau và mô tả cấu trúc của hình ảnh gốc Một số phương pháp cơ bản trong nhận dạng ảnh bao gồm nhận diện đối tượng, tách cạnh và phân đoạn hình ảnh Kỹ thuật này được ứng dụng rộng rãi trong y học, như xử lý tế bào và nhận diện nhiễm sắc thể, cũng như trong việc nhận dạng chữ trong văn bản.
Trong xử lý ảnh, khái niệm phần tử ảnh (Picture Element) hay còn gọi là Pixel là rất quan trọng Ảnh thực tế là một hình ảnh liên tục về không gian và độ sáng, nhưng để xử lý bằng máy tính, cần phải số hóa ảnh Quá trình số hóa bao gồm việc chuyển đổi tín hiệu liên tục thành tín hiệu rời rạc thông qua lấy mẫu và lượng hóa, giúp phân biệt các điểm kề nhau mà mắt thường không thể nhận biết.
Mỗi pixel trong ảnh được xác định bởi một cặp tọa độ x, y và màu sắc, tạo nên độ phân giải (resolution) của ảnh Khi số hóa, ảnh thường được biểu diễn dưới dạng bảng hai chiều I(n, p) với n dòng và p cột, cho thấy rằng ảnh bao gồm n.p pixels.
Mật độ ảnh là chỉ số quan trọng trong việc xác định chất lượng hiển thị của ảnh số Độ phân giải của ảnh được tính bằng tích số giữa giá trị lớn nhất của chiều rộng (x) và chiều cao (y) Khi diện tích ảnh lớn hơn nhưng vẫn giữ nguyên độ phân giải, độ mịn của ảnh sẽ giảm, dẫn đến sự kém liên tục của các điểm Mức xám của ảnh (Gray level) cũng đóng vai trò quan trọng trong việc thể hiện chi tiết và độ sâu của hình ảnh.
Một điểm ảnh được xác định bởi hai đặc trưng chính: vị trí (x, y) và độ xám của nó Độ xám thể hiện cường độ sáng của điểm ảnh và được biểu thị bằng giá trị số tại vị trí đó Các giá trị độ xám phổ biến bao gồm 16, 32, 64, 128 và 256.
Mức 256 là tiêu chuẩn phổ biến trong kỹ thuật máy tính, do 1 byte (8 bit) có khả năng biểu diễn 256 mức xám Điều này có nghĩa là từ 0 đến 255, mỗi giá trị tương ứng với một mức xám cụ thể.
- Ảnh đen trắng: là ảnh có hai màu đen, trắng (không chứa màu khác) với mức xám ở các điểm ảnh có thể khác nhau
Ảnh nhị phân là loại hình ảnh chỉ có hai mức màu, đen và trắng, với mỗi điểm ảnh được mô tả bằng 1 bit Điều này có nghĩa là mỗi pixel trong ảnh nhị phân chỉ có thể mang giá trị 0 hoặc 1.
Trong lý thuyết màu sắc, ba màu cơ bản là Đỏ, Xanh dương và Xanh lá cây được sử dụng để tạo ra thế giới màu sắc Mỗi màu được mô tả bằng 3 byte, cho phép hiển thị lên đến 16,7 triệu màu khác nhau.
Trong biểu diễn ảnh, pixel là các phần tử đặc trưng quan trọng Một hàm hai biến có thể được xem như một cách để biểu diễn thông tin của ảnh Các mô hình biểu diễn ảnh cung cấp mô tả logic và định lượng về các tính chất của hàm này Đặc biệt, cần chú ý đến tính trung thực của ảnh và các tiêu chuẩn “thông minh” để đánh giá chất lượng ảnh cũng như hiệu quả của các kỹ thuật xử lý.
Việc xử lý ảnh số bao gồm hai bước chính: mẫu hóa và lượng tử hóa Chẳng hạn, một ảnh ma trận 512x512 pixel yêu cầu chuyển đổi tín hiệu tương tự sang tín hiệu số thông qua quá trình lượng tử hóa, biến đổi ảnh đã lấy mẫu thành một số mức xám hữu hạn Ngoài ra, tăng cường và khôi phục ảnh cũng là những bước quan trọng trong quy trình này.
Khi ảnh trải qua các quá trình như truyền ảnh hay quét ảnh, chất lượng của chúng thường giảm so với ảnh gốc Để cải thiện khả năng quan sát và đảm bảo độ chính xác khi xem ảnh, cần áp dụng các biện pháp nâng cao chất lượng ảnh Quá trình này được gọi là tăng cường ảnh.
Tăng cường ảnh là tập hợp các kỹ thuật nhằm cải thiện chất lượng hình ảnh, giúp loại bỏ các suy giảm do hệ thống hoặc kênh xử lý ảnh gây ra Ngoài việc nâng cao chất lượng hình ảnh, các kỹ thuật này còn hỗ trợ tăng độ chính xác trong quá trình tìm kiếm tự động và chuyển đổi định dạng của bức ảnh.
Khôi phục ảnh là quá trình phục hồi ảnh gốc từ những bức ảnh bị biến dạng, nhằm cải thiện chất lượng và đưa ảnh gần với thực tế nhất Để đạt được kết quả tốt trong khôi phục ảnh, việc hiểu rõ các nguyên nhân và hàm gây ra biến đổi là rất quan trọng Các nguyên nhân gây ra biến dạng thường gặp có thể đến từ nhiều yếu tố khác nhau.
- Do camera đầu thu kém chất lượng
- Do môi trường, ánh sáng, hiện trường, khí quyển, nhiễu xung
Hệ thống phân loại sản phẩm theo kích thước
Sơ đồ khối hệ thống
Hình 3.3 Sơ đồ phân loại sản phẩm
Camera chụp ảnh các vật cần phân loại và gửi dữ liệu về phần mềm xử lý ảnh trên máy tính Tại đây, ảnh được cắt, lọc và chuyển đổi thành ảnh nhị phân để xác định tâm tọa độ, kích thước và góc nghiêng của vật Dựa trên thông tin này, máy tính sẽ phát lệnh cho các cơ cấu chấp hành như PLC, bộ điều khiển servo và băng tải để thực hiện phân loại sản phẩm theo kích thước đã được cài đặt Trong đồ án này, sản phẩm cần phân loại là các mẩu gỗ hình chữ nhật có cùng màu sắc và kích thước chiều rộng, chiều cao, nhưng khác nhau về chiều dài, vì vậy phương pháp phân loại được sử dụng là dựa vào hình dáng và kích thước chiều dài của vật.
Hình 3.4 Các mẫu sản phẩm cần phân loại
Vật cần phân loại được vận chuyển bằng băng tải và dừng lại khi cảm biến phát hiện vật Tay máy Kestrel sẽ di chuyển đến vị trí chụp ảnh để ghi lại hình ảnh và gửi về máy tính xử lý Phần mềm trên máy tính sẽ xác định kích thước vật và kiểm tra xem có thỏa mãn yêu cầu phân loại hay không Nếu kích thước thỏa mãn, phần mềm sẽ gửi tọa độ tâm và góc lệch tới PLC để điều khiển tay máy Kestrel gắp vật Ngược lại, nếu không thỏa mãn, băng tải sẽ tiếp tục chạy để bỏ qua vật đó Kết quả xử lý, bao gồm tọa độ tâm, góc lệch và ảnh đã qua xử lý, sẽ được hiển thị trên giao diện Windows Form Để đáp ứng yêu cầu của hệ thống, phần mềm xử lý ảnh cần hoạt động nhanh chóng và hiển thị dễ dàng cho người dùng, vì vậy tôi đã thiết kế giao diện bằng ngôn ngữ C# trên nền tảng Winform kết hợp với thư viện EmguCV.
Thư viện EmguCV và một số hàm xử lý ảnh
EmguCV là thư viện xử lý hình ảnh mạnh mẽ, đa nền tảng NET, được thiết kế cho ngôn ngữ C# Thư viện này cho phép người dùng gọi các chức năng của OpenCV từ NET và tương thích với nhiều ngôn ngữ lập trình như C#, VB, VC++, và Iron Python EmguCV có thể được biên dịch bằng Visual Studio, Xamarin Studio và Unity, và có khả năng chạy trên các hệ điều hành như Windows, Linux, Mac OS X, iOS, Android và Windows Phone OpenCV, viết tắt của Open Source Computer Vision Library, bao gồm hơn 2500 thuật toán xử lý hình ảnh.
OpenCV là một thư viện mã nguồn mở, được phát triển bằng ngôn ngữ C và C++, nhằm cải thiện hiệu suất tính toán trong lĩnh vực thị giác máy Thư viện này tập trung vào các ứng dụng thời gian thực, cung cấp 500 hàm hữu ích cho việc xử lý và phân tích hình ảnh.
EMGU CV được sử dụng trong nhiều ứng dụng: nhận dạng ảnh, nhận dạng khuôn mặt, nhận dạng cử chỉ, khử nhiễu, điều chỉnh độ sáng,…
Hình 3.5 EmguCV- 1 wrapper của openCV
Dưới đây là các hàm xử lý ảnh cơ bản trong EmguCV được sử dụng trong đồ án:
Hàm cắt ảnh theo vị trí và kích thước cho phép bạn xác định vị trí bắt đầu cắt bằng các tham số dx và dy, cùng với chiều dài và chiều rộng của ảnh muốn cắt thông qua w và h Cú pháp sử dụng là: myROI(dx, dy, w, h);
- GaussianBlur: Lọc ảnh (làm mịn ảnh, làm mờ ảnh), sử dụng lý thuyết hàm
Gaussian để tính toán việc chuyển đổi mỗi Pixel của hình
- Convert() : Chuyển đổi hệ màu
Image cropIn = img.Convert();
Phân ngưỡng ảnh là một kỹ thuật quan trọng trong xử lý hình ảnh, trong đó mỗi pixel được gán giá trị dựa trên một ngưỡng xác định Nếu giá trị của pixel vượt quá ngưỡng, nó sẽ được gán giá trị 1; ngược lại, nếu nhỏ hơn ngưỡng, giá trị của pixel sẽ là 0 Kỹ thuật này giúp phân loại và xử lý hình ảnh một cách hiệu quả.
CvInvoke.Threshold(cropIn,cropOut,250,255,Emgu.CV.CvEnum.Thresho ldType.BinaryInv);
- FindContours: Xác định đường biên
CvInvoke.FindContours(cropOut,contours,hier,Emgu.CV.CvEnum.RetrT ype.List,Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
- MinAreaRect: Tìm hình chữ nhật nhỏ nhất bao quanh đường viền kể cả dưới dạng xoay
RotatedRect rect = CvInvoke.MinAreaRect(contours[i]);
- DrawContours: Vẽ đường viền xung quanh hình và hiển thị lên ảnh
CvInvoke.DrawContours(img, contours, i, new MCvScalar(120, 0,
- CvInvoke.ArcLength : Tính chu vi của đường bao đó
- CvInvoke.ApproxPolyDP : Hàm xấp xỉ đa giác, dùng để tìm ra 4 đỉnh của hình chữ nhật
CvInvoke.ApproxPolyDP(contours[i], approx, 0.02 * perimeter, true);
Thuật toán xử lý ảnh
Hình 3.6 Thuật toán xử lý ảnh
Để khởi tạo camera và cài đặt thông số, cần kết nối camera trực tiếp với Visual Studio qua cổng Ethernet, sử dụng thư viện của camera Camera được sử dụng trong đồ án là acA 2500-14gm do hãng Basler sản xuất Thư viện basler.pylon.dll hỗ trợ kết nối camera, cho phép stream hoặc chụp ảnh để chương trình trên Visual Studio thực hiện xử lý.
• using (Camera camera = new Camera())
// Khởi tạo đối tượng camera và kết nối với camera sử dụng thư viện của nó
• camera.CameraOpened += Configuration.AcquireContinuous; // Chọn chế độ chụp ảnh, ở đây em chọn chế độ chụp Continuous
• camera.Open(); // Mở kết nối camera để chụp ảnh
• camera.Parameters[PLCameraInstance.MaxNumBuffer].SetValue( 5);
// Chọn số bộ nhớ đệm để lưu ảnh
• camera.StreamGrabber.Start(); // Yêu cầu lấy ảnh
• IGrabResult grabResult camera.StreamGrabber.RetrieveResult(5000,
// Cài đặt thời gian timeout lấy ảnh về
• ImagePersistence.Save(ImageFileFormat.Bmp, "test.bmp", grabResult);
Chương trình cắt và lọc ảnh giúp loại bỏ các phần không cần thiết bên ngoài băng tải, từ đó tối ưu hóa quá trình xử lý hình ảnh chỉ với vật thể chính Việc này cũng giảm thiểu các thành phần nhiễu, nâng cao chất lượng hình ảnh.
Hình 3.7 Ảnh vât thu được từ camera
• anh1 = xulyanh(tu1); // Đưa ảnh vào chương trình xử lý ảnh để cắt và lọc ảnh, ta sẽ thu được ảnh như trên
Nhị phân hóa ảnh là quá trình chọn một giá trị ngưỡng cho pixel, trong đó các pixel có giá trị lớn hơn ngưỡng sẽ được gán giá trị 1, còn các pixel có giá trị nhỏ hơn ngưỡng sẽ được gán giá trị 0 Kết quả của bước này là một bức ảnh đen trắng, trong đó các pixel tương ứng với giá trị 0 và 1 Cụ thể, chúng ta sử dụng hàm ThresholdBinary(new Gray(253), new Gray(255)), trong đó độ xám của các pixel được so sánh với ngưỡng 253; các pixel có độ xám lớn hơn sẽ chuyển thành màu trắng với độ xám 255, trong khi các pixel còn lại sẽ có giá trị 0.
Hình 3.8 Ảnh vật sau khi chuyển sang dạng nhị phân
Để xác định đường bao quanh và tính kích thước chiều dài của các vật thể trong ảnh, trước tiên cần xác định đường viền của chúng Sau đó, tìm các hình chữ nhật tương ứng với các đường viền này và tính diện tích Tiến hành loại bỏ những diện tích không nằm trong khoảng so với diện tích thực của vật Cuối cùng, tính chiều dài của hình chữ nhật nằm trong khoảng diện tích thực của vật.
• CvInvoke.FindContours(imageOutput ,contours , hier ,
Emgu.CV.CvEnum.RetrType.External ,
Emgu.CV.CvEnum.ChainApproxMethod.ChainApproxSimple);
// xác định đường biên của vật
• RotatedRect rect = CvInvoke.MinAreaRect(contours[i]);
// tìm đường biên ngoài nhỏ nhất của vật ( hình chữ nhật )
• CvInvoke.ApproxPolyDP(contours[i],approx,0.02*perimeter, true); // sau đó tìm ra 4 đỉnh của vật (4 đỉnh của hình chữ nhật)
Ta tính tỷ lệ quy đổi giữa tọa độ thực và tọa độ ảo là:
- K là hệ số tỉ lệ giữa tọa độ thực và tọa độ ảo
- 𝑥 𝑡 [0] và 𝑥 𝑡 [1] tọa độ trục x của 2 điểm trên ô bàn cờ liền kề theo khung tạo độ robot
- 𝑦 𝑎 [0] và 𝑦 𝑎 [1] tọa độ trục y của 2 điểm trên ô bàn cờ liền kề theo khung tạo độ ảnh
Tiếp theo tính theo công thức tổng quát dưới đây ta tính được độ dài hai cạnh của hình chữ nhật bao quanh vật
Trong đó: (𝑥 𝑖̇ , 𝑦 𝑖 ) và (𝑥 𝑖+1 , 𝑦 𝑖+1 ) là 2 cặp tọa độ theo khung tọa độ ảo của 2 điểm đầu mút của cạnh lớn ( chiều dài )
Chiều dài thực tế M của A so với khung tọa độ robot được tính toán bằng cách áp dụng công thức tỷ lệ quy đổi giữa tọa độ thực và tọa độ ảo, cùng với công thức tính độ dài cạnh của hình chữ nhật Nhờ đó, ta có thể dễ dàng xác định giá trị của M.
- Hằng số tỷ lệ giữa tọa độ robot với khung ảnh: K
- Chiều dài thực của vật là: M (mm)
- Chiều dài ảo của vật: A (pixel) – tính theo công thức trên
Khi đã xác định được độ dài của hai cạnh A và B, cần so sánh cạnh lớn hơn với các tiêu chí phân loại của vật, bao gồm chiều dài và khả năng gắp của vật đó.
Khi chiều dài của vật được tính toán và thỏa mãn yêu cầu, hệ thống sẽ cung cấp tọa độ tâm và góc lệch so với phương di chuyển của băng tải Tiếp theo, đường bao, tâm và góc lệch sẽ được vẽ và hiển thị trên giao diện giám sát Ngược lại, nếu chiều dài không đạt yêu cầu, vật sẽ bị bỏ qua và hệ thống sẽ chờ đợi vật tiếp theo để tiếp tục xử lý ảnh.
Hình 3.9 Ảnh của vật sau quá trình xử lý ảnh
Sau khi đáp ứng các điều kiện phân loại, hệ thống sẽ xác định hình viền bao của vật và tâm vật trong khung tọa độ ảnh đã được thiết lập.
• CvInvoke.DrawContours(cropOutt, contours, -1, new MCvScalar(255,
// vẽ hình đường viền lên ảnh “img” tiện cho việc theo dõi
• CvInvoke.Circle(img, new Point((int)tam.X, (int)tam.Y), 6, new
• CvInvoke.Line(cropOutt, new Point(a, b), new Point(x1, y1), new
• CvInvoke.Line(cropOutt, new Point(x1, y1), new Point(x1, y1 - 100), new MCvScalar(0, 255, 0), 3);
• CvInvoke.PutText(cropOutt,Convert.ToString(Convert.ToInt32(goc2)), new Point(x1, y1 - 10), Emgu.CV.CvEnum.FontFace.HersheySimplex, 2, new MCvScalar(0, 50, 130), 3);
// 4 hàm này dùng để vẽ tâm, viết góc lệch và kể góc lên ảnh
Sau khi xác định tọa độ tâm và góc lệch của vật, chúng ta sẽ chuyển đổi sang tọa độ thực của tay máy Tiếp theo, thông tin này được truyền xuống PLC để điều khiển tay máy trong quá trình phân loại sản phẩm Cuối cùng, tay máy sẽ quay lại chu trình để xử lý ảnh.
Quy đổi khung tọa độ ảnh ra khung tọa độ tay máy
Một trong những tính năng quan trọng của robot là khả năng sử dụng thị giác máy tính (CV) để nhận diện và xác định vị trí của vật thể trong không gian, từ đó thực hiện các nhiệm vụ cụ thể một cách chính xác.
Để điều khiển robot di chuyển và gắp vật, chúng ta áp dụng 55 thuật toán cùng với các kỹ thuật xử lý ảnh và thuật toán tìm kiếm nội suy Những phương pháp này giúp giải quyết hiệu quả các bài toán liên quan đến robot.
Mô hình máy ảnh pinhole là một trong những mô hình đơn giản nhất trong nhiếp ảnh Về mặt hình học, nó bao gồm một mặt phẳng ảnh (Image plane) và một điểm quan sát (Eyepoint) nằm trên mặt phẳng tiêu cự (Focal plane-Pinhole plane).
Hình 3.10 Mô hình camera Pinhole
Một số hiện tượng biến dạng ảnh
Hiện tượng méo cong nghiêng ảnh xảy ra do không có thấu kính nào hoàn hảo, có thể do biến dạng ở rìa ảnh trong quá trình sản xuất hoặc do các thấu kính không song song khi lắp đặt trong camera Những biến dạng này có thể dẫn đến sai lệch vị trí gắp.
Hình 3.11 Hiện tượng biến dạng ảnh
Giới thiệu về khung tọa độ ảnh và khung tọa độ tay máy a Khung tọa độ ảnh
Hình 3.12 Khung tọa độ một bức ảnh số
Trong biểu diễn ảnh, điểm ảnh (Pixel) là phần tử nhỏ nhất, mỗi pixel tương ứng với một giá trị từ 0-255 trong ảnh xám 8 bit Giá trị này phản ánh cường độ của photon tại vị trí cụ thể Một ảnh số thường được tạo thành từ hàng triệu pixel, và trong không gian hai chiều, mỗi pixel được xác định bởi một cặp tọa độ (x,y).
Trong quá trình xử lý ảnh, các thông tin như tâm vật, kích thước và góc quay được trích xuất trên tọa độ ảnh ảo Oxy Để cánh tay robot gắp vật chính xác, đặc biệt là khi băng tải đang chạy, cần phải dự đoán vị trí di chuyển của vật Điều này đòi hỏi độ chính xác cao hơn để đảm bảo việc gắp vật diễn ra thành công.
Khung tọa độ tay máy được thiết lập với điểm gốc là điểm home, trong đó các chiều dương chính là chiều dương của các trục X, Y, Z, với đơn vị khung tọa độ là mm Do các mẫu vật trong đồ án này có cùng chiều cao, bài viết chỉ tập trung vào phương pháp quy đổi tọa độ ảnh oxy sang tọa độ thực OXY.
Hình 3.13 Khung tọa độ thực OXYZ, khung tọa độ ảnh Oxy
Hình 3.14 Lưu đồ quy đổi tọa độ
Mẫu bàn cờ có thể được thay thế bằng các mẫu khác như ma trận hình tròn Việc xác định tọa độ thực và tọa độ ảnh của bất kỳ đối tượng nào trở nên dễ dàng thông qua các hàm xử lý.
Mẫu bàn cờ cần chọn sao cho rõ nét, kích thước nằm chọn trong kích thước ảnh
Số ô trên bàn cờ phụ thuộc vào độ chính xác cần thiết cho phép chuyển tọa độ Trong trường hợp này, do vùng nhìn của camera và mẫu vật nhỏ, bàn cờ 22x16 với kích thước ô 8mm là đủ Nếu cần độ chính xác cao hơn, có thể tăng số lượng ô trên bàn cờ Bên cạnh đó, việc tìm kiếm các góc bàn cờ trên tọa độ ảnh cũng rất quan trọng.
Sau khi đặt mẫu bàn cờ vào vị trí calib, chúng ta tiến hành khai báo các giá trị về kích thước bàn cờ và kích thước một ô thực tế đã quy ra các giá trị nạp máy Tiếp theo, di chuyển tay máy đến vị trí góc đầu tiên để xác định tọa độ thực của điểm này, từ đó suy ra tọa độ các điểm còn lại Giá trị tọa độ X, Y trong khung tọa độ tay máy sẽ được lưu trữ trong mảng 𝑋 𝑡ℎự𝑐 và 𝑌 𝑡ℎự𝑐.
Chương trình calib tự động xác định tọa độ các góc bàn cờ bằng cách phân vùng đen trắng, sử dụng hàm "Find chessboard" trong lớp CvInvoke.
- Hàm CvInvoke.Find chessboard đọc ra tọa độ các góc bàn cờ trên ảnh và lưu dướng dạng dữ liệu Mat
- Các góc bàn cờ sau khi xử lý sẽ được vẽ lên bằng hàm DrawChessboardCorners
- Chuyển dữ liệu Mat sang dạng mảng bằng phương thức Mat.CopyTo
Chích xuất giá trị tọa độ y của cột đầu tiên và x của hàng đầu tiên Sự sai lệch giữa các tọa độ điểm 𝑋 𝑎 trên cùng một cột và 𝑌 𝑎 trên cùng một hàng là rất nhỏ.
Hình 3.16 Xử lý tìm các góc bàn cờ c Định vị vị trí của tâm vật trên bàn cờ
Sau khi xác định tọa độ các góc bàn cờ, chương trình sẽ tìm kiếm vị trí của từng tâm đối tượng trên ảnh trong khoảng bàn cờ Nó sẽ lấy ra giá trị của hai góc bàn cờ gần nhất mà điểm tâm nằm giữa Để xây dựng hệ thống có độ chính xác cao hơn với số lượng ô bàn cờ lớn và khối lượng tìm kiếm lớn, chúng ta áp dụng "Thuật toán tìm kiếm nhị phân" để thực hiện nhanh chóng và hiệu quả.
Tìm kiếm nhị phân (Binary Search) là một thuật toán tìm kiếm hiệu quả với độ phức tạp thời gian chạy là Ο(log n) Ví dụ, để tìm một số trong dãy tỉ số, thuật toán này chỉ cần tối đa 30 lần so sánh cho 1 tỷ phần tử Để thuật toán hoạt động chính xác, dữ liệu cần được sắp xếp Tìm kiếm nhị phân thực hiện việc so sánh phần tử ở vị trí giữa của tập dữ liệu; nếu phần tử cần tìm lớn hơn giá trị giữa, quá trình sẽ tiếp tục ở mảng con bên phải, ngược lại sẽ tìm ở mảng con bên trái Tiến trình này lặp lại cho đến khi tìm thấy phần tử hoặc xác định rằng nó không có trong mảng.
Hình 3.17 Thuật toán tìm kiếm nhị phân
Trong bài toán này, chúng ta sẽ xác định vị trí tâm của vật trên bàn cờ dựa vào tọa độ ảnh Từ đó, chúng ta sẽ tính toán tọa độ thực của tâm vật bằng cách sử dụng các tọa độ thực của góc bàn cờ đã biết Dưới đây là lưu đồ thuật toán tìm kiếm với mảng 𝑋 𝑎.
Hình 3.18 Lưu đồ thuật toán tìm kiếm nhị phân tọa độ X ảo
- High: Vị trí cuối cùng trong mảng 𝑋 𝑎
- low: Vị trí đầu tiên trong mảng 𝑋 𝑎
- location: Vị trí tọa độ x của tâm vật trong mảng 𝑋 𝑎
- tâm: Tọa độ tâm vật tìm ra trong các khâu trước đó d Tìm tọa độ thực của tâm
Xác định sai số trong phép xử lý góc và chiều dài vật
Để kiểm tra độ chính xác chúng em tiến hành chạy chương trình với bộ mẫu vật với các kích thước khác nhau
Để kiểm định độ chính xác của phép đo chiều dài và góc quay, chúng tôi đã thực hiện đo chiều dài và góc thực tế, sau đó so sánh với kết quả xử lý Trong quá trình thực nghiệm, vật mẫu có chiều dài 4cm và góc quy thực là 120 độ Kết quả xử lý cho thấy chiều dài đo được là 4.0183cm và góc là 119.8207 độ.
Hình 3.20 Giao diện chương trình xử lý ảnh của vật
Hình 3.21 Tiến hành đo thực nghiệm góc Bảng 3.1 Kết quả thực nghiệm và xử lý
Kế quả xử lý Chiều dài (mm) Góc (deg)
Từ đó, ta tính toán sai số:
- Sai số chiều dài: 0.2425 mm
Đo tốc độ vật bằng camera
Trong ngành công nghiệp, việc giảm chi phí đầu tư thiết bị mà vẫn đảm bảo yêu cầu công nghệ là rất quan trọng để tiết kiệm ngân sách cho công ty Dưới sự hướng dẫn của thầy Dương Minh Đức, tôi đã được giao nhiệm vụ đo tốc độ vật bằng camera và so sánh với tốc độ đo bằng encoder Nếu kết quả gần giống nhau, công nghệ này có thể thay thế encoder trong thực tế, đồng thời hỗ trợ các hoạt động như điều chỉnh tốc độ tay máy chạy đồng bộ với vật, khắc phục hiện tượng vật trượt trên băng tải, và ứng dụng trong các lĩnh vực khác như đo tốc độ xe đang chạy.
Hình 3.22 Lưu đồ chương trình đo tốc độ vật bằng camera
Để đo tốc độ của vật trên băng tải, trước tiên, chúng ta cần cho băng tải chạy ổn định và đặt vật vào vị trí chụp ảnh Sau đó, chụp liên tiếp 25 ảnh và lưu vào một mảng, đồng thời sử dụng stopwatch để đo khoảng thời gian giữa các lần chụp Tiếp theo, xử lý ảnh để xác định tọa độ tâm của vật trong từng khung hình Sau khi có tọa độ tâm, ta tính toán sự chênh lệch giữa các lần chụp liên tiếp và chia cho tỷ lệ quy đổi từ tọa độ ảnh sang tọa độ thực (134.18 pixel/cm) Cuối cùng, chia kết quả cho khoảng thời gian giữa hai lần chụp để thu được tốc độ của từng đoạn, từ đó tính trung bình tốc độ của 9 đoạn liên tiếp, cho ra tốc độ trung bình của vật đo bằng camera.
Từ đó, ta tìm được sai số so với tốc độ băng tải đo bằng encoder
Công thức tính vận tốc:
𝑠 ) Trong đó: T – Tỷ lệ quy đổi từ tọa độ ảnh sang tọa độ thực
𝑠 ) Trong đó: V1, V2, …, Vn : Vận tốc đoạn 1, 2, …, n
63 Đo tốc độ vật bằng camera tại thời điểm ban đầu
Tại thời điểm tốc độ ban đầu, em sử dụng encoder để đo tốc độ băng tải (đo
Sau khi thực hiện 5 lần đo, tốc độ băng tải trung bình đạt 2.789 cm/s Tiếp theo, tôi đã sử dụng camera để đo tốc độ băng tải nhằm so sánh với giá trị đã thu được.
Dưới đây là bảng số liệu em thu thập được bằng cách đo 5 lần khác nhau:
Bảng 3.2 Số liệu đo tốc độ vật bằng camera tại thời điểm ban đầu
Vận tốc từng đoạn (cm/s)
Lần 1 Lần 2 Lần 3 Lần 4 Lần 5
Vận tốc TB 2.911 2.894 2.927 2.941 2.888 Sai số (%) 4.37% 3.76% 4.95% 5.45% 3.55%
Hình 3.23 trình bày giao diện đo tốc độ của vật thể bằng camera tại thời điểm ban đầu Việc đo tốc độ này được thực hiện sau khi tốc độ băng tải đã được tăng lên so với thời điểm ban đầu.
Sau khi tăng tốc độ băng tải, tôi đã sử dụng encoder để đo tốc độ băng tải với 5 lần đo và thu được tốc độ trung bình là 3.303 cm/s Tiếp theo, tôi đã đo tốc độ băng tải bằng camera để so sánh với giá trị vừa đo được.
Dưới đây là bảng số liệu em thu thập được bằng cách đo 5 lần khác nhau:
Bảng 3.3 Số liệu đo tốc độ vật bằng camera sau khi tăng tốc độ băng tải so với thời điểm ban đầu
Vận tốc từng đoạn (cm/s)
Lần 1 Lần 2 Lần 3 Lần 4 Lần 5
Vận tốc TB 3.382 3.477 3.398 3.424 3.226 Sai số (%) 2.39% 5.26% 2.87% 3.66% 2.33%
Hình 3.24 minh họa giao diện đo tốc độ vật thể bằng camera sau khi tăng và giảm tốc độ băng tải so với thời điểm ban đầu Việc này cho phép theo dõi và phân tích sự thay đổi tốc độ của vật thể một cách chính xác.
Sau khi giảm tốc độ băng tải, tôi đã sử dụng encoder để đo tốc độ băng tải với 5 lần đo, và kết quả cho thấy tốc độ băng tải trung bình đạt 2.316 cm/s Tiếp theo, tôi tiến hành đo tốc độ băng tải bằng camera để so sánh hai giá trị này.
Dưới đây là bảng số liệu em thu thập được bằng cách đo 5 lần khác nhau:
Bảng 3.4 Số liệu đo tốc độ vật bằng camera sau khi giảm tốc độ băng tải so với thời điểm ban đầu
Vận tốc từng đoạn (cm/s)
Lần 1 Lần 2 Lần 3 Lần 4 Lần 5
Vận tốc TB 2.472 2.455 2.466 2.431 2.469 Sai số (%) 6.69% 6.00% 6.47% 4.96% 6.60%
Hình 3.25 Giao diện đo tốc độ vật bằng camera sau khi giảm tốc độ băng tải so với thời điểm ban đầu
Kết luận: Qua ba lần đo với các giá trị tốc độ băng tải khác nhau, chúng tôi đã so sánh tốc độ băng tải đo bằng camera và đo bằng encoder, nhận thấy sai số dao động từ 2-6% Nguyên nhân gây ra sai số này là do nhiều yếu tố khác nhau.
Thời gian truyền nhận tín hiệu giữa máy tính và camera qua cáp Ethernet là 470 ms, cho thấy tốc độ khá chậm Nguyên nhân một phần là do máy tính được sử dụng để đo và xử lý tín hiệu cũng có tốc độ chậm.
• Do thời gian trích mẫu lớn dẫn đến số điểm camera bắt được chưa được nhiều
• Do sai số khi quy đổi từ tọa độ ảnh sang tọa độ thực
• Do sai số khi đo tốc độ bằng encoder
Từ đó, ta đưa ra giải pháp khắc phục:
• Sử dụng máy tính, camera, dây cáp có tốc độ xử lý cao hơn
• Tính toán chính xác, giảm sai số khi quy đổi tọa độ ảnh sang tọa độ thực, và sai số khi đo tốc độ bằng encoder