Định nghĩa: PLC là viết tắt của “Programmable Logic Controller”, là một thiết bị điều khiển logic được sử dụng rộng rãi trong các hệ thống tự động hóa công nghiệp để điều khiển và giám s
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CÔNG NGHIỆP GVHD: THS LÊ HOÀNG LÂM SVTH: PHẠM VĂN THẮNG BÙI TẤN TÀI SKL011303 Tp Hồ Chí Minh, tháng 06/2023 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO -o𝕆o - ĐỒ ÁN TỐT NGHIỆP ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CƠNG NGHIỆP GVHD: ThS Lê Hồng Lâm SVTH: Phạm Văn Thắng MSSV: 19151175 Bùi Tấn Tài Tp Hồ Chí Minh tháng 06 năm 2023 MSSV: 19151013 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN o0o -Tp HCM, ngày 30 tháng năm 2023 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Phạm Văn Thắng Họ tên sinh viên 2: Bùi Tấn Tài MSSV:19151175 MSSV:19151013 Chuyên ngành: Công nghệ Kỹ thuật Điều khiển Tự động hóa Hệ đào tạo: Đại học quy Khóa: K19 Lớp: 19151CL2B I TÊN ĐỀ TÀI: ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CÔNG NGHIỆP II NHIỆM VỤ Các số liệu ban đầu: ➢ Tìm hiểu nguyên lý cách điều khiển động Servo ➢ Tìm hiểu Driver Servo MR-J3 MR-J4 ➢ Tìm hiểu PLC dịng Q ➢ Tìm hiểu Module Motion control 172DSCPU Nội dung thực hiện: ➢ Điều khiển robot gắp thả phân loại vật ➢ Xác định hình dạng tọa độ tâm vật xử lý ảnh ➢ Mơ tả q trình hoạt động giao diện người dùng III NGÀY GIAO NHIỆM VỤ: 21/2/2023 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 30/6/2023 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Lê Hoàng Lâm GIÁO VIÊN HƯỚNG DẪN BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN o0o -Tp HCM, ngày 30 tháng năm 2023 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Phạm Văn Thắng Họ tên sinh viên 2: Bùi Tấn Tài MSSV:19151175 MSSV:19151013 Tên đề tài: ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CÔNG NGHIỆP Tuần/ngày Nội dung (20/02/2023) Phân tích đề tài, đưa hướng giải (27/02/2023) Lựa chọn thiết bị phù hợp, tìm hiểm thiết bị điều khiển Bố trí, lắp đặt phần cứng dây thiết bị, kết (06/03/2023) nối điều khiển với động (13/03/2023) Tìm hiểu phần mềm lập trình GX Work 2, MT Developer Python (20/03/2023) Jog test trục robot, kiểm tra hộp số động khai báo vào phần mềm lập trình (27/03/2023) Giao tiếp cho CPU Q04UDEH với Motion CPU Q172DS (03/04/2023) Tính tốn động học kiểm tra lại với Matlab (10/04/2023) Xử lý ảnh python với thư viện OpenCv gửi liệu PLC MC Protocol (17/04/2023) Lập trình cho Robot chạy điểm sử dụng động học nghịch kiểm tra độ xác 10 (24/04/2023) Quy hoạch quỹ đạo đường thẳng cho Robot Xác nhận GVHD 11 (1/05/2023) Lập trình cho Robot gắp vật băng tải 12 Lập trình cho Robot gắp vật băng tải (8/05/2023) chuyển động kết hợp với camera để phân loại 13 Thiết kế bảng điều khiển Robot giao diện (15/05/2023) 14 (22/05/2023) HMI với ứng dụng GT Designer Viết báo cáo đề tài GV HƯỚNG DẪN (Ký ghi rõ họ tên) CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên sinh viên 1: Phạm Văn Thắng MSSV: 19151175 Họ tên sinh viên 2: Bùi Tấn Tài MSSV: 19151013 Tên đề tài: ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CƠNG NGHIỆP Ngành đào tạo: Cơng nghệ kỹ thuật điều khiển tự động hóa - Khóa 2019-2023 Họ tên GV hướng dẫn: ThS Lê Hoàng Lâm 269 NHẬN XÉT Về đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm………….(Bằng chữ:………………………………………………….……) Tp.Hồ Chí Minh, ngày tháng năm 2023 Giáo viên hướng dẫn CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự – Hạnh phúc PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên sinh viên 1: Phạm Văn Thắng MSSV: 19151175 Họ tên sinh viên 2: Bùi Tấn Tài MSSV: 19151013 Tên đề tài: ỨNG DỤNG ROBOT BẬC PICK AND PLACE TRONG CƠNG NGHIỆP Ngành đào tạo: Cơng nghệ kỹ thuật điều khiển tự động hóa - Khóa 2019-2023 Họ tên GV phản biện: NHẬN XÉT Về đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm………….(Bằng chữ:………………………………………………….……) Tp.Hồ Chí Minh, ngày tháng năm 2023 Giáo viên phản biện Nhận xét kết thực ĐATN Mục đánh giá TT Hình thức kết cấu ĐATN Điểm tối đa 30 Đúng format với đầy đủ cả hình thức và nội dung 10 của các mục Mục tiêu, nhiệm vụ, tổng quan của đề tài 10 Tính cấp thiết của đề tài 10 Nội dung ĐATN 50 Khả ứng dụng kiến thức toán học, khoa học kỹ thuật, khoa học xã hợi… Khả thực hiện/phân tích/tổng hợp/đánh giá 10 Khả thiết kế chế tạo một hệ thống, thành phần, quy trình đáp ứng yêu cầu đưa với ràng buộc thực tế 15 Khả cải tiến phát triển 15 Khả sử dụng công cụ kỹ thuật, phần mềm chuyên ngành… Đánh giá khả ứng dụng đề tài 10 Sản phẩm cụ thể ĐATN 10 Tổng điểm 100 Điểm đạt LỜI CAM ĐOAN Nhóm tác giả xin cam kết đề tài nhóm tác giả tự thực vào tài liệu tham khảo trước khơng chép từ tài liệu hay từ cơng trình trước Nhóm tác giả thực Phạm Văn Thắng Bùi Tấn Tài LỜI CẢM ƠN Chúng xin chân thành gửi lời tri ân tới thầy cô khoa Đào tạo chất lượng cao, khoa Điện-Điện tử môn Tự động điều khiển, trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh Sự giảng dạy tâm từ quý thầy cô giúp tiếp thu nhiều kiến thức hữu ích suốt thời gian học tập, trực tiếp lớp học hay qua hình thức trực tuyến giai đoạn dịch bệnh Đặc biệt, chúng tơi xin bày tỏ lịng biết ơn sâu sắc đến ThS Lê Hồng Lâm hướng dẫn tận tâm quan tâm thầy trình chúng tơi hồn thành đồ án tốt nghiệp Những lời góp ý dẫn từ ThS Lê Hồng Lâm giúp chúng tơi vượt qua khó khăn để hoàn thiện đồ án cách tốt Chúng tơi muốn bày tỏ lịng biết ơn chân thành đến gia đình chúng tơi Sự ủng hộ, động viên từ gia đình truyền động lực cho chúng tơi suốt q trình làm đồ án tốt nghiệp Trong q trình làm đồ án, chúng tơi gặp phải sai sót, hạn chế Chúng tơi mong thầy cô thông cảm bỏ qua thiếu sót Đồng thời, chúng tơi hoan nghênh ý kiến đóng góp xây dựng từ quý thầy nhằm giúp chúng tơi hồn thiện nâng cao chất lượng đồ án tốt nghiệp nhóm Một lần nữa, xin chân thành cảm ơn xin gửi lời chúc sức khỏe thành công tới tất người Nhóm chúng tơi chân thành cám ơn CHƯƠNG 4: VẬN HÀNH HỆ THỐNG Hình 33: Giao diện kiểm chứng động học Hình 4.29 hình sử dụng cho việc kiểm chứng động học thuận động học nghịch Tại sau nhập tọa độ Px, Py, Pz cột IK Input, hệ thống tự tính tốn đưa giá trị góc phù hợp để đưa vào robot Sau kiểm tra xem góc có phù hợp với giới hạn vật lý khơng, người dùng chọn nhấn nút Go Inverse để robot chạy tới điểm với tốc độ người dùng nhập Hình 34: Giao diện Auto BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 93 CHƯƠNG 4: VẬN HÀNH HỆ THỐNG Cuối giao diện Auto Hình 4.30, ban đầu người dùng phải nhập tốc độ cho băng tải bật băng tải sau ấn nút On bên phần Auto để bắt đầu chương trình Nếu mà robot chưa vị trí làm việc người dùng bấm READY POS để đưa robot tới vị trí sẵn sàng làm việc Sau camera gửi tín hiệu bắt vật mẫu vật lên ô tương ứng đồng thời đếm số lần vật qua Để tắt chương trình người dùng cần việc bấm nút Off ô Auto Conveyor 4.3.5 Điều khiển robot 4.3.5.1 Chế độ thủ cơng(Manual) Trên giao diện có số chế độ chạy thủ công Jog, Straight, Abs, Kinematic Khi thao tác muốn chạy thủ công chế độ nhấn chọn vào nút hình lên giao diện Hình 4.26, Hình 4.27, Hình 4.28, Hình 4.29 để ta nhập thơng số tiến hành vận hành chức 4.2.5.2 Chế độ tự động(Auto) Ở chế độ thao tác chế độ Auto người vận hành nhấn vào nút Auto hình sau cho nhập tốc độ cho băng tải chạy nhấn ON (AUTO MODE) để robot làm việc Lúc cho vật vào băng tải robto tiến hành gắp thả vật tự động cho, hết vật robot vị trí ban đầu chờ để thực quy trình Hình 35: Giao diện robot hoạt động chế độ Auto BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 94 CHƯƠNG 4: VẬN HÀNH HỆ THỐNG Ở Hình 4.31 robot vị trí chờ gắp vật, hình điều khiển thể tốc độ, trạng thái đèn hoạt động chế độ auto Khi có vật giao diện hiển thị hình dạng tương ứng vật số lượng loại BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 95 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 Kết luận Sau trình thực đề tài” Ứng dụng Robot bậc pick and place cơng nghiệp”, nhóm thực thành cơng mục tiêu đề điều khiển robot chạy tự động sử dụng thị giác máy tính để phân loại vật với mức độ khác Bảng 1: Bảng đánh giá mục tiêu đề Mục tiêu đề Kết Gắp vật di chuyển băng tải theo đường thẳng Hoàn thành Gắp vật di chuyển vị trí băng tải Hồn thành Gắp vật với tốc độ 15-20 vật/phút Hoàn thành 5.1.1 Đánh giá ➢ Về lý thuyết Hiểu nắm bắt tổng thể nguyên lý hoạt động động AC Servo loại encoder để điều khiển xác vị trí vận tốc động qua module điều khiển Q172DSCPU Tìm hiểu quy trình xử lý ảnh phát vật phương thức giao tiếp Camera, máy tính điều khiển trung tâm (PLC) Tính toán động học, quy hoạch quỹ đạo cho robot bậc tự áp dụng giải thuật vào tốn gắp thả vật cơng nghiệp ➢ Phần cứng Sử dụng mơ hình robot RV-2SD hãng Mitsubishi nên cấu có độ xác cao phù hợp với mục đích đề tài ➢ Phần mềm Về giao diện người dùng: giao diện xây dựng đơn giản dễ thao tác với chế độ, tác vụ hoạt động robot Về phát vật: Biết ứng dụng cách thuật toán xử lý ảnh thư viện OpenCV để nhận dạng biết tọa độ vật Để đánh giá thuật toán xử lý ảnh, trình truyền nhận liệu sau xử lý tính xác q trình gắp thả vật robot nhóm thực thuật tốn 100 lần thu kết thể Bảng 5.2 BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 96 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Bảng 2: Tỷ lệ gắp thả vật thành công với cấp độ vận tốc băng tải Tốc độ băng tải Quét vật Gắp thả xác 700 mm/phút 99% 99% 1000 mm/phút 90% 88% 1500 mm/phút 70% 65% Những trường hợp không quét vật dẫn đến robot gắp thả khơng xác tăng tốc băng tải ảnh bị mờ camera khơng phân giải kịp dẫn đến xác định sai tọa độ hình dạng vật Do sử dụng xử lý ảnh, kết nối camera qua wifi điều kiện môi trường ảnh hưởng phần nhỏ đến độ xác hệ thống Với kết khảo sát thể Bảng 5.3, Bảng 5.4, Bảng 5.5, Bảng 5.6, tốc độ băng tải 700 mm/phút Bảng 3: Tỷ lệ gắp vật tương ứng với điều kiện môi trường ánh sáng mờ Hình dạng vật Qt vật Gắp thả xác Vng 90% 90% Trịn 89% 89% Lục giác 89% 89% Hình 1: Điều kiện ánh sáng mờ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 97 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Bảng 4: Tỷ lệ gắp vật tương ứng với điều kiện môi trường ánh sáng tối Hình dạng vật Qt vật Gắp thả xác Vng 9% 9% Trịn 8% 8% Lục giác 9% 9% Hình 2: Điều kiện ánh sáng tối Bảng 5: Tỷ lệ gắp vật tương ứng với điều kiện mơi trường ánh sáng chói Hình dạng vật Qt vật Gắp thả xác Vng 21% 21% Trịn 12% 12% Lục giác 17% 17% BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 98 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Hình 3: Điều kiện ánh sáng chói Bảng 6: Tỷ lệ gắp vật tương ứng với điều kiện camera bị nét Hình dạng vật Quét vật Gắp thả xác Vng 84% 84% Trịn 28% 28% Lục giác 70% 70% Hình 4: Điều kiện camera nét BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 99 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Bảng 7: Tỷ lệ gắp vật tương ứng với điều kiện ánh sáng cân Hình dạng vật Quét vật Gắp thả xác Vng 98% 98% Trịn 97% 97% Lục giác 97% 97% Hình 5: Điều kiện ánh sáng cân Với kết khảo sát tỷ lệ gắp thả vật xác bị phụ thuộc vào điều kiện mơi trường Qua cho thấy hệ thống làm việc tốt điều kiện ánh sáng cân 5.1.2 Vấn đề tồn đọng - Thuật toán phát vật chưa hoạt động tốt điều kiện ánh sáng thay đổi - Sai số gắp vật vẫn đảm bảo yêu cầu đặt đề tài - Thuật toán điều khiển chưa tối ưu Giao diện người dùng chưa có tính bảo mật 5.2 Hướng phát triển - Nâng cao khả phát vật cách thay đổi thuật tốn sử dụng camera cơng nghiệp - Mở rộng vùng gắp vật - Tìm thuật tốn giảm sai số đổi tọa độ tâm vật từ camera robot BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 100 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - Đặt xếp chồng vật vật sau phân loại BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 101 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Nguyễn Trường Thịnh (2014), “Giáo trình Kỹ thuật robot”, Nhà xuất ĐHQG, Tp HCM, Việt Nam [2] Lê Mỹ Hà (2017), “Giáo trình Máy hệ thống xử lý ảnh công nghiệp”, Nhà xuất ĐHQG, Tp HCM, Việt Nam Tiếng Anh: [3] Mitsubishi Industrial Robot, RV-2SD Standard Spcifications Manual [4] Misubishi electric, Motion controller Q series Q172DCPU [5] Misubishi electric, MELSEC Communication Protocol Reference Manual [6] Misubishi electric, MELSERVO-J4, sscnet iii/h interface model MR-J4B(-RJ) servo amplifier instruction manual [7] John J.Craig, Introduction to Robotics-Mechanic and Control [8] Gabriella Bognár, László Dudás, Grgy Kovács(2021) “COLLABORATING ROBOT ARMS USING ARTIFICIAL INTELLIGENCE TECHNIQUES” [9] OpenCV - Open Computer Vision Library, https://opencv.org/ BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 102 PHỤ LỤC PHỤ LỤC Chương trình xử lý ảnh: import cv2 import numpy as np import time import math import pymcprotocol pymc3e = pymcprotocol.Type3E() pymc3e.connect("192.168.3.39", 2500) # Khởi tạo phát hình params = cv2.SimpleBlobDetector_Params() params.filterByCircularity = True params.minCircularity = 0.8 params.filterByInertia = False params.filterByConvexity = False # thơng số phát hình trịn params.minThreshold = 10 # ngưỡng params.maxThreshold = 200 params.thresholdStep = params.minDistBetweenBlobs = 10 params.minRepeatability = params.minArea = 100 params.maxArea = 18800 10 circle_detector = cv2.SimpleBlobDetector_create(params) print_flag = False # co phát in chưa # Khởi tạo webcam với kích thước khung hình nhỏ cap = cv2.VideoCapture(0) # cap.set(3, 20) # cap.set(4, 8) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 60) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 60) # Danh sách tọa độ (x, y) vật phát object_coordinates = [] print_flag = False a = None x = None y = None while True: # Đọc khung hình từ webcam V_dc=pymc3e.batchread_wordunits(headdevice="D5500", readsize=1) V_dc1=int(V_dc[0]) S=178*(7/6) V_bt=V_dc1*(5/3)/1000 t=S/V_bt*10 if V_dc1 > 700: t=t-10 t=int(t) pymc3e.batchwrite_wordunits(headdevice="D6700", values=[t]) BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 103 PHỤ LỤC ret, frame = cap.read() cropped_image = frame[20:1000, 130:360] # Chuyển đổi khung hình sang đen trắng làm mờ gray = cv2.cvtColor(cropped_image, cv2.COLOR_BGR2GRAY) noiseless_image_bw = cv2.fastNlMeansDenoising(gray, None, 50, 7, 21) blurred = cv2.GaussianBlur(noiseless_image_bw, (5, 5), 0) # Áp dụng ngưỡng để tách vùng quan trọng _, thresholded = cv2.threshold(blurred, 125, 255, cv2.THRESH_BINARY) # Phát cạnh ảnh xử lý edges = cv2.Canny(thresholded, 50, 150) # Phát đối tượng hình trịn ảnh circles = circle_detector.detect(edges) detected_object = False # cờ kiểm tra # Phát đối tượng hình vng hình tam giác contours, _ = cv2.findContours(edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) for contour in contours: # Xác định đa giác xấp xỉ đường viền approx = cv2.approxPolyDP(contour, 0.03 * cv2.arcLength(contour, True), True) if len(approx) == and cv2.contourArea(contour) > 1000: # Nếu có cạnh diện tích lớn ngưỡng, coi hình vng cv2.drawContours(cropped_image, [approx], 0, (0, 0, 255), 2) cv2.putText(cropped_image, "Square", (approx[0][0][0], approx[0][0][1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) M = cv2.moments(approx) cx = int(M["m10"] / M["m00"]) cy = int(M["m01"] / M["m00"]) cv2.circle(cropped_image, (cx, cy), 3, (0, 0, 255), -1) a = object_coordinates.append((approx[0][0][0], approx[0][0][1])) # Lưu tọa độ (x, y) cv2.putText(cropped_image, f"x = {approx[0][0][0]}, y = {approx[0][0][1]}", (approx[1][0][0]+20, approx[0][0][1] + 100), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # print("a =", a, "x1 =", approx[0][0][0], "y1 =", approx[0][0][1]) detected_object = True pymc3e.batchwrite_wordunits(headdevice="D6300", values=[1]) elif len(approx) == and cv2.contourArea(contour) > 1200: # Nếu có cạnh diện tích lớn ngưỡng, coi hình tam giác cv2.drawContours(cropped_image, [approx], 0, (255, 0, 0), 2) cv2.putText(cropped_image, "Rectangle", (approx[0][0][0], approx[0][0][1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) M = cv2.moments(approx) cx = int(M["m10"] / M["m00"]) cy = int(M["m01"] / M["m00"]) cv2.circle(cropped_image, (cx, cy), 3, (0, 0, 255), -1) a = b = BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 104 PHỤ LỤC object_coordinates.append((approx[0][0][0], approx[0][0][1])) # Lưu tọa độ (x, y) cv2.putText(cropped_image, f"x = {approx[0][0][0]}, y = {approx[0][0][1]}", (approx[1][0][0]+20, approx[0][0][1] + 100), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (5, 56, 250), 2) # print("a =", a, "x =", approx[0][0][0], "y =", approx[0][0][1]) detected_object = True pymc3e.batchwrite_wordunits(headdevice="D6300", values=[2]) if len(circles) > 0: for circle in circles: x, y = circle.pt center = (int(x), int(y)) radius = int(circle.size / 2) cv2.circle(cropped_image, center, radius, (0, 255, 0), 2) cv2.putText(cropped_image, "Circle", (int(x - radius), int(y radius - 10)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2) cv2.circle(cropped_image, (int(x), int(y)), 3, (0, 255, 0), -1) a = object_coordinates.append(center) # Lưu tọa độ (x, y) ngang la y cv2.putText(cropped_image, f"x = {center[0]}, y = {center[1]75}", (int(x - radius), int(y - radius + 70)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # cv2.putText(frame, f"x = {approx[0][0][0]}, y = {approx[0][0][1]}", (approx[0][0][0], approx[0][0][1] - 30), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # print("x =", center[0], "y =", center[1]) detected_object = True pymc3e.batchwrite_wordunits(headdevice="D6300", values=[3]) # Hiển thị khung hình cv2.imshow("Shape Detection", cropped_image) if detected_object and not print_flag: print("Detected Object:") print("a =", a) if len(object_coordinates) > 0: x, y = object_coordinates[-1] if a!=3: print("x =", x, "y =", y) y1=int(y) pymc3e.batchwrite_wordunits(headdevice="D6350", values=[y1]) pymc3e.batchwrite_bitunits(headdevice="M300", values=[1]) if a==3: y=center[1]-75 print("x =", x, "y =", y) y1=int(y) pymc3e.batchwrite_wordunits(headdevice="D6350", values=[y1]) pymc3e.batchwrite_bitunits(headdevice="M300", values=[1]) print_flag = True # Đặt cờ in giá trị True BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 105 PHỤ LỤC elif not detected_object: print("No objects detected.") pymc3e.batchwrite_bitunits(headdevice="M300", values=[0]) print_flag = False # Đặt cờ in giá trị False if cv2.waitKey(1) & 0xFF == ord('q'): break # Giải phóng tài nguyên cap.release() cv2.destroyAllWindows() BỘ MÔN ĐIỀU KHIỂN TỰ ĐỘNG 106 S K L 0